azure - 如何使用一个链接为具有管理员同意和未经管理员同意的租户用户进行授权?

标签 azure oauth-2.0 azure-active-directory

我们有一个使用 Office365 OAuth 来注册和验证用户身份的应用。

有两种类型的租户正在使用该应用程序。 一种类型是“Microsoft/Azure 租户配置为限制非管理员用户”,另一种类型允许无任何限制地授权。

对于第二种类型的用户,请使用此链接:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?...prompt=consent

对于第一种类型,我们使用管理员同意链接:

https://login.microsoftonline.com/common/adminconsent

之后普通用户使用此链接无需prompt=consent:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?...

有没有一种方法可以让非管理员用户使用一个链接? 或者在这种情况下最好的用户体验方法是什么?

最佳答案

您可能根本不需要使用prompt=consent

根据我的测试,您应该能够使用如下 URL:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=aaaabbbb-44fb-47e3-a69d-f8c29cfdf49b&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A8080&scope=Calendars.Read%20User.Read

如果租户不允许用户自行同意,他们会收到此错误:

Admin consent required error

如果他们有管理员帐户,则可以点击那里的链接。

如果他们点击其他链接返回您的应用,他们将被重定向回,并使用如下 URL:

http://localhost:8080/?error=access_denied&error_subcode=cancel&add_account=

您可以向用户显示一个解释情况的 View ,并为他们提供一个他们也可以复制的链接,然后他们的管理员可以使用该链接来同意他们的组织。然后该链接将转到管理员同意 URL。

关于azure - 如何使用一个链接为具有管理员同意和未经管理员同意的租户用户进行授权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48645311/

相关文章:

asp.net-mvc - AllowAnonymous 不适用于 azure 广告身份验证

windows - 虚拟机 - Azure,设置 Web 服务器

oauth-2.0 - 如何在 WSO2 APIM 中实现 Oauth2 而不发送 client_secret

oauth-2.0 - Keycloak 无效的 token 发行者

oauth - Google OAuth 2.0 增量授权不起作用

azure - 启用 Web 服务身份验证时应用程序网关停止工作

azure ad b2c 运行用户流不返回带有声明的 token

azure - 使用 ADF 调用存储过程

sql-server - 我的网站托管在不同的服务器上,但我想使用 Azure SQL Server 数据库

azure - 在同一个 Azure 存储帐户中复制 blob 是即时的吗?