Phi*_*ard 5 python django google-oauth2
我正在为我的公司构建一个内部Webapp,供我使用,并希望使用我们的Google Apps域来管理来自我们公司域用户名(本问题其余部分为example.com)的访问。
我正在使用:
Django==1.9.5
python-social-auth==0.2.19
+ dependencies
Run Code Online (Sandbox Code Playgroud)
通过阅读其他SO问题,我发现可以通过以下设置使用Goog“托管域”(hd)参数:
SOCIAL_AUTH_GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMENTS = {'hd': 'example.com'}
Run Code Online (Sandbox Code Playgroud)
该参数已成功添加到初始请求中,可以在授予访问权限之前在URL中看到它。
但是,它没有按我预期的那样工作。我已经能够通过两个非公司的电子邮件地址成功进行身份验证。
我是不是误解了“ hd =”参数的工作原理,还是需要限制通过Google Admin仪表板上其他位置的应用程序访问?还是OAuth2流不支持它?
在此先感谢您的帮助。
我知道这是一个较旧的帖子,但我发现它在搜索如何向 OAuth2 添加额外的 url 参数。我不知道如何设置 hd 参数。
根据您的情况,将白名单设置为您要接受的域。他们将能够通过向 Google 添加他们未指定的托管域帐户来进行身份验证,但不会登录到您的站点。他们将收到AuthForbidden带有消息“您的凭据不被允许”的异常消息。
要设置站点中接受的域的白名单,请将以下内容添加到 settings.py:
SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS = ['domain.com', 'example.org']
Run Code Online (Sandbox Code Playgroud)
你还可以设置一个更友好的页面,这样他们就不会得到默认的 500 错误页面:
SOCIAL_AUTH_LOGIN_ERROR_URL = '/authentication_error/'
SOCIAL_AUTH_BACKEND_ERROR_URL = '/authentication_error/'
Run Code Online (Sandbox Code Playgroud)
更新 urls.py 以让这个 url 指向一个带有漂亮 HTML 页面的视图,让他们知道出了什么问题。