我正在构建一个内部网络应用程序供我的公司使用,并希望使用我们的 Google Apps 域来管理来自我们公司域用户名的访问(本问题的其余部分为 example.com)。
我在用着:
Django==1.9.5
python-social-auth==0.2.19
+ dependencies
通过阅读其他 SO 问题,我发现了可以通过以下设置使用的 Goog“托管域”(hd)参数:
SOCIAL_AUTH_GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMENTS = {'hd': 'example.com'}
该参数已成功附加到初始请求,我可以在授予访问权限之前在 URL 中看到它。
但是,它并没有像我预期的那样工作。我已经能够使用两个非公司电子邮件地址成功进行身份验证。
我是否误解了“hd=”参数的工作原理,或者我是否还需要限制通过 Google 管理仪表板上其他位置的应用程序的访问?或者 OAuth2 流程中不支持它?
预先感谢您的任何帮助。
我知道这是一篇较旧的帖子,但我发现它正在搜索如何向 OAuth2 添加额外的 url 参数。我不知道如何设置 hd 参数。
根据您的情况,将白名单设置为您想要接受的域。他们将能够通过向 Google 添加非指定托管域帐户进行身份验证,但不会登录到您的网站。他们将收到AuthForbidden
异常,并显示消息“不允许您的凭据。”
要设置站点接受的域白名单,请将以下内容添加到 settings.py:
SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS = ['domain.com', 'example.org']
您还可以设置一个更友好的页面,这样他们就不会收到默认的 500 错误页面:
SOCIAL_AUTH_LOGIN_ERROR_URL = '/authentication_error/'
SOCIAL_AUTH_BACKEND_ERROR_URL = '/authentication_error/'
更新 urls.py,让这个 url 指向一个视图,并呈现一个漂亮的 HTML 页面,让他们知道出了什么问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)