2016-02-11 55 views
2

我已经使用Azure AD获得了web api 2项目。这非常适合使用[Authorize]属性,但我无法让它与角色一起工作。我已加入下列到应用程序清单:用于Web Api的Azure AD应用程序角色

"appRoles": [ 
{ 
    "allowedMemberTypes": [ 
    "Application" 
    ], 
    "description": "Access to example controller", 
    "displayName": "Example", 
    "id": "76d4bbb5-24c1-45ad-9446-cc360d7bd012", 
    "isEnabled": "true", 
    "origin": "Application", 
    "value": "example" 
} 

]

和该属性我的API控制器:[授权(角色= “例如”)]。如果我删除这个属性和调用我的API这个要求被列入ClaimsPrincipal.Current:

{http://schemas.microsoft.com/ws/2008/06/identity/claims/role: example} 

但这不足以让我的应用程序时,角色头部被用来进行身份验证。任何帮助,将不胜感激。

回答

0

事实证明,令牌是SAML令牌,而不是JWT。所以为了得到这个工作,我只需要在我的TokenValidationParameters中设置它

TokenValidationParameters = new System.IdentityModel.Tokens.TokenValidationParameters() 
       { 
        // we inject our own multitenant validation logic 
        ValidateIssuer = false, 
        // map the claimsPrincipal's roles to the roles claim 
        RoleClaimType = "http://schemas.microsoft.com/ws/2008/06/identity/claims/role", 

       } 
+0

这个web api是否为多租户启用? –

+0

如何为启用多租户访问的Web api分配角色。从不同的Azure AD目录中,您无法看到Web api能够为其分配角色 –

+0

实际上我并不确定,那不是我所做的。我相信如果你创建一个新的问题,有人可以为你解答。 –

相关问题