【问题标题】:Limit Google OAuth access to one domain using 'hd' param (Django / python-social-auth)使用“hd”参数(Django / python-social-auth)将 Google OAuth 访问限制为一个域
【发布时间】:2016-07-25 11:40:51
【问题描述】:

我正在为我的公司构建一个内部 web 应用程序,以使用并希望使用我们的 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 流程不支持它?

提前感谢您的帮助。

【问题讨论】:

    标签: python django google-oauth


    【解决方案1】:

    我知道这是一篇较旧的帖子,但我发现它正在搜索如何向 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 页面,让他们知道出了什么问题。

    【讨论】:

    • 非常感谢您的这篇文章。这在 Google 或应用程序 github docs 中根本没有很好的记录,并且还有另一个 stackoverflow 帖子要求提供解决方案。感谢您的帖子,我使用 social-auth-app 2.1.0 和 django 2.07 处理了除 settings.py 之外的白名单域
    • 太好了,如果我愿意,很高兴能提供帮助。 ;-) 当我向 OP 发布此回复时,现在记录得更好了。
    • 这个问题可以通过在你的 Google API 中手动添加授权域来解决。
    【解决方案2】:
    AUTH_EXTRA_ARGUMENTS = {'hd': 'example.com'}
    

    【讨论】:

    • 这不是答案,请添加一些解释。
    猜你喜欢
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多