45

我已经使用flask-oauthlib 实现了一个oauth2 服务器和一个oauth2 客户端。

当我尝试在本地进行测试时,客户端返回一个 InsecureTransportError 并告诉我应该使用 https。

有没有办法在没有 https 的情况下在本地测试应用程序?

客户端在 127.0.0.2:5000 上运行,服务器在 127.0.0.1:5000 上运行。

谢谢

4

3 回答 3

93

来自http://requests-oauthlib.readthedocs.org/en/latest/examples/real_world_example.html

您应该注意 Oauth2 通过 SSL 层工作。如果您的服务器未参数化以允许 HTTPS,则 fetch_token 方法将引发 oauthlib.oauth2.rfc6749.errors.InsecureTransportError 。大多数人在测试时不会在他们的服务器上设置 SSL,这很好。您可以通过两种方式禁用此检查:

  1. 通过设置环境变量。
export OAUTHLIB_INSECURE_TRANSPORT=1
  1. 相当于上面你可以在 Python 中设置它(如果你在设置环境变量时遇到问题)
# Somewhere in webapp_example.py, before the app.run for example
import os 
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'
于 2015-01-05T18:44:18.517 回答
26

对于 OAuth1,您可以添加设置

app.config.update({
    'OAUTH1_PROVIDER_ENFORCE_SSL': False
})

对于 OAuth2,您可以在环境变量中进行设置。

export OAUTHLIB_INSECURE_TRANSPORT=1

或在运行时

import os
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'
于 2015-11-03T07:59:22.483 回答
12

对于 Authlib 用户:

export AUTHLIB_INSECURE_TRANSPORT=1

或者,如果您想以编程方式设置它:

import os

os.environ['AUTHLIB_INSECURE_TRANSPORT'] = '1'

我知道它没有回答这个问题,但每次我向谷歌询问它时,我都会进入这个页面。

于 2019-05-31T08:29:33.283 回答