我正在使用 Microsoft Azure AD 和 OAuth2 使用授权代码获取访问 token :
- 构建登录网址并重定向至该网址
https://login.microsoftonline.com/common/oauth2/authorize?client_id=xxx&response_type=code&redirect_uri=yyyy&response_mode=query&scope=zzzz&state=1111
从登录页面返回并获取代码
获取访问 token (POST)
https://login.microsoftonline.com/common/oauth2/token?client_id=xxxx&redirect_uri=yyyy&code=zzzz&grant_type=authorization_code&client_secret=1111
一切正常,但在步骤 1 和 2 之间,最终用户必须选择要使用的帐户(请参阅最后的登录屏幕图片)。
此时用户始终已登录到 login.microsoftonline.com,并且管理员已向整个组织授予使用该应用程序的同意。
问题:
有没有办法跳过这个,例如使用可选参数指示自动使用带有@company.com后缀的帐户?是否可以使用普通
租户甚至特定租户?
目标:
我有一个组策略可以在启动时打开一些网页,并且我希望用户自动登录到该网站。即使单击一下也会毁掉这一点。如果重要的话我会使用 PHP。
- 旧登录屏幕:
- 新的登录屏幕:
最佳答案
您可以使用domain_hint
参数(domain_hint=company.com
):
https://login.microsoftonline.com/common/oauth2/authorize?domain_hint=company.com&client_id=xxx&response_type=code&redirect_uri=yyyy&response_mode=query&scope=zzzz&state=1111
更多信息请参见:
http://www.cloudidentity.com/blog/2014/11/17/skipping-the-home-realm-discovery-page-in-azure-ad/
这适用于 v1 和 v2 端点,与文档所述不同。
关于Azure AD OAuth2 - 跳过帐户选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47427177/