配置角色声明

你可以在应用程序获得授权后收到的访问令牌中自定义角色声明。 如果应用程序需要令牌中的自定义角色,请使用此功能。 可以根据需要创建任意多个角色。

先决条件

注意

本文介绍了如何使用 API 在服务主体上创建、更新或删除应用程序角色。 若要将新用户界面用于应用角色,请参阅在应用程序中添加应用角色并在令牌中接收它们

定位企业应用程序

提示

本文中的步骤可能因开始使用的门户而略有不同。

使用以下步骤定位企业应用程序:

  1. 至少以云应用程序管理员身份登录到 Microsoft Entra 管理中心
  2. 浏览到“标识”>“应用程序”>“企业应用程序”>“所有应用程序”。
  3. 在“搜索”框中输入现有应用程序的名称,然后从搜索结果中选择该应用程序。
  4. 选择应用程序后,从概述窗格中复制对象 ID。

添加角色

使用 Microsoft Graph 浏览器向企业应用程序添加角色。

  1. 在另一个窗口中打开 Microsoft Graph 浏览器,使用租户的管理员凭据登录。

    注意

    云应用程序管理员和应用程序管理员角色在此场景中不适用,请使用特权角色管理员。

  2. 选择“修改权限”,为列表中的 Application.ReadWrite.AllDirectory.ReadWrite.All 权限选择“同意”。

  3. 将以下请求中的 <objectID> 替换为之前记录的对象 ID,然后运行查询:

    https://graph.microsoft.com/v1.0/servicePrincipals/<objectID>

  4. 企业应用程序也称为服务主体。 记录返回的服务主体对象中的 appRoles 属性。 以下示例演示典型的 appRoles 属性:

    {
      "appRoles": [
        {
          "allowedMemberTypes": [
            "User"
          ],
          "description": "msiam_access",
          "displayName": "msiam_access",
          "id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
          "isEnabled": true,
          "origin": "Application",
          "value": null
        }
      ]
    }
    
  5. 在 Graph 浏览器中,将方法从 GET 更改为 PATCH。

  6. 将以前记录的 appRoles 属性复制到 Graph 浏览器的“请求正文”窗格中,添加新的角色定义,然后选择“运行查询”以执行补丁操作。 一条成功消息会确认角色已创建。 以下示例显示如何添加“管理员”角色:

    {
      "appRoles": [
        {
          "allowedMemberTypes": [
            "User"
          ],
          "description": "msiam_access",
          "displayName": "msiam_access",
          "id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
          "isEnabled": true,
          "origin": "Application",
          "value": null
        },
        {
          "allowedMemberTypes": [
            "User"
          ],
          "description": "Administrators Only",
          "displayName": "Admin",
          "id": "11bb11bb-cc22-dd33-ee44-55ff55ff55ff",
          "isEnabled": true,
          "origin": "ServicePrincipal",
          "value": "Administrator"
        }
      ]
    }
    

    除了请求正文中的任何新角色之外,还必须包括 msiam_access 角色对象。 请求正文中未包含任何现有角色会将这些角色从 appRoles 对象中删除。 此外,可以根据组织的需要添加任意数量的角色。 这些角色的值在 SAML 响应中作为声明值发送。 若要为新角色的 ID 生成 GUID 值,请使用 Web 工具,例如联机 GUID/UUID 生成器。 响应中的 appRoles 属性包含查询的请求正文中的内容。

编辑特性

更新属性以定义令牌中包含的角色声明。

  1. 在 Microsoft Entra 管理中心找到该应用程序,然后在左侧菜单中选择“单一登录”。
  2. 在“属性和声明”部分,选择“编辑”
  3. 选择“添加新声明”。
  4. 在“名称”框中,键入属性名称。 此示例中使用角色名称作为声明名称。
  5. 将“命名空间”框留空
  6. 在“源属性”列表中,选择“user.assignedroles”。
  7. 选择“保存”。 新的“角色名称”属性现在应显示在“属性和声明”部分。 登录应用程序时,该声明现在应包含在访问令牌中。

分配角色

在使用更多角色修补服务主体后,可以将用户分配到相应的角色。

  1. 在 Microsoft Entra 管理中心中找到添加了角色的应用程序。
  2. 在左侧菜单中选择“用户和组”,然后选择你要为其分配新角色的用户。
  3. 选择窗格顶部的“编辑分配”以更改角色。
  4. 选择“未选择任何内容”,从列表中选择角色,然后选择“选择”。
  5. 选择“分配”,将角色分配给用户。

更新角色

若要更新现有角色,请执行以下步骤:

  1. 打开 Microsoft Graph Explorer

  2. 以特权角色管理员身份登录到 Graph 浏览器站点。

  3. 使用概述窗格中应用程序的对象 ID,将以下请求中的 <objectID> 替换为它,然后运行查询:

    https://graph.microsoft.com/v1.0/servicePrincipals/<objectID>

  4. 记录返回的服务主体对象中的 appRoles 属性。

  5. 在 Graph 浏览器中,将方法从 GET 更改为 PATCH。

  6. 将以前记录的 appRoles 属性复制到 Graph 浏览器的“请求正文”窗格中,更新角色定义,然后选择“运行查询”以执行补丁操作。

删除角色

若要删除现有角色,请执行以下步骤:

  1. 打开 Microsoft Graph Explorer

  2. 以特权角色管理员身份登录到 Graph 浏览器站点。

  3. 在 Azure 门户中使用概述窗格中应用程序的对象 ID,将以下请求中的 <objectID> 替换为它,然后运行查询:

    https://graph.microsoft.com/v1.0/servicePrincipals/<objectID>

  4. 记录返回的服务主体对象中的 appRoles 属性。

  5. 在 Graph 浏览器中,将方法从 GET 更改为 PATCH。

  6. 将之前记录的 appRoles 属性复制到 Graph 浏览器的“请求正文”窗格中,将要删除的角色的 IsEnabled 值设置为 false,然后选择“运行查询”以执行补丁操作。 必须先禁用角色,然后才能将其删除。

  7. 在禁用角色后,从 appRoles 节删除该角色块。 将方法保留为 PATCH,然后再次选择“运行查询”。

后续步骤