如何:在应用程序中添加应用角色并在令牌中接收它们

基于角色的访问控制 (RBAC) 是一种常用的机制,用于在应用程序中强制进行授权。 使用 RBAC 时,管理员将权限授予角色而不是单个用户或组。 然后,管理员再将角色分配给不同的用户和组,以便控制用户对特定内容和功能的访问。

将 RBAC 与应用程序角色和角色声明配合使用,开发人员就可以安全地在应用中强制实施授权,相当轻松。

另一种方法是使用 Azure AD 组和组声明,如 WebApp-GroupClaims-DotNet 中所示。 Azure AD 组和应用程序角色绝不会互相排斥,它们可以配合使用,进行更精细的访问控制。

为应用程序声明角色

这些应用程序角色在 Azure 门户的应用程序注册清单中定义。 当用户登录到应用程序时,Azure AD 会针对每个角色发出一个 roles 声明。这些角色包括单独授予用户的,以及通过组成员身份获得的。 可以通过门户的 UI 为用户或组分配角色,也可以使用 Microsoft Graph 以编程方式进行分配。

使用 Azure 门户声明应用角色

  1. 登录到 Azure 门户

  2. 在顶栏中选择帐户,然后选择“切换目录”。

  3. “目录 + 订阅”窗格打开后,请从“收藏夹”或“所有目录”列表中选择要在其中注册应用程序的 Active Directory 租户。

  4. 选择左侧导航栏中的“所有服务”,并选择“Azure Active Directory”。

  5. 在“Azure Active Directory”窗格中选择“应用注册”,查看一个包含所有应用程序的列表。

    如果看不到希望其显示在这里的应用程序,请使用“应用注册”列表顶部的各种筛选器来限制此列表,或者在列表中向下滚动,以便找到应用程序。

  6. 选择一个应用程序,以便在其中定义应用角色。

  7. 在应用程序的边栏选项卡中,选择“清单”。

  8. 编辑应用清单,方法是先查找 appRoles 设置,然后添加所有应用程序角色。

    Note

    此清单中的每个角色定义必须有不同的有效 Guid(针对“Id”属性)。 每个角色的 "value" 属性应该与应用程序的代码中使用的字符串完全匹配。

  9. 保存清单。

示例

以下示例显示的 appRoles 可以分配给 users

Note

id 必须是唯一的 GUID。

"appId": "8763f1c4-f988-489c-a51e-158e9ef97d6a",
"appRoles": [
    {
      "allowedMemberTypes": [
        "User"
      ],
      "displayName": "Writer",
      "id": "d1c2ade8-98f8-45fd-aa4a-6d06b947c66f",
      "isEnabled": true,
      "description": "Writers Have the ability to create tasks.",
      "value": "Writer"
    }
  ],
"availableToOtherTenants": false,

可以针对 users 和/或 applications 来定义应用角色。 可供 applications 使用时,应用角色在“所需的权限”边栏选项卡中显示为应用程序权限。 以下示例显示一个以 Application 为目标的应用角色。

"appId": "8763f1c4-f988-489c-a51e-158e9ef97d6a",
"appRoles": [
    {
      "allowedMemberTypes": [
        "Application"
      ],
      "displayName": "Consumer Apps",
      "id": "47fbb575-859a-4941-89c9-0f7a6c30beac",
      "isEnabled": true,
      "description": "Consumer apps have access to the consumer data.",
      "value": "Consumer"
    }
  ],
"availableToOtherTenants": false,

将用户和组分配到角色

在应用程序中添加应用角色以后,即可将这些角色分配给用户和组。

  1. 使用 Azure Active Directory 左侧导航菜单,在“Azure Active Directory”窗格中选择“企业应用程序”。

  2. 选择“所有应用程序”,查看所有应用程序的列表。

    如果看不到希望其显示在这里的应用程序,请使用“所有应用程序”列表顶部的各种筛选器来限制此列表,或者在列表中向下滚动,以便找到应用程序。

  3. 选择一个应用程序,以便在其中为角色分配用户或安全组。

  4. 在应用程序的左侧导航菜单中选择“用户和组”窗格。

  5. 在“用户和组”列表顶部选择“添加用户”按钮,以便打开“添加分配”窗格。

  6. 在“添加分配”窗格中,选择“用户和组”选择器。

    将会显示用户和安全组的列表和一个文本框,后者用于搜索和查找特定用户或组。 此屏幕允许一次选择多个用户和组。

  7. 选择好用户和组以后,按底部的“选择”按钮即可转到下一部分。

  8. 在“添加分配”窗格中,选择“选择角色”选择器。 此前在应用清单中声明的所有角色都会显示。

  9. 选择一个角色,然后按“选择”按钮。

  10. 按底部的“分配”按钮即可完成将用户和组分配到应用的操作。

  11. 确认已添加的用户和组显示在更新的“用户和组”列表中。

详细信息