我有一个关于ASP.NET核心和声明中的JWT身份验证的问题,因为我不知道我是否正确地获取了所有内容 .
当我在ASP.NET中创建一个JWT令牌时,我添加了一些声明,其中一些声明可以自定义 . 将带有JWT令牌的请求从客户端发送到API时会发生什么 . User.Claims如何填写?它是否使用从JWT读取的声明?
我想创建一个自定义身份提供者(不想使用ASP.NET提供的这个),我自己的表用于用户数据,角色等 . 我不想存储完成策略所需的所有重要数据JWT令牌(存储在令牌事务中的信息量以及安全事项) . 是否可以在JWT令牌中仅存储基本声明(如用户ID,名称等),然后重新获取其他所需的数据DB / Cache?与此同时,我想使用[授权]和政策机制的标准机制 .
如何使这一切工作:自定义用户身份JWT标准基于ASP.NET策略的授权声明在每次请求时从DB / Cache获取?怎么做到这一点?
2 回答
Asp Net Core
第一步是编写配置Jwt身份验证的方法:
现在在 Startup.cs 的 ConfigureServices() 方法内,我们可以调用 ConfigureJwtAuthService() 方法来配置Jwt身份验证 .
这是完整的 Startup.cs :
JwtController.cs
在我的项目中,我使用Angular . 对于Angular调用JwtController方法:
在您希望只能由经过身份验证的用户访问的控制器类(或方法)上(而不是在JwtController上,因为其方法必须可供所有用户访问),您可以设置:
要从Angular调用需要身份验证的控制器方法,您需要使用 getAuthHeader() 方法将令牌附加到标头中 .
我希望这篇文章可以帮到你 .
是的,它使用存储在jwt令牌中的claism查看httpcontext对象,查看创建令牌时存储在令牌中的声明
这个链接也有帮助https://joonasw.net/view/adding-custom-claims-aspnet-core-2