首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在GAE上运行Go中验证Google登录令牌的包

在GAE上运行Go中验证Google登录令牌的包
EN

Stack Overflow用户
提问于 2016-04-17 14:14:34
回答 1查看 2.1K关注 0票数 18

我已经在我的web服务器上成功地收到了我的Android应用程序在GAE上运行的Go上的谷歌登录令牌。我不希望使用

代码语言:javascript
复制
https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=XYZ123

因为它有延迟和潜在的网络错误的问题,在谷歌登录集成指导页面警告。因此,我找到了使用Google客户端库进行Go的方法,我发现

代码语言:javascript
复制
https://github.com/google/google-api-go-client/blob/master/GettingStarted.md

我发现,比Java客户端库更复杂的是,我只需要调用GoogleIdTokenVerifier方法或verify_id_token函数,就可以获得在安卓应用程序上注册的谷歌用户的信息。我不确定我是否会走向正确的方向。请指导我如何验证从Android应用程序收到的谷歌登录令牌。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-30 03:09:03

我最近也遇到了这个问题,并找到了两个解决办法。

但在此之前,您需要了解python(或其他推荐的客户端库)库的功能。

  1. 它按https://www.googleapis.com/oauth2/v2/certs来获取rsa公钥数组。
  2. 解码令牌。
  3. 使用解码令牌中的“field”(密钥id)字段生成用于匹配RSA公钥的pem密钥。
  4. 使用pem键验证令牌的签名(在jwt令牌中的第二个点之后)。

现在有两种解决办法:

  1. 使用官方oauth库"google.golang.org/api/oauth2/v2“ getTokenInfo(idToken字符串) (*oauth2.Tokeninfo,error) { oauth2Service,err := oauth2.New(&http.Client{}),如果err != nil {idToken nil,err } tokenInfoCall := oauth2Service.Tokeninfo() tokenInfoCall.IdToken(idToken)返回tokenInfoCall.Do() } 通过Tokeninfo,您可以验证受众(tokenInfo.Audience)和发布到(tokenInfo.IssuedTo)是否有效。以及其他你想要检查的参数。但是戈朗的官方图书馆并没有遵循我前面提到的过程。它访问www.googlevis.com/oAuth2/v2/ tokeninfo来生成令牌信息(而不是www.googlevis.com/OAuth2/v3/tokeninfo)。v2没有给出像"name“这样的字段,但是每个字段,包括您需要验证令牌的电子邮件。
  2. 使用GoogleIdTokenVerifier库,它是python库的一个端口。

要提高进程的效率,您可以做的是缓存证书和pem。除非有新的“孩子”出现,否则不要点击网址。

做基准测试,检查哪种方法更快。当您使用网络获取证书时,延迟可能是错误的。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36677658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档