问题描述
据我所知,从 2021 年 7 月 1 日开始,将不再支持在 IAM API 上调用 SignBlob 和 SignJwt,并且可能会失败。 Google 正在弃用以下身份验证方法:iam.googleapis.com 相反,我们现在可以使用:iamcredentials.googleapis.com
我正在尝试切换到新的 API,但是当我发送请求以签署 JWT 时,我收到一个我不知道的错误。谁能帮我这个?这是示例代码和错误。 (错误出现在方法“this.getClient().signJwt(request)”上。
public Accesstoken getToken() {
try {
ServiceAccountName name = ServiceAccountName.parse(String.format("projects/-/serviceAccounts/%s",this.tenant.getServiceAccount()));
SignJwtRequest request = SignJwtRequest.newBuilder()
.setName(name.toString())
.addAllDelegates(new ArrayList<>())
.setPayload(getPayload())
.build();
SignJwtResponse signJwtResponse = this.getClient()
.signJwt(request);
return new Accesstoken(signJwtResponse.getSignedJwt(),DateUtils.addSeconds(new Date(),3600));
} catch (Exception e) {
}
}
private IamCredentialsClient getClient() throws IOException {
if (this.iamClient == null) {
this.iamClient = IamCredentialsClient.create();
}
return this.iamClient;
}
private String getPayload() {
JsonObject payload = new JsonObject();
payload.addProperty("iat",System.currentTimeMillis() / 1000);
payload.addProperty("iss",tenant.getServiceAccount());
payload.addProperty("aud","https://datastore.googleapis.com/google.datastore.v1.Datastore");
payload.addProperty("sub",tenant.getServiceAccount());
return payload.toString();
}
错误文本:
Handler dispatch Failed; nested exception is java.lang.NoClassDefFoundError: io/grpc/internal/ManagedChannelImplBuilder$ChannelBuilderDefaultPortProvider
AppException(error=AppError(code=500,reason=Server error.,message=An unkNown error has occurred.,errors=null,debuggingInfo=null,originalException=org.springframework.web.util.nestedservletexception: Handler dispatch Failed; nested exception is java.lang.NoClassDefFoundError: io/grpc/internal/ManagedChannelImplBuilder$ChannelBuilderDefaultPortProvider),originalException=org.springframework.web.util.nestedservletexception: Handler dispatch Failed; nested exception is java.lang.NoClassDefFoundError: io/grpc/internal/ManagedChannelImplBuilder$ChannelBuilderDefaultPortProvider)
at org.opengroup.osdu.storage.util.GlobalOtherExceptionMapper.handleGeneralException(GlobalOtherExceptionMapper.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.invocableHandlerMethod.doInvoke(invocableHandlerMethod.java:190)
at org.springframework.web.method.support.invocableHandlerMethod.invokeForRequest(invocableHandlerMethod.java:138)
at org.springframework.web.servlet.mvc.method.annotation.ServletinvocableHandlerMethod.invokeAndHandle(ServletinvocableHandlerMethod.java:105)
at org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver.doResolveHandlerMethodException(ExceptionHandlerExceptionResolver.java:409)
at org.springframework.web.servlet.handler.AbstractHandlerMethodExceptionResolver.doResolveException(AbstractHandlerMethodExceptionResolver.java:61)
at org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver.resolveException(AbstractHandlerExceptionResolver.java:141)
at org.springframework.web.servlet.handler.HandlerExceptionResolverComposite.resolveException(HandlerExceptionResolverComposite.java:80)
at org.springframework.web.servlet.dispatcherServlet.processHandlerException(dispatcherServlet.java:1299)
...
...
Caused by: org.springframework.web.util.nestedservletexception: Handler dispatch Failed; nested exception is java.lang.NoClassDefFoundError: io/grpc/internal/ManagedChannelImplBuilder$ChannelBuilderDefaultPortProvider
at org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:1055)
... 76 more
Caused by: java.lang.NoClassDefFoundError: io/grpc/internal/ManagedChannelImplBuilder$ChannelBuilderDefaultPortProvider
at io.grpc.netty.shaded.io.grpc.netty.NettyChannelProvider.builderForAddress(NettyChannelProvider.java:38)
at io.grpc.netty.shaded.io.grpc.netty.NettyChannelProvider.builderForAddress(NettyChannelProvider.java:24)
at io.grpc.ManagedChannelBuilder.forAddress(ManagedChannelBuilder.java:39)
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createSingleChannel(InstantiatingGrpcChannelProvider.java:293)
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.access$1700(InstantiatingGrpcChannelProvider.java:74)
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider$1.createSingleChannel(InstantiatingGrpcChannelProvider.java:220)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)