我最后一小时面临OAuth2 JWT令牌验证异常(所以没有人可以访问我的应用程序):
java.security.SignatureException:签名长度不正确:得到256但是期望128.我正在使用google-http-client 1.20.0和Java 1.7.0.到目前为止相同的配置 - 任何想法?
Stacktrace
java.security.SignatureException: Signature length not correct: got 256 but was expecting 128
at sun.security.rsa.RSASignature.engineVerify(Unknown Source) ~[na:1.7.0_45]
at java.security.Signature$Delegate.engineVerify(Unknown Source) ~[na:1.7.0_45]
at java.security.Signature.verify(Unknown Source) ~[na:1.7.0_45]
at com.google.api.client.util.SecurityUtils.verify(SecurityUtils.java:164) ~[google-http-client-1.20.0.jar:1.20.0]
Run Code Online (Sandbox Code Playgroud) 我遇到谷歌推送通知(驱动器)的问题.我使用的服务帐户非常适用于所有其他驱动器操作,除了驱动器更改监视.
以下是现在因"未授权的WebHook回调通道"异常而失败的应用程序代码.我还转储了调用drive.changes.watch.execute时生成的请求和响应.
目标通知地址在API和auth推送控制面板中列入白名单(我甚至将其列在Javascript起源和引用中),现在我遇到了这个401 Unauthorized错误.
有人知道我在哪里弄错了吗?谢谢你的帮助.
PrivateKey serviceAccountPrivateKey = SecurityUtils.loadPrivateKeyFromKeyStore(SecurityUtils.getPkcs12KeyStore(), p12File, "notasecret", "privatekey", "notasecret");
JsonFactory jsonFactory = new JacksonFactory();
HttpTransport t = GoogleNetHttpTransport.newTrustedTransport();
GoogleCredential gc = new GoogleCredential.Builder()
.setTransport(t)
.setJsonFactory(jsonFactory)
.setServiceAccountScopes(Collections.singleton(DriveScopes.DRIVE))
.setServiceAccountPrivateKey(serviceAccountPrivateKey)
.setServiceAccountId(Config.SERVICE_ACCOUNT_ID)
.setServiceAccountUser(Config.SERVICE_ACCOUNT_USER)
.build();
drive = new Drive.Builder(t, jsonFactory, null).setHttpRequestInitializer(gc).setApplicationName(cfg.getStringParam(Config.GAE_APPLICATION_NAME)).build();
// THIS WORKS
Changes.List request = drive.changes().list();
ChangeList changes = request.execute();
// THIS DOES NOT WORK
Channel channel = new Channel();
channel.setId(UUID.randomUUID().toString());
channel.setType("web_hook");
channel.setAddress(Config.PUSH_NOTIFICATION_ADDRESS);
Channel c = drive.changes().watch(channel).execute();
-------------- REQUEST --------------
POST https://www.googleapis.com/drive/v2/changes/watch
Accept-Encoding: gzip
Authorization: Bearer XXX
User-Agent: XXX …Run Code Online (Sandbox Code Playgroud) 从大约5:30 UTC开始,我们只收到此api呼叫的响应
https://www.googleapis.com/appsmarket/v2/customerLicense/ {appId}/{customer}
{"error":{"errors":[{"domain":"global","reason":"forbidden","message":"未授权访问应用程序ID"}],"code":403, "message":"未授权访问应用程序ID"}}
但是我们之前没有任何先前的发展或变化,这会影响我们所有的市场应用.
有什么想法,以及如何解决/解决这个问题?