[英]Asp.Net WebApi 2: Add role claim to WindowsIdentity
我想向已通過身份驗證的Windows用戶添加角色聲明。 我幼稚的第一種方法是將角色聲明添加到在WebApi之前運行的自定義owin中間件中。 像這樣:
public class IdentityMiddleware : OwinMiddleware
{
public IdentityMiddleware(OwinMiddleware next) : base(next)
{
}
public async override Task Invoke(IOwinContext context)
{
var user = context.Request.User as WindowsPrincipal;
var identity = user.Identity as ClaimsIdentity;
identity.AddClaim(new Claim(ClaimTypes.Role, "Admin"));
await Next.Invoke(context);
}
}
但是,當像這樣在控制器中提供Authorize屬性時。
public class TestController : ApiController
{
[Authorize(Roles = "Admin")]
public string Get()
{
return User.Identity.Name;
}
}
..我將得到401 。
我注意到,新索賠的發出者是“地方當局”而不是“公署”。這可能是原因嗎?
您是否為您的授權屬性嘗試過此操作:
[Authorize(ClaimTypes.Role, "Admin")]
這對我有用:
var сlaimsIdentity = user.Identity as ClaimsIdentity;
сlaimsIdentity?.AddClaim(new Claim(сlaimsIdentity.RoleClaimType, "Admin"));
if (user.IsInRole("Admin")) ... // always true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.