首页 > 解决方案 > 如何在不需要管理员同意的情况下在两个应用程序之间授予 Azure AD 应用程序权限?

问题描述

我有两个单租户 Azure AD 应用程序 A 和 B。应用程序 A 代表服务,应用程序 B 代表客户端。我正在尝试允许 B 使用使用 AAD OAuth2 客户端凭据流获得的 AAD JWT 令牌访问 A。我appRole在清单中为 A 定义了一个,并将其添加为 B 的 API 权限App registrations -> API Permissions -> Add a permission -> My APIs -> A -> Application permissions

即使我是这两个应用程序的所有者,这也需要管理员同意。

有没有办法在不需要管理员干预的情况下授予此权限,因为我拥有公开应用角色的应用?在授予访问可能包含敏感用户数据的目录的权限时,我了解管理员同意要求,但在这里它纯粹是我拥有的两个应用程序之间的权限。

应用 A 的清单中的应用角色如下:

{
    "allowedMemberTypes": [
        "User",
        "Application"
    ],
    "description": "...",
    "displayName": "MyPermission",
    "id": "00000000-aaaa-bbbb-cccc-ddddddddddddd",
    "isEnabled": true,
    "lang": null,
    "origin": "Application",
    "value": "MyPermission"
}

标签: azure-active-directory

解决方案


不幸的是,这是不可能的!向客户端应用程序授予应用程序权限时,您必须授予管理员同意。否则使用access token访问api应用时会提示“权限不足”。

您可以看到,当您将自定义应用程序权限授予客户端应用程序时,Admin consent required显示为Yes,表示这是 AAD 强制执行的,您无法绕过此步骤。

在此处输入图像描述

另外,还可以通过解析token来查看。只有管​​理员同意申请权限,rolestoken中才会有Claim,否则不会显示Claim。

在此处输入图像描述


推荐阅读