【问题标题】:Administrator Consent in Active DirectoryActive Directory 中的管理员同意
【发布时间】:2016-11-03 15:01:11
【问题描述】:

我想我对 Azure AD 下的开发过程缺乏了解。我开发了一个网络应用程序,它通过我们公司网络中的 AD 进行身份验证,并使用我们的一些服务(如 Sharepoint 和 PowerBI)。

似乎对于 Sharepoint 的某些功能,我需要管理员同意(在应用程序权限中,我必须设置管理员:必需)。当我尝试访问我的应用程序(位于本地主机上)时,它会显示:

this application requires application permissions to another application. 
Consent for application permissions can only be performed by an administrator. 
Sign out and sign in as an administrator or
         contact one of your organization's administrators.

据我了解,全局管理员需要登录一次应用程序,以便其他用户(如我)可以登录。但是这个工作流程听起来有问题,我不能要求我们的管理员去我的电脑上登录(我在 localhost 上有一个网络应用程序,所以我无法向他发送链接)。此外,如果他在地理位置上位于另一个地方并且无法访问我的电脑怎么办?也正因为如此,他还没有准备好给我全局管理员权限。

这听起来很奇怪,我觉得我只是错过了一些明显的东西。人们如何在每次更改身份验证逻辑时不要求 IT 访问他们的 PC 的情况下实际开发此类东西?

【问题讨论】:

    标签: asp.net azure active-directory


    【解决方案1】:

    我同意这个用户体验并不出色。

    仅以管理员身份登录是不够的。您必须在登录时将 prompt 查询参数设置为 admin_consent。至少在使用 OAuth 端点时。

    所以你需要点击一个 URL,比如https://login.microsoftonline.com/common/oauth2/authorize?client_id=your-client-id&redirect_uri=your-encoded-reply-url&response_mode=form_post&response_type=code+id_token&prompt=admin_consent

    your-client-id 替换为您应用的客户端 ID,并将 your-encoded-reply-url 替换为您应用的有效回复 URL。如果您的应用不是多租户,也请用您的租户 ID/域名替换 common

    如果您想以简单的方式进行操作,请使用 Vittorio 的漂亮表格 his blog。只需输入租户 id(或 common)、回复 URL 和您的应用程序的客户端 id,勾选管理员同意复选框并单击 Go。

    是的,您需要成为 Azure AD 中的管理员才能执行此操作,因此请让您的管理员执行此操作。

    编辑:随着 Azure 门户的最新更新,可以直接从门户授予权限。

    如果您在新门户中转到 Azure Active Directory,请在此处找到您的应用注册,然后单击所需权限边栏下的 授予权限

    【讨论】:

    • 看起来我们的管理员不在办公室,所以我不能在星期一之前证实这一点。我觉得这应该可以工作,但感谢您的建议。我唯一不确定的是我们的应用程序还没有托管在 Azure 上(它只是使用 AD 进行身份验证)(我们有一个安全策略,在它处于发布阶段之前不托管它)。但我怀疑这有什么不同
    • 唯一的区别是回复 URL,在通常是 localhost 的开发环境中。您还可以在 Azure AD 中为生产定义一个单独的应用程序,在这种情况下,客户端 ID 和密码也会不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    相关资源
    最近更新 更多