如何使用一个链接为管理员同意和没有租户的用户授权?

时间:2018-02-06 14:27:24

标签: 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?...

非管理员用户是否有办法使用一个链接? 或者在这种情况下最好的UX方法是什么?

1 个答案:

答案 0 :(得分:1)

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

根据我的测试,您应该可以使用以下网址:

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

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

如果他们点击其他链接返回您的应用,他们将被重定向回来,其网址如下:

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

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