Validation des jetons Google ID en C #

Je dois valider un jeton d’identifiant Google transmis depuis un périphérique mobile depuis mon API Web ASP.NET.

Google a quelques exemples de code ici, mais il s’appuie sur un package JWT NuGet qui est uniquement .Net 4.5 (j’utilise C # /. Net 4.0). Est-ce que quelqu’un connaît des exemples qui le font sans ces paquets ou qui l’ont fait eux-mêmes? L’utilisation de l’emballage rend très difficile la tâche de déterminer ce que je dois faire sans.

Selon ce problème de github, vous pouvez maintenant utiliser la méthode GoogleJsonWebSignature.ValidateAsync pour valider un JWT signé par Google. idToken simplement la chaîne idToken à la méthode.

 var validPayload = await GoogleJsonWebSignature.ValidateAsync(idToken); Assert.NotNull(validPayload); 

Si ce n’est pas valide, il retournera null .

Notez que pour utiliser cette méthode, vous devez installer Google.Apis.Auth nuget de première main.

Le défi consiste à valider le certificate JWT dans le jeton ID. À ma connaissance, il n’existe actuellement aucune bibliothèque capable de faire cela sans nécessiter .Net 4.5 et tant qu’il n’existera pas de solution de validation JWT dans .NET 4.0, il n’y aura pas de solution facile.

Cependant, si vous avez un jeton d’access, vous pouvez envisager d’effectuer une validation à l’aide de oauth2.tokeninfo . Pour effectuer une validation de base à l’aide d’informations de jeton, vous pouvez effectuer les opérations suivantes:

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

Les informations renvoyées par l’API Google OAuth2 vous fournissent davantage d’informations sur un jeton particulier, tel que l’identifiant du client pour lequel il a été émis ainsi que son heure d’expiration.

Remarque Vous ne devez pas contourner le jeton d’access, mais plutôt effectuer cette vérification après avoir échangé un code à utilisation unique pour récupérer un jeton d’access.