Esiste un modo per utilizzare un altro fornitore OAuth2 con Google Cloud Endpoint? Intendo, ad esempio, ottenere l'autenticazione da Facebook e utilizzarla nello stesso modo in cui utilizziamo l'autenticazione dell'account Google (utilizzando gapi js e mettendo la classe utente su @ApiMethod
)Google Cloud Endpoint con un altro fornitore oAuth2
risposta
No. Mi sono imbattuto in qualcun altro che ha fatto questa domanda e la risposta dal google folk (se ricordo bene) era che l'autenticazione utente degli endpoint attualmente supporta solo gli account Google.
Esiste un modo per implementare un'alternativa? Ti piace memorizzare l'utente nella sessione? (Ho appena scoperto che la sessione non funziona anche in Google Cloud Endpoint) –
Certo, puoi implementare qualsiasi alternativa desiderata e puoi passare i token dei tuoi sistemi tramite endpoint, ma dovrai implementare l'autenticazione da solo. – Tom
il problema qui è come controllare la sessione utente, perché Google Endpoint non fornisce la sessione, giusto? –
ho scritto un esempio lo scambio di un token di accesso di Facebook per un generato da mia domanda, e la convalida da all'interno di un metodo endpoint:
https://github.com/loudnate/appengine-endpoints-auth-example
Bisogna implementare il proprio Authenticator
e aggiornare la configurazione @Api
. Sulla base di questa answer un semplice autenticatore sarà simile a questa:
public class MyAuthenticator implements Authenticator {
@Override
public User authenticate(HttpServletRequest request) {
String token = request.getHeader("Authorization");
if (token != null) {
// apply your Facebook/Twitter/OAuth2 authentication
String user = authenticate(token);
if (user != null) {
return new User(user);
}
}
return null;
}
}
E la tua API definizione
@Api(name = "example", authenticators = {MyAuthenticator.class})
più su autenticatori personalizzati si possono trovare in Google documentation.
Google Cloud Endpoint consente di ripristinare User, HttpServletRequest e HttpServletContext nei propri metodi API immettendoli come parametri.
Non è OAuth2 ma qui è un inizio di una soluzione: https://www.yanchware.com/custom-authentication-for-google-cloud-endpoints/
La soluzione proposta è di iniettare HttpServletRequest in metodi API specifiche per accedere alla sessione.
Controlla questo: http://stackoverflow.com/questions/18716674/facebook-login-in-google-cloud-endpoints/22495862#22495862 –