OAuth服务器使用与System.Security.Claims.ClaimTypes.Role
不同的声明类型发布角色声明:
var adminRole = new Claim("CustomRole", "Admin");
context.Ticket.Identity.AddClaim(adminRole);
我如何告诉OAuthBearerAuthentication
中间件使用我的自定义角色声明类型,以便它获得Authorize
属性:
//Startup
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions ...
[Authorize(Roles = "Admin")]
public IHttpActionResult SecureAction()
2条答案
按热度按时间bwntbbo31#
确保您的
Identity
设置为System.Security.Claims.ClaimsIdentity
的示例:ClaimsIdentity.RoleClaimType
属性用于指定表示 role 的声明,并且在为ClaimsPrincipal.IsInRole(String)
方法计算此标识时使用它。您可以轻松地从原始身份克隆原始身份(传递原始声明),并使用构造函数指定不同的
roleType
名称:ClaimsIdentity(IIdentity, IEnumerable<Claim>, String, String, String)
f0brbegy2#
在
OAuthBearerAuthenticationProvider
的OnValidateIdentity
函数中,我们可以将ClaimsIdentity
与适当的RolaClaimType
和NameClaimType
重新绑定: