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

asp.net-web-api2 – 在控制器操作中获取JSON Web Token有效负载

发布时间:2020-12-16 09:56:24 所属栏目:asp.Net 来源:网络整理
导读:我正在使用Angular2 SPA为我的ASP.NET Web API应用程序实现基于JWT的授权.除了一个细节之外,所有关于授权流程的都很清楚.我想知道如何在Web API控制器操作中获取JWT有效负载信息? 通过网络浏览我找不到任何我想要的解决方案,例如,设置Thread.Principal或类
我正在使用Angular2 SPA为我的ASP.NET Web API应用程序实现基于JWT的授权.除了一个细节之外,所有关于授权流程的都很清楚.我想知道如何在Web API控制器操作中获取JWT有效负载信息?

通过网络浏览我找不到任何我想要的解决方案,例如,设置Thread.Principal或类似的东西.

有什么建议的方法来实现这一目标?

解决方法

在ASP.NET中将JWT令牌作为身份验证处理的正常过程是:

>从请求中获取令牌并确保有效.
>根据令牌中包含的信息创建主体,并将其与请求相关联.

这意味着令牌内的有效载荷信息通常以请求的形式通过请求主体获得.例如,如果您的JWT包含有关用户角色的信息,那么它将映射到主体中可用的角色声明.

你没有提到你是否正在使用OWIN,所以我会假设OWIN为例子,但它在控制器级别上并不重要或者有很大不同.

尽管您只关注数据消耗部分,但如果感到好奇,您可以阅读有关ASP.NET Web API(OWIN)的这组教程,以便更深入地了解整个过程:

> Introduction
> Authentication (HS256)
> Authorization

最后一个是最感兴趣的那个,你会注意到下面的代码片段:

[HttpGet]
[Authorize]
[Route("claims")]
public object Claims()
{
    var claimsIdentity = User.Identity as ClaimsIdentity;

    return claimsIdentity.Claims.Select(c =>
        new
        {
            Type = c.Type,Value = c.Value
        });
}

这取决于控制器内可用的User.Identity列出当前已验证身份的所有声明.除非您的身份验证管道配置相当不同,那么这些声明是从API接收的JWT有效负载映射的.

(编辑:李大同)

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

    推荐文章
      热点阅读