Ant*_*pos 12 security android oauth google-authentication node.js
我正在尝试将Android平台的移动应用程序验证为自定义node.js服务器api.我想使用Google OAuth2令牌而不是推出自己的身份验证,因为安装了Google Play的Android设备可以让应用开发者使用它.我正在使用此处GoogleAuthUtil.getToken记录的Google Play服务库中的来电.我正在尝试遵循这个Android开发者博客帖子中提出的建议
getToken在我的情况下,该方法返回一个长857字节的字符串.如果我尝试将此令牌传递给Google的TokenInfo端点,则会返回:
{'error':'invalid_token','error_description':'无效值'}
我在这做错了什么?在getToken调用的"范围"中,我发送:
audience:server:client_id:**i_put_my_clientid_here**.我为"已安装的应用程序"生成了一个clientid.使用此客户端ID,对getToken的调用根本不起作用.当我为"服务帐户"生成客户端ID时,调用成功,但是如上所述,当传递给TokenInfo端点时,我得到一个857字节的令牌失败.
编辑:我还为"Web应用程序"创建了一个客户端ID,因为它似乎是在调用时使用的正确客户端ID getToken.但行为是一样的,我得到一个857字节的令牌,在调用谷歌的终端时不会验证.
如何在Android上使用Google Play服务正确获取有效的身份验证令牌?一旦我有了正确的令牌,什么是正确的node.js库来验证服务器端?我可以使用passport-google-oauth吗?
如果只是想读取返回的数据内容GoogleAuthUtil.getToken那么过程就很简单了。返回的数据只是一个 JWT。因此,您所要做的就是按字符拆分数据.,然后对每个部分进行 Base64 (url) 解码。
如果您想验证消息的真实性,事情会变得稍微复杂一些。只需使用您最喜欢的加密库即可进行验证。JWT 的第三个组成部分是数据签名,并且Google 证书是公开的;这就是验证消息所需的全部内容。
| 归档时间: |
|
| 查看次数: |
7054 次 |
| 最近记录: |