我已经使用Azure AD保护了Web api 2项目。使用[Authorize]属性可以很好地工作,但是我无法使其与角色一起使用。我已将以下内容添加到应用程序清单中:

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


]

并将此属性分配给我的api控制器:[Authorize(Roles =“ example”)]。如果我删除此属性并调用我的API,则ClaimsPrincipal.Current将包含此声明:

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


但这还不足以允许我的应用程序在使用角色标头时进行身份验证。任何帮助,将不胜感激。

最佳答案

事实证明,令牌是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",

                }

关于c# - Web Api的Azure AD应用程序角色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35344348/

10-17 02:25