我有一个 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"
}
}
401错误代码表示身份验证凭据有问题。
要确保您拥有有效的令牌 OAuth 2 令牌,请运行以下命令:
$ gcloud auth print-access-token
验证授权 HTTP 标头中是否提供了令牌。它应该看起来像这样:
Authorization: Bearer {TOKEN}
如果错误仍然存在,请尝试使用步骤 1 刷新令牌,因为令牌的时间有限。