simpleauth è un semplice involucro di autenticazione per un app Google App Engine.
Spec supportati:
& Nbsp; - OAuth 2.0
& Nbsp; - OAuth 1.0 (a)
& Nbsp; - OpenID
Provider supportati fuori dalla scatola:
& Nbsp; - Google (OAuth 2.0)
& Nbsp; - Facebook (OAuth 2.0)
& Nbsp; - Windows Live (OAuth 2.0)
& Nbsp; - Twitter (OAuth 1.0a)
& Nbsp; - LinkedIn (OAuth 1.0a)
& Nbsp; - OpenID, utilizzando App Engine modulo utenti API
Per iniziare
1. Installare la libreria sul vostro Mac / PC locale con uno di:
& Nbsp; a. "Easy_install -U simpleauth"
& Nbsp; b. "PIP installazione simpleauth"
& Nbsp; c. clonare il repo di origine, ad esempio "Clone git git: //github.com/crhym3/simpleauth.git"
2. Posizionare la sottocartella denominata "simpleauth" nella radice app.
3. Avrete anche bisogno di ottenere python-oauth2 (Pip installare oauth2) e httplib2 (http://code.google.com/p/httplib2/)
3. Creare un gestore di richiesta di sottoclasse SimpleAuthHandler, ad esempio,
& Nbsp; & nbsp; Classe AuthHandler (SomeBaseRequestHandler, SimpleAuthHandler):
& Nbsp; & nbsp; & nbsp; & nbsp; "" "Gestore di autenticazione per tutti i tipi di auth." ""
& Nbsp; & nbsp; & nbsp; & nbsp; def _on_signin (self, dati, auth_info, provider):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "" "Richiamata ogni volta che un utente nuovo o esistente viene login.
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; dati è un dizionario informazioni utente.
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; auth_info contiene token di accesso OAuth o gettone e segreto.
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Vedere ciò che è in esso con logging.info (dati, auth_info)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "" "
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; auth_id = auth_info ['id']
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # 1. verificare se l'utente esiste, ad esempio,
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # & Nbsp; & nbsp; & nbsp; User.get_by_auth_id (auth_id)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; #
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # 2. Creare un nuovo utente, se non lo fa
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # & Nbsp; & nbsp; & nbsp; User (** dati) .Put ()
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; #
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # 3. segno l'utente
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # & Nbsp; & nbsp; & nbsp; self.session ['_ user_id'] = auth_id
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; #
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # 4. redirect da qualche parte, per esempio self.redirect ('/ profile')
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; #
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Vedere di più su come lavorare i passaggi precedenti qui:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Http://webapp-improved.appspot.com/api/webapp2_extras/auth.html
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Http://code.google.com/p/webapp-improved/issues/detail?id=20
& Nbsp; & nbsp; & nbsp; & nbsp; def disconnessione (self):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.auth.unset_session ()
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.redirect ('/')
& Nbsp; & nbsp; & nbsp; & nbsp; def _callback_uri_for (self, provider):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; self.uri_for ('auth_callback', provider = fornitore, _Full = True) ritorno
& Nbsp; & nbsp; & nbsp; & nbsp; def _get_consumer_info_for (self, provider):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "" "Dovrebbe restituire una tupla (chiave, segreta) per le richieste di init auth.
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Per OAuth 2.0 si dovrebbe anche restituire un ambito, ad esempio,
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ('Il mio id app', 'il mio segreto app', 'e-mail, user_about_me')
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; L'ambito depens esclusivamente sul fornitore.
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Vedere l'esempio / secrets.py.template
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "" "
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ritorno secrets.AUTH_CONFIG [fornitore]
Si noti che SimpleAuthHandler non è un gestore di richiesta reale. Sta a te. Ad esempio, potrebbe essere SomeBaseRequestHandler webapp2.RequestHandler.
4. Aggiungere il routing in modo che '/ auth / provider', '/ auth / PROVIDER / callback' e '/ logout' richieste vanno al AuthHandler.
& Nbsp; & nbsp; Ad esempio, in webapp2 si potrebbe fare:
& Nbsp; & nbsp; # Carta URL a gestori
& Nbsp; & nbsp; percorsi = [
& Nbsp; & nbsp; & nbsp; & nbsp; Percorso ('/ auth /',
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; handler = 'handlers.AuthHandler: _simple_auth', name = 'auth_login'),
& Nbsp; & nbsp; & nbsp; & nbsp; Percorso ('/ auth // callback',
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; handler = 'handlers.AuthHandler: _auth_callback', name = 'auth_callback'),
& Nbsp; & nbsp; & nbsp; & nbsp; Percorso ('/ logout',
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; handler = 'handlers.AuthHandler: il logout', 'disconnessione' name =)
& Nbsp; & nbsp; ]
5. Questo è tutto. Vedere una applicazione di esempio nell'esempio dir.
Per eseguire l'esempio app, copiare esempio / secrets.py.template in esempio / secrets.py e avviare l'applicazione a livello locale eseguendo run.sh
Cosa c'è di nuovo in questa versione :
- protezione CSRF per OAuth 2.0 http://code.google.com/p/gae-simpleauth/issues/detail?id=1
- eccezioni personalizzate http://code.google.com/p/gae-simpleauth/issues/detail?id=2
- miglioramenti Esempio app, tra cui:
- protezione CSRF
- Mostra messaggi di eccezione a fini dimostrativi
- uscita più bella della sessione, i dati del profilo e auth_info dizionari
- https://github.com/crhym3/simpleauth/issues/4
- https://github.com/crhym3/simpleauth/issues/5
- informazioni più utili in README
Requisiti :
- Python
- oauth2
- lxml
- httplib2
I commenti non trovato