2013-06-14 6 views
8

Ich muss ein Google ID-Token validieren, das von einem Mobilgerät an meine ASP.NET-Web-API übergeben wurde.Google-ID-Token in C# validieren

Google haben einige Beispielcode here, aber es beruht auf einem JWT NuGet-Paket, das nur .NET 4.5 ist (ich verwende C# /. Net 4.0). Kennt jemand Samples, die dies ohne diese Pakete tun oder haben dies selbst erreicht? Die Verwendung des Pakets macht es sehr schwierig herauszufinden, was ich ohne das Paket machen muss.

+0

alles gefunden? Ich möchte es auch offline mit C# machen, weil der Server von Google manchmal sehr langsam reagiert. – shashwat

Antwort

1

Die Herausforderung besteht in der Validierung des JWT-Zertifikats im ID-Token. Es gibt derzeit keine Bibliothek, von der ich weiß, dass sie dies tun kann, die .Net 4.5 nicht benötigt und bis es eine Lösung für die JWT-Validierung in .NET 4.0 gibt, wird es keine einfache Lösung geben.

Wenn Sie jedoch über ein Zugriffstoken verfügen, können Sie die Überprüfung mit oauth2.tokeninfo überprüfen. Um grundlegende Validierung mit Token-Informationen durchführen, können Sie so etwas wie das folgende tun:

// 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. 
} 

Die Informationen aus dem Google OAuth2 API zurückgegeben erfahren Sie mehr Informationen zu einem bestimmten Token wie die Client-ID es auch auch ausgestellt wurde als seine Ablaufzeit.

Hinweis Sie sollten das Zugriffstoken nicht weitergeben, sondern sollten dies nach dem Austauschen eines einmaligen Codes zum Abrufen eines Zugriffstokens tun.

+1

Ich übergebe nicht wirklich das Access-Token, nur das ID-Token. Ich muss nur den Benutzer authentifizieren, keine Google Apis anrufen. Ich dachte, es sei eine schlechte Übung, Zugangstoken zu übergeben, gibt es eine Möglichkeit, dies nur mit dem ID-Token zu tun? Danke – SeeNoWeevil

+0

Ich werde weiterhin nach einer Möglichkeit dafür suchen, ohne .NET 4.5 zu verwenden, es wäre ideal, eine Lösung zu haben, die ab 4.0 funktioniert. Zum Validieren des Zugriffstokens möchten Sie den Einmalcode verwenden und ihn für das Zugriffstoken austauschen, anstatt die Zugriffstoken zu übergeben. – class