- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
今天早上,从我的 Android 应用向我的 Google Cloud Endpoint 发出的每个 API 请求都开始出现以下异常:
com.google.api.server.spi.auth.GoogleIdTokenUtils verifyToken: verifyToken: Signature length not correct: got 256 but was expecting 128
在我的 javascript 网络客户端上调用仍然可以正常工作。我没有更改服务器端代码或客户端代码。
最近该服务是否发生了任何可能导致这种情况发生的变化?
更新:第一次出现这种情况似乎是在 11:17:07 UTC
更新:不起作用的事情包括为 android 生成新的客户端 ID 并更新到 App Engine SDK 1.9.22
最佳答案
原因
java.security.Signature.verify(byte[] signature)
如果传递了错误长度的签名,则抛出异常(而不是返回 false,这通常在签名不匹配时完成 key )对我来说,解决方案是包装验证调用 (try...catch
),然后返回 false。您也可以自己对公钥进行早期检查,检查签名的长度是否与公钥模数的长度匹配。
如果您使用库来检查签名,请确保使用最新版本。
查看 http://android-developers.blogspot.nl/2013/01/verifying-back-end-calls-from-android.html 上的示例代码,你必须改变这个:
GoogleIdToken token = GoogleIdToken.parse(mJFactory, tokenString);
到
JsonWebSignature jws = JsonWebSignature.parser(mJFactory).setPayloadClass(Payload.class).parse(tokenString);
GoogleIdToken token = new GoogleIdToken(jws.getHeader(), (Payload) jws.getPayload(), jws.getSignatureBytes(), jws.getSignedContentBytes()) {
public boolean verify(GoogleIdTokenVerifier verifier)
throws GeneralSecurityException, IOException {
try {
return verifier.verify(this);
} catch (java.security.SignatureException e) {
return false;
}
}
};
很遗憾,我没有确切的设置来测试这个。
对于那些使用 Google Cloud Endpoint 的人,就像问题所述,我认为除了等到 Google 修复它之外,您几乎无能为力。幸运的是它现在已修复。(从技术上讲,您可能会争辩说像现在所做的那样更改 key 是一种解决方法,并且 Google 提供的库需要修复。但它有效,所以这是一个好的开始)
关于android - 谷歌云端点 : verifyToken: Signature length not correct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30781799/
我有一个自定义后端,客户端向其发送登录 firebase token ,服务器验证并获取解码 token ,大部分情况下它包含足够的信息,但我需要用户的显示名称与其同步它与其他客户端,但是我可以通过调
今天早上,从我的 Android 应用向我的 Google Cloud Endpoint 发出的每个 API 请求都开始出现以下异常: com.google.api.server.spi.auth.G
本文整理了Java中com.spotify.helios.master.ZooKeeperMasterModel.verifyToken()方法的一些代码示例,展示了ZooKeeperMasterMo
在服务器端使用 firebase-admin 时,我需要从 firebase 身份验证获取用户数据。但我发现如果我使用firebase提供的jwt token,我无法从解码 token 中获取电子邮件
我是一名优秀的程序员,十分优秀!