加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 04:51:50 所属栏目:百科 来源:网络整理
导读:我有一个Web应用程序,它使用ADAL库通过Azure Active Directory进行身份验证. 此Web应用程序通过将ADAL标记字符串作为参数传递来调用C#REST服务.在我的REST服务中,我想验证此令牌.如果令牌有效,则服务将执行操作. 我搜索了很多但是找不到在我的休息服务中验证
我有一个Web应用程序,它使用ADAL库通过Azure Active Directory进行身份验证.

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

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

解决方法

你有两个选择:

1.使用OWIN中间件

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

> https://github.com/Azure-Samples/active-directory-dotnet-webapp-webapi-openidconnect
> https://github.com/Azure-Samples/active-directory-dotnet-webapp-webapi-openidconnect-aspnet5

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读