我们有一个使用 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
如果租户不允许用户自行同意,他们会收到此错误:
如果他们有管理员帐户,则可以点击那里的链接。
如果他们点击其他链接返回您的应用,他们将被重定向回,并使用如下 URL:
http://localhost:8080/?error=access_denied&error_subcode=cancel&add_account=
您可以向用户显示一个解释情况的 View ,并为他们提供一个他们也可以复制的链接,然后他们的管理员可以使用该链接来同意他们的组织。然后该链接将转到管理员同意 URL。
关于azure - 如何使用一个链接为具有管理员同意和未经管理员同意的租户用户进行授权?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48645311/