排查工作负载身份联合问题

本页面介绍了常见的工作负载身份联合错误的解决方法。

Google Cloud API 不接受来自 SecurityTokenService 的凭据

如果您遇到以下错误,可能是因为您正在尝试使用来自 SecurityTokenService 的凭据(而不是先将其交换为服务账号凭据)直接访问 Google Cloud API。

{
  "error": {
    "code": 401,
    "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "status": "UNAUTHENTICATED",
  }
}

如需消除此错误,请通过调用 GenerateAccessToken 将从 SecurityTokenService 生成的凭据交换为服务账号令牌。 如需了解详情,请参阅通过身份联合获取短期凭据

将身份提供商列入许可名单,以便与工作负载身份联合搭配使用

如果您尝试将不允许的身份提供商配置为工作负载身份池提供商,则会遇到以下错误:

FAILED_PRECONDITION: Precondition check failed.
- '@type': type.googleapis.com/google.rpc.PreconditionFailure
  violations:
  - description: "Org Policy violated for value: '{PROVIDER}'."
    subject: orgpolicy:projects/{PROJECT}/locations/global/workloadIdentityPools/{POOL}
    type: constraints/iam.workloadIdentityPoolProviders

如需解决此问题,请按照限制身份提供商配置中的说明,将身份提供商列入许可名单,以便与工作负载身份联合搭配使用。

连接到给定凭据的颁发者时出错

如果您收到以下错误,可能是因为 Google Cloud 无法提取 IdP 的 OIDC 元数据文档或 JWKS:

{
  "error": "invalid_grant",
  "error_description":"Error connecting to the given credential's issuer."
 }

此错误通常是因为端点未配置为可通过公共互联网访问。如需消除此错误,请检查 OIDC 端点是否公开可用并且符合 OIDC 规范。如需了解详情,请参阅准备外部身份提供方

如果您仍然遇到错误,请检查令牌颁发者(令牌的 iss 声明)是否正确。