为什么使用“ClaimTypes.Actor”返回“actort”

本文关键字:返回 actort Actor ClaimTypes 为什么 | 更新日期: 2023-09-27 18:36:47

>我有以下内容:

/* create claims */
const string actorClaimValue = "actor";
SecurityToken sendToken = new JwtSecurityToken(
    claims: new List<Claim> {
        new Claim(
            type: ClaimTypes.Actor,
            value: actorClaimValue
        ),
    }
);
JwtSecurityTokenHandler sendHandler = new JwtSecurityTokenHandler();
string sendTokenString = sendHandler.WriteToken( sendToken );
Console.Out.WriteLine( sendTokenString );
// eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhY3RvcnQiOiJhY3RvciJ9.
/* get claims */
JwtSecurityTokenHandler receiveHandler = new JwtSecurityTokenHandler();
JwtSecurityToken token = (JwtSecurityToken)receiveHandler.ReadToken( sendTokenString );
Claim actorClaim = token.Claims.FirstOrDefault( c => c.Type == ClaimTypes.Actor );
Console.Out.WriteLine( actorClaim == null );
// True
foreach( Claim claim in token.Claims ) {
    Console.Out.WriteLine( "{0}: {1}", claim.Type, claim.Value );
    // actort: actor
}

为什么使用 ClaimTypes.Actor ,定义为:

public const string Actor = "http://schemas.xmlsoap.org/ws/2009/09/identity/claims/actor"

导致声明类型为"演员"?

编辑:

我只是尝试了ClaimTypes.Role而不是ClaimTypes.Actor,它有效...可能的错误?

为什么使用“ClaimTypes.Actor”返回“actort”

JwtSecurityToken s 使用此处找到的映射,该映射是包含"actort"的另一个映射的反向映射。

由于我使用的是 JwtSecurityToken,因此在筛选它之前,我应该使用映射来找出我生成的声明类型值是什么Claim actorClaim = token.Claims.FirstOrDefault( c => c.Type == ClaimTypes.Actor );