gpt4 book ai didi

angular - Azure Active Directory 用户 Angular 色和授权

转载 作者:行者123 更新时间:2023-12-03 03:00:03 25 4
gpt4 key购买 nike

我的应用程序托管在 Azure 上,前端使用 Angular 4,后端使用 .net core 2.0。我想要实现的是:向添加到我的 Azure Active Directory 的用户添加 Angular 色。身份验证已实现并且运行良好。我使用 ADAL,并在每次请求时发送我的不记名 token 。

  1. 这些是我在 Azure 门户 list 中定义的应用 Angular 色:

    "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"
    }

    ]

  2. 审批者 Angular 色已分配给所需的用户。

  3. 我将请求发送到具有 [Authorize] 属性的后端(.net core 2.0 Web api),然后检查用户声明 User.Claims.ToList()我收到用户是审批者:

[15]{http://schemas.microsoft.com/ws/2008/06/identity/claims/role: Approver}

那太好了!

  • 现在我在startup.cs中添加策略

    services.AddAuthorization(options =>
    {
    options.AddPolicy("ElevatedRights", policy =>
    policy.RequireRole("Approver"));
    });
  • 那么这就是出现问题的步骤。我在 Controller 中添加以下代码(请参阅步骤 3)。我将 [Authorize] 方法更改为[Authorize(Policy = "ElevatedRights")]但当时我被拒绝了。我什至尝试过 [Authorize(Roles = "Approver")]

  • 我错过了什么或做错了什么?

    附注请随意为问题提出更好的标题。

    最佳答案

    似乎它不知道将 Angular 色映射到哪个声明。

    您也许可以改用RequireClaim(ClaimTypes.Role, "Approver")

    另一种可能的方法(应该可行)是在 AddJwtBearer 调用中指定 RoleClaimsType。像这样的东西:

    AddJwtBearer(o => o.TokenValidationParameters = new TokenValidationParameters { RoleClaimType = ClaimTypes.Role })`.

    除了ClaimTypes.Role,您还可以尝试“roles”

    关于angular - Azure Active Directory 用户 Angular 色和授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49856733/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com