在C#REST服务中验证ADAL JWT令牌

在C#REST服务中验证ADAL JWT令牌,c#,validation,jwt,azure-active-directory,adal,C#,Validation,Jwt,Azure Active Directory,Adal,我有一个web应用程序,它使用ADAL库通过Azure Active Directory进行身份验证 此web应用程序通过将ADAL令牌字符串作为参数传递来调用C#REST服务。在我的REST服务中,我想验证这个令牌。如果令牌仅有效,则服务将执行该操作 我搜索了很多,但找不到在rest服务中验证JWT令牌的方法。你们能帮我一下吗?你们有两个选择: 1。使用OWIN中间件 使用将为您处理令牌验证的中间件。一个常见的例子是OWIN中间件,它为您带来了所有的魔力。通常,这是最好的方法,因为它允许您将代

我有一个web应用程序,它使用ADAL库通过Azure Active Directory进行身份验证

此web应用程序通过将ADAL令牌字符串作为参数传递来调用C#REST服务。在我的REST服务中,我想验证这个令牌。如果令牌仅有效,则服务将执行该操作

我搜索了很多,但找不到在rest服务中验证JWT令牌的方法。你们能帮我一下吗?

你们有两个选择:

1。使用OWIN中间件

使用将为您处理令牌验证的中间件。一个常见的例子是OWIN中间件,它为您带来了所有的魔力。通常,这是最好的方法,因为它允许您将代码集中在API的业务逻辑上,而不是低级别的令牌验证上。对于使用OWIN的REST API示例,请查看以下两个示例:

2。手动JWT验证

您可以使用ASP.NET的JSON Web令牌处理程序进行手动JWT令牌验证。(好的,所以它不完全是手动的,但它是手动调用的。)这里还有一个示例:

  • (实际的JWT验证发生在中,如下所示:

    JwtSecurityTokenHandler tokenHandler = new JwtSecurityTokenHandler();
    
    TokenValidationParameters validationParameters = new TokenValidationParameters
    {
        ValidAudience = audience,
        ValidIssuer = issuer,
        IssuerSigningTokens = signingTokens,
        CertificateValidator = X509CertificateValidator.None
    };
    
    try
    {
        // Validate token.
        SecurityToken validatedToken = new JwtSecurityToken();
        ClaimsPrincipal claimsPrincipal = tokenHandler.ValidateToken(jwtToken, validationParameters, out validatedToken);
    
        // Do other validation things, like making claims available to controller...
    }
    catch (SecurityTokenValidationException)
    {
        // Token validation failed
        HttpResponseMessage response = BuildResponseErrorMessage(HttpStatusCode.Unauthorized);
        return response;
    }
    

app.useWindowsAzureActiveDirectoryBeareAuthentication是否自动执行此验证?@r590是。如果使用该方法,将为您配置所有这些内容