繁体   English   中英

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

[英]Validating ADAL JWT token in C# REST service

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

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

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

您有两种选择:

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; } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM