2013-06-14 10 views
8

Muszę sprawdzić token identyfikatora Google przekazany z urządzenia mobilnego w moim interfejsie API ASP.NET.Sprawdzanie poprawności tokenów identyfikatora Google w języku C#

Google ma pewien przykładowy kod here, ale bazuje na pakiecie JWT NuGet, który jest tylko .Net 4.5 (używam C#/.net 4.0). Czy ktoś jest świadomy jakichkolwiek próbek, które robią to bez tych pakietów lub osiągnęły to sam? Korzystanie z pakietu sprawia, że ​​bardzo trudno jest znaleźć to, czego potrzebuję bez niego.

+0

znalazłeś coś? Również chcę zrobić to offline przy użyciu C#, ponieważ czasami serwer Google reaguje bardzo wolno. – shashwat

Odpowiedz

1

Wyzwanie polega na sprawdzeniu poprawności certyfikatu JWT w tokenie ID. W tej chwili nie ma biblioteki, o której jestem świadomy, że może to zrobić, która nie wymaga .NET 4.5 i dopóki nie pojawi się rozwiązanie do sprawdzania poprawności JWT w .NET 4.0, nie będzie łatwego rozwiązania.

Jeśli jednak masz token dostępu, możesz sprawdzić poprawność wykonywania, używając oauth2.tokeninfo. Aby wykonać podstawowe walidacji za pomocą tokena informacji, można zrobić coś jak następuje:

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

Informacje wrócił z API Google OAuth2 powie Ci więcej informacji na temat danego tokenu, takie jak identyfikator klienta to zostało wydane zbyt także jako czas wygaśnięcia.

Uwaga Nie powinieneś omijać tokenu dostępowego, ale zamiast tego powinieneś wykonać tę kontrolę po wymianie jednorazowego kodu w celu odzyskania tokena dostępu.

+1

W rzeczywistości nie przekazuję tokena dostępu, tylko token identyfikatora. Potrzebuję tylko uwierzytelnienia użytkownika, a nie nawiązywania połączeń z Google apis. Sądziłem, że przekazywanie żetonów dostępu jest złym zwyczajem. Czy jest jakiś sposób, aby to zrobić za pomocą tokena identyfikatora? Dzięki – SeeNoWeevil

+0

Będę szukał sposobu na zrobienie tego bez użycia .NET 4.5, byłoby idealnie mieć rozwiązanie, które działa od 4.0 i wyżej. Ponadto, aby sprawdzić token dostępu, należy użyć jednorazowego kodu i wymienić go na token dostępu, a nie na to, jak przekazywać tokeny dostępu. – class

Powiązane problemy