使用从 K8 pod 获取的 JWT 进行 GCP Rest api 调用(获取 401)

问题描述 投票:0回答:1

我有一个 kubernetes pod 正在运行。它能够与 Big query 对话,因为当我调用我的 pod 拥有的端点时,对 BQ 的数据访问有效。所以服务帐户具有正确的权限。我在 K8 pod 中访问了以下位置

/var/run/secrets/kubernetes.io/serviceaccount
然后我在
token
文件上做了一个猫,并得到了 JWT。我还使用 JWT 解码器/检查器查看了 JWT,并且令牌已被解释并且似乎没问题。

我尝试拨打以下休息电话,但收到错误

curl --request GET \
  --url https://bigquery.googleapis.com/bigquery/v2/projects/testproject/datasets/testdataset \
  --header 'Authorization: Bearer <jwt>'
{
  "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.",
    "errors": [
      {
        "message": "Invalid Credentials",
        "domain": "global",
        "reason": "authError",
        "location": "Authorization",
        "locationType": "header"
      }
    ],
    "status": "UNAUTHENTICATED"
  }
}
google-cloud-platform
1个回答
0
投票

401错误代码表示身份验证凭据有问题。

  1. 要确保您拥有有效的令牌 OAuth 2 令牌,请运行以下命令:

     $ gcloud auth print-access-token
    
  2. 验证授权 HTTP 标头中是否提供了令牌。它应该看起来像这样:

     Authorization: Bearer {TOKEN}
    

如果错误仍然存在,请尝试使用步骤 1 刷新令牌,因为令牌的时间有限。

其他参考资料stackoverflow.com/a/48734637/14072498

© www.soinside.com 2019 - 2024. All rights reserved.