JWT声称名称



在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";索赔型看起来像这样:public const string name =" http://schemas.xmlsoap.org/ws/2005/2005/05/istentity/claims/name";

我什么时候没有得到。为什么在第二种情况下使用URL?

通常,dotnet框架和dotnetcore中的身份表示都使用System.Security.Claims.ClaimTypes枚举。索赔类型字符串来自WS-* ERA和Windows Identity Foundation。我认为由于向后兼容而没有更改。

System.IdentityModel.Tokens.Jwt.JwtRegisteredClaimNames表示新协议中的索赔类型。

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

因此,如果您使用的是新协议(OAuth,OpenID Connect(,也可以使用JwtRegisteredClaimNames。有时您可能需要在两种索赔类型之间映射。

另外,sub通常是唯一的标识符,对于无唯一的属性,例如您可以使用FamilyNameGivenName的名称。

您也可以定义自己的索赔类型。

相关内容

  • 没有找到相关文章

最新更新