2015-01-05 15 views
13

Zaimplementowałem serwer oauth2 i klienta oauth2 za pomocą flask-oauthlib.Testowanie kolby-oauthlib lokalnie bez https

Kiedy próbuję przetestować lokalnie, klient zwraca błąd InsecureTransportError i informuje mnie, że powinienem używać protokołu HTTPS.

Czy istnieje sposób na przetestowanie aplikacji lokalnie bez https?

Klient działa w wersji 127.0.0.2:5000, a serwer działa w wersji 127.0.0.1:5000.

Dzięki

Odpowiedz

31

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

Należy pamiętać, że OAuth2 działa poprzez warstwy SSL. Jeśli twój serwer jest nie parametryzowany, aby umożliwić HTTPS, metoda fetch_token spowoduje zwiększenie oauthlib.oauth2.rfc6749.errors.InsecureTransportError o . Większość ludzi nie ustawia SSL na swoim serwerze podczas testowania i to jest w porządku. Można wyłączyć ten czek na dwa sposoby:

  1. Poprzez ustawienie zmiennej środowiskowej.
export OAUTHLIB_INSECURE_TRANSPORT=1 
  1. Odpowiednik powyżej można ustawić to w Pythonie (jeśli masz problemy z Ustawianie zmiennych środowiskowych)
# Somewhere in webapp_example.py, before the app.run for example 
import os 
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1' 
+0

Dzięki. Działa świetnie. – user2483431

+3

świetnie, byłoby miło, gdybyś następnie zaakceptował odpowiedź :-) –

+0

Tylko komentarz, ten sam błąd, a także to samo rozwiązanie może się zdarzyć, gdy uruchomiony na gunicorn z nginx robi zakończenie SSL. To rozwiązanie naprawia problem, że biblioteka w jakiś sposób niepoprawnie rzeczy na http ... – mgmonteleone

5

Dla OAuth1 można dodać ustawienie

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

Dla OAuth2 można ustawić w zmiennej środowiskowej.

export OAUTHLIB_INSECURE_TRANSPORT=1 

lub w czasie wykonywania

import os 
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1'