2013-06-14 5 views
8

Ho bisogno di convalidare un token ID Google passato da un dispositivo mobile sul mio ASP web di ASP.NET.Convalida dei token ID Google in C#

Google ha qualche codice di esempio here ma si basa su un pacchetto NuGet JWT che è solo su .Net 4.5 (sto usando C# /. Net 4.0). Qualcuno è a conoscenza di eventuali campioni che lo fanno senza questi pacchetti o ha raggiunto questo da soli? L'uso del pacchetto rende molto difficile capire cosa devo fare senza di esso.

+0

trovato qualcosa? Voglio anche farlo offline usando C# perché a volte il server di Google risponde molto lentamente. – shashwat

risposta

1

La richiesta è la convalida del certificato JWT nel token ID. Al momento non esiste una libreria che sia a conoscenza di ciò che non richiede .Net 4.5 e finché non ci sarà una soluzione per la validazione JWT in .NET 4.0, non ci sarà una soluzione facile.

Tuttavia, se si dispone di un token di accesso, è possibile esaminare l'esecuzione della convalida utilizzando oauth2.tokeninfo. Per eseguire la convalida di base utilizzando informazioni di token, si può fare qualcosa di simile al seguente:

// Use Tokeninfo to validate the user and the client. 
var tokeninfo_request = new Oauth2Service().Tokeninfo(); 
tokeninfo_request.Access_token = _authState.AccessToken; 
var tokeninfo = tokeninfo_request.Fetch(); 
if (userid == tokeninfo.User_id 
    && tokeninfo.Issued_to == CLIENT_ID) 
{ 
    // Basic validation succeeded 
} 
else 
{ 
    // The credentials did not match. 
} 

Le informazioni restituite dalle API di Google OAuth2 si dice di più informazioni su una particolare pedina come l'ID cliente è stato rilasciato troppo oltre come il suo tempo di scadenza.

Nota Non si dovrebbe essere di passaggio intorno al token di accesso, ma invece dovrebbe fare questo controllo dopo lo scambio di un codice di un tempo per recuperare un token di accesso.

+1

In realtà non passo il token di accesso, solo il token ID. Ho solo bisogno di autenticare l'utente, non di chiamare nessuna apis di Google. Ho pensato che fosse una cattiva pratica passare i token di accesso in giro, c'è un modo per farlo con solo il token ID? Grazie – SeeNoWeevil

+0

Continuerò a cercare un modo per farlo senza utilizzare .NET 4.5, sarebbe ideale avere una soluzione che funzioni dalla 4.0 in su. Inoltre, per la convalida del token di accesso, ciò che si vorrebbe fare è utilizzare il codice monouso e scambiarlo per il token di accesso anziché passare i token di accesso in giro. – class