在C#中validationGoogle ID令牌

我需要在ASP.NET web api上validation从移动设备传递的Google ID令牌。

Google在这里有一些示例代码,但它依赖的是JWT NuGet包,它只是.Net 4.5(我使用的是C#/ .Net 4.0)。 有没有人知道没有这些包装的任何样品或自己实现了这个? 使用该软件包使得很难找到没有它我需要做的事情。

根据这个github 问题 ,您现在可以使用GoogleJsonWebSignature.ValidateAsync方法来validationGoogle签名的JWT。 只需将idToken字符串传递给方法即可。

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

如果它不是有效的,它将返回null

请注意,要使用此方法,您需要直接安装Google.Apis.Auth nuget。

挑战在于validationID令牌中的JWT证书。 目前还没有一个我知道的库可以做到这一点,不需要.Net 4.5,直到.NET 4.0中有JWTvalidation的解决方案,就没有一个简单的解决方案。

但是,如果您有访问令牌,则可以使用oauth2.tokeninfo查看执行validation。 要使用令牌信息执行基本validation,您可以执行以下操作:

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

从Google OAuth2 API返回的信息会告诉您有关特定令牌的更多信息,例如发布的客户端ID以及过期时间。

注意您不应该传递访问令牌,而应该在交换一次性代码以检索访问令牌之后进行此检查。