【问题标题】:Avoid Google oauth redirect to localhost on call from public server with nginx reverse proxy + docker setup使用 nginx 反向代理 + docker setup 避免从公共服务器调用 Google oauth 重定向到本地主机
【发布时间】:2019-08-17 22:32:21
【问题描述】:

我正在建立一个具有以下基础架构的技术博客:

Client <---domain.tld:80---> Nginx Reverse Proxy <---localhost:8001---> Docker container with Django web app

我在容器中使用 Gunicorn 作为 WSGI Web 服务器。

我面临的问题是,当我想在我的评论部分包含 Google 身份验证并调用我的相应 URI 进行身份验证(即http://domain.tld/auth/login/google-oauth2/)时,我从 google 收到以下错误:

请求中的重定向 URI http://localhost:8001/auth/complete/google-oauth2/ 与授权给 OAuth 客户端的不匹配。

所以主要问题是谷歌认为我希望重定向主机是本地主机,因为我的应用程序部署在本地主机上(并且只通过我的反向代理服务到互联网),但我当然需要它改为 domain.tld。

我没有找到一个选项,如果我可以明确告诉谷歌应该将流量重定向到,我只能授权 URI。

当然我尝试允许本地主机重定向访问,但显然这并没有帮助,因为谷歌重定向到本地主机 URI。

我的代码主要基于this blog postthis stackoverflow question

由于这主要是从我的服务器到 URL 的链接调用,我认为我的代码根本不应该有那么有用。

感谢您提供任何有用的反馈!

【问题讨论】:

  • “google 认为我希望重定向主机是 localhost”的原因是因为在您的应用程序的某个地方,这就是您告诉 Google 的内容。你需要深入了解你正在使用的 oauth 库,看看如何告诉它你的重定向 url 是什么。

标签: django python-3.x docker nginx google-oauth


【解决方案1】:

您可以使用serveo(或类似的服务 - ngrok 等)公开您的本地服务器,并通过它让 google 或其他 oauth 提供商回调。

你也可以忽略这个问题,在本地环境通过/admin登录。

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 1970-01-01
    • 2017-09-18
    • 2018-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    相关资源
    最近更新 更多