7

Recentemente ho iniziato con Google App Engine. Intendo usare Flask per servire le pagine Web e l'API Endpoints, preferibilmente con Endpoint-Proto-Datastore per tutto il resto.Google App Engine: autenticazione endpoint quando viene utilizzata l'autenticazione personalizzata o Open ID

Fin dall'inizio, i meccanismi di Autenticazione non Google su GAE sembrano aver bisogno di un po 'di lavoro. Apprezzerei tutto a far luce sui problemi che ho trovato finora:

autenticazione personalizzato

Se è possibile scrivere un provider Open ID come parte dell'applicazione, usare qualcosa come Python-OpenID e anche implementare un consumatore nello stesso flusso di lavoro in modo che appaia come un accesso regolare. In questo modo si integra perfettamente in ciò che fornisce l'API degli utenti GAE. Sto indovinando se questo è fatto bene, users.get_current_user() funzionerà bene.

Se si desidera ignorare la scrittura del proprio provider OpenID e invece scrivere un sistema di autenticazione di email/password utilizzando Flask-Login che si integra con NDB, anche questo va bene. Tuttavia, una sconcertante 'di informazioni in GAE documentation dice che posso istanziare un oggetto utente in questo modo:

user = users.User("[email protected]")

Tuttavia, (non c'è user.put() metodo qui) un users.get_current_user() restituisce ancora nessuno. Quindi quale sarebbe l'uso di costruire l'oggetto utente?

Endpoint Autorizzazione

Su tra cui un utente = richiesto nel metodo di decoratore per un endpoint-Proto-Datastore laminati API, OAuth sembra funzionare subito - tutto quello che dovete fare mentre testarlo nelle API explorer è quello di attivare lo switch OAuth 2.0 e selezionare un ambito Oauth 2.0 valido. Questo significa che se implementiamo un provider OpenID che si integra correttamente con l'API Users, non sarà sufficiente utilizzare la magia OAuth dell'API Endpoint?

Anche qui sembra che la costruzione di un oggetto utente non aiuti a soddisfare i requisiti di autenticazione.

In che modo un'autenticazione personalizzata/un'altra implementazione OpenID funzionano con l'autenticazione/l'autorizzazione dell'API Endpoint?

+0

Ottima domanda. Voglio fare più o meno la stessa cosa: implementare un tipo di autenticazione "di base" con nome utente/token. Provato con un servletFilter, ma sembra che servletFilters non lavori con/_ah/api-URL. – icyerasor

risposta

5

Non volevo utilizzare oAuth, ma una forma più semplice di autenticazione con utente/token.

Quindi quello che ho fatto è creare un ServletFilter personalizzato che mappa in/_ah/spi/* e intercetta le informazioni di accesso da HTTPServletRequest lì, se si tratta di una richiesta API Endpoint.

Sembra funzionare fino ad ora, ma non sono proprio sicuro se questa è la strada da percorrere. Ma dato che non ho trovato esempi per non-OAuth-Auth ovunque, questo è attualmente il mio miglior scatto.

Mi piacerebbe avere alcuni suggerimenti di best practice da @bossylobster o @Dan Holevoet.

Problemi correlati