You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot应用向GCP Pub/Sub区域端点发消息遇认证异常排查

问题

我正在使用基于Spring Boot的应用向GCP Pub/Sub主题发布消息,为利用消息排序功能,需将消息发布到区域端点。已通过配置spring.cloud.gcp.pubsub.publisher.enable-message-ordering=true启用消息排序,并设置spring.cloud.gcp.pubsub.publisher.endpoint=us-east1-pubsub.googleapis.com:443指定区域端点,但发布时出现以下认证异常:

com.google.api.gax.rpc.UnauthenticatedException: io.grpc.StatusRuntimeException: UNAUTHENTICATED: Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential.

不指定区域端点、使用全局端点发布时无异常,请问遗漏了什么配置?

依赖配置如下:

<dependency>
 <groupId>com.google.cloud</groupId>
 <artifactId>spring-cloud-gcp-starter</artifactId>
</dependency>
<dependency>
 <groupId>com.google.cloud</groupId>
 <artifactId>spring-cloud-gcp-starter-pubsub</artifactId>
</dependency>

<dependencyManagement>
 <dependencies>
  <dependency>
   <groupId>com.google.cloud</groupId>
   <artifactId>spring-cloud-gcp-dependencies</artifactId>
   <version>3.5.0</version>
   <type>pom</type>
   <scope>import</scope>
  </dependency>
 </dependencies>
</dependencyManagement>
解决方案

指定GCP Pub/Sub区域端点时,需额外配置对应区域的认证元数据端点,否则认证流程无法获取有效凭证。具体需补充以下配置:

  • 添加和Pub/Sub区域匹配的OAuth2令牌端点:

    spring.cloud.gcp.pubsub.publisher.oauth2-endpoint=https://us-east1-pubsub.googleapis.com/oauth2/v4/token
    

    该端点必须与你设置的spring.cloud.gcp.pubsub.publisher.endpoint区域保持一致(示例中为us-east1),确保令牌请求发送到对应区域的认证服务。

  • 若使用服务账号密钥文件认证,确认已配置正确的密钥路径(全局模式下已配置则无需重复):

    spring.cloud.gcp.credentials.location=classpath:your-service-account-key.json
    

原因:全局端点会自动使用默认的全局认证服务,但区域端点需要明确指定对应区域的OAuth2令牌端点,否则认证请求会发送到错误地址,导致无法获取有效凭证,触发UNAUTHENTICATED异常。

内容的提问来源于stack exchange,提问作者Rishabh Rastogi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 22:30:12