2015-01-05 6 views
13

Ho implementato un server oauth2 e un client oauth2 usando flask-oauthlib.Test di flask-oauthlib localmente senza https

Quando provo a eseguire il test localmente, il client restituisce un messaggio InsecureTransportError e mi informa che dovrei utilizzare https.

C'è un modo per testare l'app localmente senza https?

Il client è in esecuzione su 127.0.0.2:5000 e il server è in esecuzione su 127.0.0.1:5000.

Grazie

risposta

31

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

Si dovrebbe notare che OAuth2 opera attraverso strato di SSL. Se il tuo server è non parametrizzato per consentire HTTPS, il metodo fetch_token solleverà un messaggio di posta elettronica oauthlib.oauth2.rfc6749.errors.InsecureTransportError. La maggior parte delle persone non imposta SSL sul proprio server durante il test e va bene. È possibile disabilitare questo controllo in due modi:

  1. Impostando una variabile di ambiente.
export OAUTHLIB_INSECURE_TRANSPORT=1 
  1. Equivalente sopra è possibile impostare questo in Python (se avete problemi di impostazione variabili d'ambiente)
# Somewhere in webapp_example.py, before the app.run for example 
import os 
os.environ['OAUTHLIB_INSECURE_TRANSPORT'] = '1' 
+0

Grazie. Funziona perfettamente. – user2483431

+3

ottimo, sarebbe bello se accettassi la risposta :-) –

+0

Solo un commento, questo stesso errore, così come può accadere la stessa soluzione quando si esegue gunicorn con nginx che esegue la terminazione SSL. Questa soluzione risolve il problema che la libreria in qualche modo erroneamente si trova su http ... – mgmonteleone

5

Per OAuth1 è possibile aggiungere l'impostazione

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

Per OAuth2 è possibile impostare la variabile di ambiente.

export OAUTHLIB_INSECURE_TRANSPORT=1 

o in fase di esecuzione

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