19

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

+0

Controlla questo: http://stackoverflow.com/questions/18716674/facebook-login-in-google-cloud-endpoints/22495862#22495862 –

risposta

5

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.

+0

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) –

+1

Certo, puoi implementare qualsiasi alternativa desiderata e puoi passare i token dei tuoi sistemi tramite endpoint, ma dovrai implementare l'autenticazione da solo. – Tom

+1

il problema qui è come controllare la sessione utente, perché Google Endpoint non fornisce la sessione, giusto? –

7

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.

+0

Esiste un equivalente python? –

+0

@JanuszSkonieczny Non ho idea se sia disponibile o meno per Python, dovresti probabilmente fare una nuova domanda su SO – tomrozb

+0

qualcuno sa come inserire i dati nell'intestazione dal client Android? – myfknoll

2

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.