python 社交身份验证更改引荐地址

python social auth change referrer address

我有一个 Azure 应用程序网关(比方说 example.com),在它后面我有一些 Azure 应用服务(example1.com、example2.com 等)。

我正在使用 python 社交身份验证来验证我的 Django 应用程序。问题是,当我从 example.com 单击登录并将该请求转发到 example1.com 时,登录请求发生在 example1.com。

如果我将 OAuth 回调地址指定为

example.com/complete/azuread-oauth2,

example1.com/complete/azuread-oauth2, and

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 后面吗?

python-social-auth Django 策略使用 request.build_absolute_uri(...) method, which depends on request.get_host(...) 来检索 URL 应该指向的当前主机。

当您的设置位于代理之后(或表现类似)时,您需要确保目标服务器知道原始主机源以便设置正确的 URL。查看 get_host() 文档,它列出了必须设置的不同选项才能实现。