java获取Google安全网的密钥
试图阻止根设备运行我的应用程序
我想做的是验证我在应用程序上使用安全网api获得的签名认证的签名:
SafetyNet.getClient(context).attest(byteArrayNonce, "MYAPIKEY")
.addOnSuccessListener {
我已通过谷歌api调用成功验证收到的jwt签名:
https://www.googleapis.com/安卓check/v1/attestations/verify?key=${safetyAPIKey}
(请求正文中带有signedAttestation)
一切都很好,谷歌告诉我验证成功了,但这项服务只是为了测试,我应该能够在我的服务器上验证签名。据我所知,为了验证jwt签名,我需要一个公钥。我使用https://www.npmjs.com/package/jws
我应该像这样验证签名:
jwt.verify(signedAttestation, key)
问题是我不知道在哪里可以找到这个密钥,它显然不是APIKey,谷歌提供了一些示例代码,但它是用Java或C#编写的,我显然无法将其转换为node js。可在此处找到:https://github.com/googlesamples/安卓-play-safetynet/ 我试着关注离线验证:https://github.com/googlesamples/安卓-play-safetynet/blob/master/server/java/src/main/java/OfflineVerify.java 欢迎任何帮助,非常感谢
# 1 楼答案
基本上,您需要执行一系列步骤来进行正确的验证。这里是the steps
第三步是你需要做的事情
我肯定会敦促您浏览所有的参考链接,以便更好地理解这个过程,并查看这里使用的每个库函数,以了解它们正在做什么,以及您是否希望它们做什么。我已经编写了伪代码来解释这些步骤
所有帮助我的文章: