【问题标题】:Validating ADAL JWT token in C# REST service在 C# REST 服务中验证 ADAL JWT 令牌
【发布时间】:2016-02-24 15:41:33
【问题描述】:

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

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

我搜索了很多,但找不到在我的休息服务中验证 JWT 令牌的方法。你们能帮我解决这个问题吗?

【问题讨论】:

    标签: c# validation jwt azure-active-directory adal


    【解决方案1】:

    你有两个选择:

    1.使用 OWIN 中间件

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

    2。手动 JWT 验证

    您可以使用 JSON Web Token Handler for ASP.NET 进行手动 JWT 令牌验证。 (好的,所以它不完全是手动的,而是手动调用的。)还有一个示例:

    • https://github.com/Azure-Samples/active-directory-dotnet-webapi-manual-jwt-validation(实际的 JWT 验证发生在 Global.asax.cs 中,看起来像这样:

      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.UseWindowsAzureActiveDirectoryBearerAuthentication 是否自动执行此验证?
    • @r590 是的。如果您使用该方法,所有这些都将为您配置
    猜你喜欢
    • 1970-01-01
    • 2012-02-14
    • 2018-06-12
    • 2018-07-27
    • 2021-09-04
    • 2018-11-21
    • 2019-06-23
    • 1970-01-01
    • 2018-03-11
    相关资源
    最近更新 更多