为什么使用“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
,它有效...可能的错误?
JwtSecurityToken
s 使用此处找到的映射,该映射是包含"actort"的另一个映射的反向映射。
由于我使用的是 JwtSecurityToken
,因此在筛选它之前,我应该使用映射来找出我生成的声明类型值是什么Claim actorClaim = token.Claims.FirstOrDefault( c => c.Type == ClaimTypes.Actor );