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

Identity Server客户端api.client密钥验证失败 无法获取API令牌

Mongo DB中的客户端配置
Postman请求配置

故障说明

按上述配置操作后无法为API获取访问令牌,已确认未哈希的密码为ecret无拼写错误,哈希值中不存在'+'字符,已尝试将RequirePkce设置为false,开启Identity Server日志后唯一报错为:

Client secret validation failed for client:api.client.

排查与修复步骤

  • 核对客户端密钥哈希的生成规则:Identity Server 4默认使用SHA256对原始密钥进行哈希后转Base64存储,你可以用对应代码生成ecret的正确哈希值,和MongoDB中存储的哈希逐字符对比,不一致直接修改存储的哈希值即可。
    参考C#生成正确哈希的代码示例:
    public static string HashSha256(string input)
    {
        using (var sha256 = SHA256.Create())
        {
            var bytes = Encoding.UTF8.GetBytes(input);
            var hash = sha256.ComputeHash(bytes);
            return Convert.ToBase64String(hash);
        }
    }
    
  • 检查MongoDB中客户端配置的密钥属性:确认ClientSecrets集合中对应条目的Type字段值为SharedSecret,类型错误会直接导致验证失败。
  • 核对Postman请求参数:确认client_id参数完全匹配配置中的api.client(区分大小写),client_secret参数为纯文本ecret,无前后空格、多余引号或转义字符。
  • 排查哈希存储的转义问题:确认MongoDB中存储的哈希值没有遗漏Base64编码的/、=等特殊字符,也没有出现存储时自动转义特殊字符的情况。
  • 临时使用明文密钥验证问题环节:可临时将客户端配置中ClientSecrets的Value改为明文ecret,确认明文可正常通过验证后,即可确定问题出在哈希值生成或存储环节,针对性修正即可。
  • 确认配置范围:当前报错为客户端密钥验证失败,只需核对客户端配置下的Secrets节点,无需调整API资源的密钥配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:45:03