gpt4 book ai didi

asp.net-core - Jwt 声明名称

转载 作者:行者123 更新时间:2023-12-03 23:16:31 28 4
gpt4 key购买 nike

在 ASPNetCore 中命名声明的基于标准的方法是什么?

例如,我正在使用以下内容创建 JWT,但我想从中取出字符串。

var claims = new[]
{
new Claim("UserName", user.UserName),
new Claim("UserId", user.Id),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
new Claim("AppUserId", appUser.Id.ToString()),
new Claim("TenantId", user.TenantId.ToString())
};

为此,似乎有两个不同的 dotnetcore 类:
 `System.IdentityModel.Tokens.Jwt.JwtRegisteredClaimNames`
`System.Security.Claims.ClaimTypes`

我应该使用哪些?

JwtRegisteredClaimNames 如下所示: public const string Sub = "sub";而 ClaimTypes 看起来像这样: public const string Name = " http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name ";

我不知道什么时候不同。为什么在第二种情况下使用 url?

最佳答案

通常,Dotnet framework 和 Dotnetcore 内部的身份表示都使用 System.Security.Claims.ClaimTypes枚举。声明类型字符串来自 WS-* 时代和 Windows Identity Foundation。我认为它不会因为向后兼容性而改变。System.IdentityModel.Tokens.Jwt.JwtRegisteredClaimNames表示来自较新协议(protocol)的声明类型。

  • https://www.rfc-editor.org/rfc/rfc7519#section-4
  • http://openid.net/specs/openid-connect-core-1_0.html#IDToken

  • 因此,如果您使用较新的协议(protocol)(OAuth、OpenId Connect),您可以使用 JwtRegisteredClaimNames也是。有时您可能需要在两种声明类型之间进行映射。
    另外, sub通常是唯一标识符,对于没有唯一属性(如您可以使用的名称) FamilyNameGivenName .
    您也可以定义自己的声明类型。

    关于asp.net-core - Jwt 声明名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50012155/

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