【问题标题】:How to grant Azure AD application permissions between two apps without requiring admin consent?如何在不需要管理员同意的情况下在两个应用程序之间授予 Azure AD 应用程序权限?
【发布时间】:2020-10-02 14:11:47
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: azure-active-directory


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢!对于我的两个应用程序之间的权限而不是目录资源之间的权限,您是否有任何想法,为什么从安全角度来看这里需要管理员同意?
    • @mmajis 查阅了一些文档,微软也没有过多解释。您可以在论坛中提出您的建议:feedback.azure.com/forums/34192--general-feedback
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多