【问题标题】:Why is my Azure application asking for admin consetment although i do not request for admin scopes?为什么我的 Azure 应用程序要求管理员权限,尽管我没有请求管理员范围?
【发布时间】:2020-08-13 14:35:41
【问题描述】:

我正在开发一个 Web 应用程序,它允许来自任何 azure 组织的用户使用 windows Graph-Api(范围:File.Read.All)在他们的 OneDrive 上授予我的应用程序读取权限

我在 azure 门户中注册了一个多租户应用程序,并按照文档中的说明配置了该应用程序

我需要允许来自其他 azure 组织的用户同意我的应用程序读取文件内容,但在我的情况下,我在发送身份验证代码 URL 后得到“需要管理员批准”(使用来自另一个 azure 的用户进行测试组织)

验证码:https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=XXX&response_type=code&redirect_uri=YYY&scope=user.read files.read.all offline_access&state=ZZZ

What a user get after authetification to his Office-365 account

我知道还有其他应用程序没有这个问题,例如应用程序 app.diagrams.net 只需要用户同意而不需要管理员同意,即使它要求读写范围

diagrams.net AuthenticationCode:https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=b5ff67d6-3155-4fca-965a-59a3655c4476&response_type=code&redirect_uri=https%3A%2F%2Fapp.diagrams.net%2Fmicrosoft&scope=user.read files.readwrite.all offline_access&state=cId%3Db5ff67d6-3155-4fca-965a-59a3655c4476

What a user get with diagram application

【问题讨论】:

    标签: azure microsoft-graph-api office365 onedrive msal


    【解决方案1】:

    这不是因为任何特定的范围。您的问题的答案在 Azure AD (AAD) 术语中的“应用程序预配”下进行了讨论。简而言之,需要将 AAD 应用程序“配置”到 AAD 租户中,租户管理员可以选择用户是否可以自行启动。在这里,似乎不允许这样做。

    更详细地说,当您创建 AAD 应用程序时,您会创建 2 个对象:应用程序的表示,以及处理对该应用程序的访问的“服务主体”。当您向其他租户/组织提供您的 AAD 应用程序时,他们需要自己的服务主体对象才能访问您的应用程序,这需要管理员同意,即配置。

    一般来说,有两篇文章你应该看看:

    How and why applications are added to Azure AD

    How to: Sign in any Azure Active Directory user using the multi-tenant application pattern

    这些代码示例应该阐明这个过程:

    Developing a Multi-tenant (SaaS) application with the Microsoft Identity Platform

    Protect a multi-tenant SaaS web application that calls Microsoft Graph using Azure AD & OpenID Connect

    编辑: 更正:租户管理员可以选择是否允许用户启动应用程序配置。致谢:@jasonJohnston。

    【讨论】:

    • 这并不完全正确。管理员可以关闭用户同意多租户应用程序的能力,这很可能是这种情况。在这种情况下,管理员必须征得同意(以提供服务主体)。如果管理员不关闭此功能,则组织中的任何用户都可以这样做。
    • @JasonJohnston 很抱歉,您确实是对的:现在这是可选的。我会编辑答案。
    猜你喜欢
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 2020-07-13
    • 2013-01-20
    相关资源
    最近更新 更多