繁体   English   中英

错误:16 UNAUTHENTICATED:请求具有无效的身份验证凭据。 预期 OAuth 2 访问令牌、登录 cookie 或其他有效的身份验证凭据

[英]Error: 16 UNAUTHENTICATED: Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid auth credential

我使用 Google Secret Manager 的 Node.js 代码停止工作(前一段时间工作正常)。 我已将GOOGLE_APPLICATION_CREDENTIALS环境变量设置为有效路径和console.log(process.env.GOOGLE_APPLICATION_CREDENTIALS) 正确打印。 我什至尝试重新生成 new.json 文件,但仍然出现相同的错误。 最初它没有 keyFilename,但两者都给出相同的结果,错误。 密钥在管理网站中启用。 我试图调用await client.initialize(); 也是。

有没有办法对此进行更多调试? 最近从冬季到夏季的时间变化会产生影响吗? 但是为什么重新生成的密钥不起作用呢?

const { SecretManagerServiceClient } = require('@google-cloud/secret-manager');
const client = new SecretManagerServiceClient({
  keyFilename: 'path-to.json'
});

const projectId = 'project-number';
const parent = 'projects/' + projectId;

...
async function listSecrets() { // Calling this throws the error
  const [secrets] = await client.listSecrets({
    parent: parent
  });

完整的错误堆栈:

[2021-04-12T09:14:56.366Z] (node:51988) UnhandledPromiseRejectionWarning: Error: 16 UNAUTHENTICATED: 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.
    at Object.callErrorFromStatus (<super-secret-path>\node_modules\@grpc\grpc-js\build\src\call.js:31:26)
    at Object.onReceiveStatus (<super-secret-path>\node_modules\@grpc\grpc-js\build\src\client.js:176:52)
    at Object.onReceiveStatus (<super-secret-path>\node_modules\@grpc\grpc-js\build\src\client-interceptors.js:336:141)
    at Object.onReceiveStatus (<super-secret-path>\node_modules\@grpc\grpc-js\build\src\client-interceptors.js:299:181)
    at <super-secret-path>\node_modules\@grpc\grpc-js\build\src\call-stream.js:130:78
    at processTicksAndRejections (internal/process/task_queues.js:75:11)

我已经安装了谷歌云 SDK,在我的服务器上运行gcloud auth activate-service-account ,它触发了

ERROR: (gcloud.auth.activate-service-account) There was a problem refreshing your current auth tokens: ('invalid_grant: Invalid JWT: Token must be a short-lived token (60 minutes) and in a reasonable timeframe. Check your iat and exp values in the JWT claim.', '{"error":"invalid_grant","error_description":"Invalid JWT: Token must be a short-lived token (60 minutes) and in a reasonable timeframe. Check your iat and exp values in the JWT claim."}')

在进一步谷歌搜索之后,我检查了服务器的时间,由于最近冬季->夏季的变化,现在落后了 2 小时,我想在迟到 1 小时之前仍然合适。 调整时间解决了这个问题。 http://time.is很有帮助)

有趣的是,我可以使用“人类”凭据登录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM