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'

social-auth-app-django

在 python-social-auth 中从 google 和 facebook 检索个人资料图片

Python Social Auth Django 模板示例

通过访问令牌进行的 Python Social auth 身份验证失败