我在Azure上安装了应用程序,在前端安装了Angular 4,在后端安装了.net core 2.0。 我想要实现的是:将角色添加到添加到我的Azure Active Directory的用户。 身份验证已实施且运行良好。我使用ADAL,每次请求都会发送我的持票令牌。
这些是我在azure portal上的清单中定义的app角色:
"appRoles": [
{
"allowedMemberTypes": [
"User"
],
"displayName": "Reviewer",
"id": "0238c2bb-9857-4d07-b760-a47ec621d57a",
"isEnabled": true,
"description": "Reviewer only have the ability to view tasks and their statuses.",
"value": "Reviewer"
},
{
"allowedMemberTypes": [
"User"
],
"displayName": "Approver",
"id": "000018cb-19e3-4f89-bf99-5d7acf30773b",
"isEnabled": true,
"description": "Approvers have the ability to change the status of tasks.",
"value": "Approver"
}
审批者角色已分配给所需用户。
我向后端(.net core 2.0 web api)发送请求,其中我有[Authorize]属性,我检查用户声明 User.Claims.ToList()然后我收到用户是批准人:
[15] {http://schemas.microsoft.com/ws/2008/06/identity/claims/role: 审批}
那太棒了!
现在我在startup.cs中添加策略
services.AddAuthorization(options =>
{
options.AddPolicy("ElevatedRights", policy =>
policy.RequireRole("Approver"));
});
然后这是问题发生的步骤。我在控制器中添加以下代码(请参阅步骤3)。我用[更改] [授权]方法
[Authorize(Policy = "ElevatedRights")]
但我被拒绝了。我甚至试过[Authorize(Roles = "Approver")]
我错过了什么或做错了什么?
P.S。随意为问题提出更好的标题。
答案 0 :(得分:1)
似乎它不知道将角色映射到哪个声明。
您可以改为使用<div class="container">
<div>Card</div>
<div>Title</div>
</div>
。
另一种可能的方法(应该有效)是在RequireClaim(ClaimTypes.Role, "Approver")
来电中指定RoleClaimsType
。类似的东西:
AddJwtBearer
您可以尝试AddJwtBearer(o => o.TokenValidationParameters = new TokenValidationParameters { RoleClaimType = ClaimTypes.Role })`.
。
ClaimTypes.Role