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

ConnectyCube用户会话令牌创建异常:"Unexpected Signature"错误排查

问题原因分析

核心问题在于生成用户会话签名时,签名字符串未包含用户登录的核心参数(email/password),且未按要求对参数进行排序。

ConnectyCube的签名验证规则要求:所有参与请求的核心参数都必须加入签名字符串,并且参数需要按参数名的字母顺序排序后再进行HMAC-SHA1加密。创建App Session时仅需基础的App参数,但创建User Session时,用户的登录凭证(email/password)也是签名必须覆盖的参数。

解决方案

修改签名生成函数,使其支持传入用户参数,并按规则排序所有参数:

const getSignature = (user = null) => {
  const nonce = Math.floor(Math.random() * 1000000);
  const timestamp = Math.floor(Date.now() / 1000);
  
  // 初始化基础参数
  let params = {
    application_id: config.applicationId,
    auth_key: config.authKey,
    nonce: nonce,
    timestamp: timestamp
  };
  
  // 如果是用户登录场景,添加用户参数
  if (user) {
    Object.assign(params, user);
  }
  
  // 按参数名字母顺序排序(关键步骤)
  const sortedParamKeys = Object.keys(params).sort();
  const stringForSignature = sortedParamKeys.map(key => `${key}=${params[key]}`).join('&');
  
  const signature = crypto.createHmac('sha1', config.authSecret).update(stringForSignature).digest('hex');
  return { signature, timestamp, nonce };
}

然后调整用户会话创建函数,传入用户凭证到签名生成逻辑:

const createSessionWithLogin = async (emailAddress, password) => {
  // 传入email和password用于生成正确签名
  const signature = getSignature({ email: emailAddress, password: password });
  return await axios.post(
    'https://api.connectycube.com/session',
    {
      application_id: config.applicationId,
      auth_key: config.authKey,
      nonce: signature.nonce,
      timestamp: signature.timestamp,
      signature: signature.signature,
      user: {
        email: emailAddress,
        password: password
      }
    },
    {
      headers: {
        'Content-Type': 'application/json'
      }
    }
  );
}
额外排查建议
  • 参数一致性检查:确保签名中使用的email/password与请求体user对象中的值完全一致,无大小写、空格或编码差异。
  • 时间戳有效性:确认timestamp是秒级Unix时间戳,且与ConnectyCube服务器时间差不超过5分钟(可通过调用服务器时间接口校准)。
  • 参数排序验证:手动打印生成的stringForSignature,确认参数是按字母顺序排列的(例如application_id=xxx&auth_key=xxx&email=xxx&nonce=xxx&password=xxx&timestamp=xxx)。
  • 签名算法匹配:确认使用的是HMAC-SHA1算法,且authSecret与ConnectyCube控制台中的值完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:27:05