簡體   English   中英

Asp.Net WebApi 2:向WindowsIdentity添加角色聲明

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM