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

Node.js调用OCI Vault API返回NotAuthenticated错误求助

OCI Vault API Node.js调用NotAuthenticated错误排查与修复

核心问题与修复步骤


  1. 替换Authorization头部的认证方案
    OCI API要求使用Signature而非Bearer作为认证方案,这是导致认证失败的关键原因。
    修正请求头部:

    headers: {
      Authorization: `Signature ${jwtToken}`,
    },
    
  2. 修正JWT的Audience(aud)参数
    OCI要求aud必须是区域级服务端点,而非具体资源路径。比如伦敦区Vault服务的aud应为https://secrets.vaults.uk-london-1.oci.oraclecloud.com,而非拼接后的资源URL。
    修正payload:

    const payload = {
      iss: tenancyId,
      sub: authUserId,
      aud: vaultUrl, // 直接使用根服务端点
      iat: Math.floor(Date.now() / 1000),
      exp: Math.floor(Date.now() / 1000) + 3600,
    };
    
  3. 确保私钥与指纹格式正确

    • 确认oci_private_key.pem包含完整的-----BEGIN RSA PRIVATE KEY-----和-----END RSA PRIVATE KEY-----标识,无格式损坏。
    • 检查keyFingerprint环境变量为OCI控制台中显示的冒号分隔十六进制字符串,无多余空格或字符。
  4. 显式指定JWT签名算法
    避免jsonwebtoken库使用默认算法,显式指定RS256:

    const jwtToken = jwt.sign(payload, privateKey, { algorithm: 'RS256', header });
    

修正后的完整代码

const jwt = require('jsonwebtoken');
const fs = require('fs');
const request = require('request');
const dotenv = require('dotenv');
dotenv.config();

const vaultUrl = process.env.vaultUrl;
const secretBundleUrl = `${vaultUrl}/${process.env.secretBundle}/${process.env.vaultSecret}`;

const tenancyId = process.env.tenancyId;
const authUserId = process.env.authUserId;
const keyFingerprint = process.env.keyFingerprint;

const privateKey = fs.readFileSync('./oci_private_key.pem', 'utf8');

const header = {
  alg: 'RS256',
  typ: 'JWT',
  kid: keyFingerprint,
};

const payload = {
  iss: tenancyId,
  sub: authUserId,
  aud: vaultUrl,
  iat: Math.floor(Date.now() / 1000),
  exp: Math.floor(Date.now() / 1000) + 3600,
};

const jwtToken = jwt.sign(payload, privateKey, { algorithm: 'RS256', header });

const options = {
  method: 'GET',
  url: secretBundleUrl,
  headers: {
    Authorization: `Signature ${jwtToken}`,
  },
};

request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 13:42:37