在 Flask + Google App Engine 上启用 SSL

Posted

技术标签:

【中文标题】在 Flask + Google App Engine 上启用 SSL【英文标题】:Enabling SSL on Flask + Google App Engine 【发布时间】:2017-08-28 13:41:15 【问题描述】:

我正在尝试在我的 Flask/Google App Engine 网络应用中实现一些 Google API。

我目前停留在身份验证部分,因为 oauth2 重定向 URI 要求连接是安全的,而我无法使用 Flask 执行此操作,因为它是启动我的烧瓶应用程序的 GAE 环境,我无法按照 Flask 文档中的建议进行操作@ 987654321@

您知道如何在由 Google App Engine 运行的 Flask 应用程序上实施 HTTPS 吗?

【问题讨论】:

您在哪个环境中?标准还是灵活? 除了灵活或标准之外,您使用的是自定义域还是提供的appspot.com域? 标准环境,appspot 域 见下面的建议 【参考方案1】:

除了贾斯汀的答案在灵活的运行时适用于应用程序引擎应用程序之外,在您的 app.yaml 文件中的 url 处理程序上使用 secure 选项或属性可能会“更简单”,因为您是以标准运行。

例如:

- url: .*
  script: main.app  # the flask app handling requests
  secure: always

这将强制所有请求在 apppot 域上使用 https。

请注意,如果您决定稍后添加自定义域,则需要自己提供有效的 https 证书才能正确处理 https

【讨论】:

谢谢,完成了这项工作。但现在的问题是我无法在开发环境中对其进行测试,正如here 所说,在开发 Web 服务器中忽略了安全连接。任何想法如何做到这一点?在身份验证过程中调试后续步骤变得非常痛苦 你不应该在开发环境中遇到问题。重定向 uri 也适用于 localhost。 imgur.com/YZ6p0aQ 如果我使用 localhost,这是我在 localhost:8080 上点击重定向 URI 时收到的消息:抱歉,意外错误:(insecure_transport) OAuth 2 必须使用 https。 你可能做错了什么:通常应该是http://localhost:8080developers.google.com/identity/protocols/… 我不知道为什么,但是现在 localhost 它可以按照您的指示工作。可能我只需要检查我的代码【参考方案2】:

您需要使用基于 x-forwarded-proto 标头强制重定向的库。看看这个:

https://github.com/GoogleCloudPlatform/flask-talisman

【讨论】:

以上是关于在 Flask + Google App Engine 上启用 SSL的主要内容,如果未能解决你的问题,请参考以下文章

使用 Google App Engine 时无法导入 Flask

与 Google App Engine 和 Flask 一起使用时,Angular 路由不起作用

如果Flask应用程序在Google App Engine中不可用,如何提供默认错误页面

在 Google App Engine 上运行 Alembic 迁移

Python Flask:从 Swagger YAML 到 Google App Engine?

将简单的 Socket.io Flask 应用程序部署到 Google App Engine:仍未解决