gpt4 book ai didi

asp.net-web-api2 - 在 Controller 操作中获取 JSON Web Token 有效负载数据

转载 作者:行者123 更新时间:2023-12-01 01:56:58 25 4
gpt4 key购买 nike

我正在使用 Angular2 SPA 为我的 ASP.NET Web API 应用程序实现基于 JWT 的授权。除了一个细节外,关于授权流程的一切都很清楚。我想知道如何在 Web API Controller 操作中获取 JWT 负载信息?

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

推荐的方法是什么?

最佳答案

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

  • 从请求中获取 token 并确保有效。
  • 根据 token 中包含的信息创建主体并将其与请求相关联。

  • 这意味着 token 中的有效负载信息通常以声明的形式通过请求主体可用。例如,如果您的 JWT 包含有关用户角色的信息,它将被映射到主体中可用的角色声明。

    您没有提到您是否使用 OWIN,所以我将假设使用 OWIN 作为示例,但它在 Controller 级别应该无关紧要或大不相同。

    尽管您只关心数据消耗部分,但如果好奇,您可以通读这组关于 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 在 Controller 中可用以列出当前已验证身份的所有声明。除非您配置的身份验证管道与标准配置完全不同,否则这些声明将从您的 API 接收的 JWT 负载映射。

    关于asp.net-web-api2 - 在 Controller 操作中获取 JSON Web Token 有效负载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39819299/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com