2015-01-05 18 views
13

Tôi đã triển khai máy chủ oauth2 và máy khách oauth2 sử dụng bình-oauthlib.Thử nghiệm bình-oauthlib cục bộ mà không cần https

Khi tôi cố thử nghiệm cục bộ, máy khách trả về một InsecureTransportError và cho tôi biết rằng tôi nên sử dụng https.

Có cách nào để kiểm tra ứng dụng cục bộ mà không có https không?

Máy khách đang chạy trên 127.0.0.2 và000000 máy chủ đang chạy trên 127.0.0.1.

Cảm ơn

Trả lời

31

Từ http://requests-oauthlib.readthedocs.org/en/latest/examples/real_world_example.html:

Bạn nên lưu ý rằng OAuth2 hoạt động thông qua lớp SSL. Nếu máy chủ của bạn là không được tham số để cho phép HTTPS, phương thức fetch_token sẽ tăng oauthlib.oauth2.rfc6749.errors.InsecureTransportError. Hầu hết mọi người không đặt SSL trên máy chủ của họ trong khi kiểm tra và điều đó vẫn ổn. Bạn có thể vô hiệu hóa séc này theo hai cách:

  1. Bằng cách đặt biến môi trường.
export OAUTHLIB_INSECURE_TRANSPORT=1 
  1. Tương đương với ở trên, bạn có thể thiết lập này bằng Python (nếu bạn có vấn đề thiết lập các biến môi trường)
# Somewhere in webapp_example.py, before the app.run for example 
import os 
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1' 
+0

Cảm ơn. Hoạt động hoàn hảo. – user2483431

+3

tuyệt vời, nó sẽ được tốt đẹp nếu bạn sau đó chấp nhận câu trả lời :-) –

+0

Chỉ cần một bình luận, lỗi này, cũng như các giải pháp tương tự có thể xảy ra khi chạy trên gunicorn với nginx làm chấm dứt SSL. Giải pháp này khắc phục sự cố rằng thư viện bằng cách nào đó không chính xác mọi thứ trên http ... – mgmonteleone

5

Đối với OAuth1, bạn có thể thêm cài đặt

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

Đối với OAuth2 bạn có thể đặt trong biến môi trường.

export OAUTHLIB_INSECURE_TRANSPORT=1 

hoặc trong thời gian chạy

import os 
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1' 
Các vấn đề liên quan