python social auth 更改引用地址
Posted
技术标签:
【中文标题】python social auth 更改引用地址【英文标题】:python social auth change referrer address 【发布时间】:2019-08-10 15:11:59 【问题描述】:我有一个 Azure 应用程序网关(比如说 example.com),后面有一些 Azure 应用服务(example1.com、example2.com 等)。
我正在使用 python social auth 来验证我的 django 应用程序。问题是,当我从 example.com 单击登录并将该请求转发到 example1.com 时,登录请求发生在 example1.com。
如果我将 OAuth 回调地址指定为
example.com/complete/azuread-oauth2,
example1.com/complete/azuread-oauth2,以及
example2.com/complete/azuread-oauth2,
它不起作用,社交验证给了我错误:
raise AuthStateForbidden(self)
social_core.exceptions.AuthStateForbidden: Wrong state parameter given.
这可能是因为引用站点是 example.com,但实际请求来自 example1.com,尽管我不确定。有什么办法可以解决这个问题,让example1.com不会发生重定向,我可以把example1.com隐藏在example.com后面吗?
【问题讨论】:
【参考方案1】:python-social-auth
Django 策略使用 request.build_absolute_uri(...)
方法,该方法依赖于 request.get_host(...)
以检索 URL 应指向的当前主机。
当您的设置位于代理之后(或类似行为)时,您需要确保目标服务器知道原始主机源以便设置正确的 URL。查看get_host()
文档,它列出了为实现这一目标而必须设置的不同选项。
【讨论】:
感谢 Omab!我在 django 中设置了 USE_X_FORWARDED_HOST 设置并更改了 HTTP_X_FORWARDED_HOST 标头,它起作用了!应用服务出于某种原因从 Azure 网关中删除了标头,所以我不得不硬编码主机名,但至少它现在可以工作了。 当我使用 Debug=False 运行 django 时,这仍然失败。试图弄清楚为什么会这样以上是关于python social auth 更改引用地址的主要内容,如果未能解决你的问题,请参考以下文章
使用 django python-social-auth 重定向后会话值丢失
python-social-auth with Django: ImportError: No module named 'social_django'
在 python-social-auth 中从 google 和 facebook 检索个人资料图片