simpleauth is een eenvoudige authenticatie wrapper voor een Google App Engine app.
Ondersteunde specs:
& Nbsp; - OAuth 2.0
& Nbsp; - OAuth 1.0 (a)
& Nbsp; - OpenID
Ondersteunde providers uit de doos:
& 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, met behulp van App Engine gebruikers module API
Aan de slag
1. Installeer de bibliotheek op uw lokale Mac / PC met één van:
& Nbsp; a. "Easy_install -U simpleauth"
& Nbsp; b. "PIP simpleauth installeren"
& Nbsp; c. klonen de bron repo, bijvoorbeeld "Git clone git: //github.com/crhym3/simpleauth.git"
2. Plaats de submap genaamd "simpleauth" in uw app root.
3. U zult ook moeten python-oauth2 krijgen (PIP oauth2 installeren) en httplib2 (http://code.google.com/p/httplib2/)
3. Maak een behandelaar door subklassen SimpleAuthHandler, bv
& Nbsp; & nbsp; klasse AuthHandler (SomeBaseRequestHandler, SimpleAuthHandler):
& Nbsp; & nbsp; & nbsp; & nbsp; "" "Verificatie handler voor allerlei auth." ""
& Nbsp; & nbsp; & nbsp; & nbsp; def _on_signin (zelf, data, auth_info, provider):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "" "Terugbellen wanneer een nieuwe of bestaande gebruiker in te loggen.
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; gegevens is een gebruiker informatie woordenboek.
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; auth_info bevat access token of OAuth en geheim.
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Zie wat er in zit met logging.info (data, 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. Controleer of de gebruiker bestaat, bijv.
& 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. maak een nieuwe gebruiker als het niet
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # & Nbsp; & nbsp; & nbsp; Gebruiker (** data) .Zet ()
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; #
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # 3. teken in de gebruiker
& 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 ergens, bijvoorbeeld self.redirect ('/ profile')
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; #
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; # Zie meer over hoe je de bovenstaande stappen hier werken:
& 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 logout (zelf):
& 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 (zelf, provider):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; terug self.uri_for ('auth_callback', provider = provider, _full = True)
& Nbsp; & nbsp; & nbsp; & nbsp; def _get_consumer_info_for (zelf, provider):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "" "Moet terug een tupel (sleutel, geheim) voor auth init verzoeken.
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Voor OAuth 2.0 moet je ook een scope terugkeren, bijvoorbeeld
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ('Mijn app id', 'mijn app geheim', 'e-mail, user_about_me')
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; De scope depens uitsluitend op de aanbieder.
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Zie voorbeeld / secrets.py.template
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "" "
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; terug secrets.AUTH_CONFIG [provider]
Merk op dat SimpleAuthHandler is niet echt een behandelaar. Het is aan jou. Zo kan SomeBaseRequestHandler zijn webapp2.RequestHandler.
4. routing toevoegen zodat '/ auth / PROVIDER', '/ auth / aanbieder / callback' en '/ logout' verzoeken naar je AuthHandler.
& Nbsp; & nbsp; Bijvoorbeeld, in webapp2 je zou kunnen doen:
& Nbsp; & nbsp; # Map URL's om handlers
& Nbsp; & nbsp; routes = [
& Nbsp; & nbsp; & nbsp; & nbsp; Route ('/ auth /',
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; handler = 'handlers.AuthHandler: _simple_auth', naam = 'auth_login'),
& Nbsp; & nbsp; & nbsp; & nbsp; Route ('/ auth // callback',
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; handler = 'handlers.AuthHandler: _auth_callback', naam = 'auth_callback'),
& Nbsp; & nbsp; & nbsp; & nbsp; Route ('/ logout',
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; handler = 'handlers.AuthHandler: logout', naam = 'logout')
& Nbsp; & nbsp; ]
5. Dat is het. Bekijk een voorbeeld app in het voorbeeld dir.
Naar het voorbeeld app draaien, te kopiëren voorbeeld / secrets.py.template in bijvoorbeeld / secrets.py en lokaal start de app door het uitvoeren van run.sh
Wat is nieuw in deze release :
- CSRF bescherming voor OAuth 2.0 http://code.google.com/p/gae-simpleauth/issues/detail?id=1
- Aangepaste uitzonderingen http://code.google.com/p/gae-simpleauth/issues/detail?id=2
- Voorbeeld app verbeteringen, waaronder:
- CSRF guard
- toon uitzondering boodschappen voor demo doeleinden
- mooier output van sessie, profielgegevens en auth_info woordenboeken
- https://github.com/crhym3/simpleauth/issues/4
- https://github.com/crhym3/simpleauth/issues/5
- Meer nuttige info in README
Eisen
- Python
- oauth2
- LXML
- httplib2
Reacties niet gevonden