python社交认证更改引用地址

时间:2019-03-20 00:53:58

标签: django azure azure-web-app-service python-social-auth django-socialauth

我有一个Azure应用程序网关(例如example.com),其后还有一些Azure App Services(example1.com,example2.com等)。

我正在使用python社交身份验证来验证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 个答案:

答案 0 :(得分:1)

python-social-auth Django策略使用request.build_absolute_uri(...)方法,该方法依赖于request.get_host(...)来检索URL应指向的当前主机。

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