android – 如何正确验证Google令牌的完整性?

android – 如何正确验证Google令牌的完整性?,第1张

概述我正在尝试通过他们的Google帐户安全地登录用户. 我正处于使用 this cordova插件检索userID和oAuthToken的阶段. 现在,我需要将这些凭据发送到我的服务器,然后在服务器端验证令牌完整性.基本上我正在尝试执行this部分流程. 我很困惑,我应该尝试使用Google客户端API验证哪个令牌.我应该使用userID还是oAuthToken? 文档提到验证用户ID,但我发现这 我正在尝试通过他们的Google帐户安全地登录用户.
我正处于使用 this cordova插件检索userID和oAuthToken的阶段.

现在,我需要将这些凭据发送到我的服务器,然后在服务器端验证令牌的完整性.基本上我正在尝试执行this部分流程.

我很困惑,我应该尝试使用Google客户端API验证哪个令牌.我应该使用userID还是oAuthToken?

文档提到验证用户ID,但我发现这很奇怪.这不意味着,如果有人获得我的用户ID,他们可以基本上闯入我的服务器?用户ID永远不会改变(如果我在这里错了,请纠正我)所以对此进行验证似乎不安全.验证设置为过期的oAuthToken是不是更有意义?或者用户ID是否也会过期?

任何的建议都受欢迎.

谢谢,

编辑:

对任何感兴趣的人由于不完全理解Google Api可以返回的三个令牌,我产生了混乱:userID,oAuthToken和IDToken.
简而言之:返回userID,其中大多数API调用标识用户.这似乎是不变的.当我访问谷歌API作为AndroID客户端时,我的案例中的oAuthToken被返回.访问API作为Web客户端时返回tokenID.因此,那些希望使用移动检索令牌进行服务器端验证的人应该将API作为Web客户端访问.然后,返回的令牌可以使用类似于下面接受的答案的代码在服务器端验证.

解决方法 你需要验证IDToken,永远不要在开放的行上发送userID. IDToken迅速到期,它几乎无法用于暴力冒充攻击.

此PHP片段接收以IDtoken =开头的http请求,验证您的令牌服务器端并返回完整的数组或用户电子邮件:

<?PHP$inputRaw =  file_get_contents('PHP://input');$IDToken= substr($inputRaw,8);$fp = fopen('twoStepOutput.txt','a');$url = 'https://www.GoogleAPIs.com/oauth2/v3/tokeninfo?ID_token='.$IDToken;$ch = curl_init($url);curl_setopt($ch,CURLOPT_POST,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$xml);curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);$response = curl_exec($ch);$Json = Json_decode($response,true);curl_close($ch);$userEmail = $Json["email"];$clIEntID = $Json["azp"];//fwrite($fp,date("YmdHis")."\r\n$IDToken\r\n");fwrite($fp,date("YmdHis")."\r\n");fwrite($fp,"email Confirmed by Google:[$userEmail]\r\n");//print_r($Json); // returns array console readableprint_r($clIEntID); // returns Google clIEnt ID for verification (without transfering user data)fclose($fp);?>

万一你怀疑,这就是IDToken的样子:

eypZCI6OiJsUzI1JhbGciNIISImtIjk4MzQxMzgyMWJmMzhiNTJlM4OTI2YTllMTc0YTc5MWMwNGMifQ.eyJpc3MiOi3VizExYJhY2NvDW50cy5nb29nbGUuY29tIiwicmeIjoiMTAzNDUyNjAwODM5NzY3MjU2MDE0IiwiYXpwIjoiMTA3OTMxMTEyNTc1OS1lYWJhbWV0b2ZldjIwY28zbGQ5b2o1YWQwMzFuZG9nMC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImVtYWlsIjoIDG9ueWdpbGJyQGdtYWlsLmNvbSIsImF0X2hhc2giOiJaSkhxbUZHcnR5Y29kdEhhOGJvMEYWY1NTk2NzUsImV4cCVBIiwiZW1haWxfdmVyaWZpZWQiOnRyDWUsImF1ZCI6IjEwNzkzMTExMjU3NTkt1ldG9mZXYyMGNvM2xkOW9qNWFkMDMxbmRvZzAuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iLCJpYXQiOjE0MzZWFiI6MTQzNjU2MzI3NSwibmFtZSI6IlRvbnkgR2lsIiwicGljdHVyZSI6Imh0dHBzOi8vbGg0Lmdvb2dsZXVzZXJjb250ZW50LmNvbS8tQVREckRSbF9UdFEvQUFBQUFBQUFBQUkvQUFBQUFBQUFBRncvOVdDQnZkYlpUTEEvczk2LWMvcGhvdG8uanBnIiwiZ2l2ZW5fbmFtZSI6IlRvbnkiLCJmYW1pbHlfbmFtZSI6IkdpbCIsImxvY2FsZSI6ImVuIn0.L4peW11TD0bDolvYKNY60IEZ1sbZfW9gEImcuxVA5f9U_4N49Io1CFXoGKmEPR_ij4q38tF2drPMOKijQePwlrxDui37ubzAdVkuksCJUobzjD1_eccF_8GldP5Y1_XsU8xrZeEnfabfiYpr-VwolzIENNUdy9SUbUWjMHNcvf4dGFMzE_SONHr57igjHK3rGkbvLo-UduFngm3e- EL0YR2zOKOVj1Qs8g8_qpWgkn8XABTme1thmuU8OfC-HaF9_B2Zk2UCsnOu4APIYZk3DPIKgeX6AF11kYnzgvciYheWeddly0foT4G00C7w_wgtd-LSRw0XZltec_MPMa2QSA

总结

以上是内存溢出为你收集整理的android – 如何正确验证Google令牌的完整性?全部内容,希望文章能够帮你解决android – 如何正确验证Google令牌的完整性?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1130500.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存