代码之家  ›  专栏  ›  技术社区  ›  LP13

IdentityServer 3返回无效的客户机

  •  1
  • LP13  · 技术社区  · 6 年前

    我在EF中使用IdentityServer3。我有一个API项目,我想使用 access token . 所以基于 sample 我已在identity server中配置客户端(用于API项目),如下所示

    客户端属性

    enter image description here

    客户机密 (请注意,无论我把什么文本作为秘密值,管理用户界面都会自动转换它)

    enter image description here

    范围 enter image description here

    然后用邮递员我试着得到通行证,但我总是得到 invalid_client 错误 enter image description here

    我也尝试过使用C代码获取访问令牌,但得到了相同的错误

        static TokenResponse GetClientToken()
        {
            var client = new TokenClient(
                "https://xxxxxxxx/connect/token",
                "A0AD7FB8-2881-484F-xxxxxxxxxxxxxxxxxx",
                "a84iThYxAA5eZpkIzt9xxxxxxxxxxxxxxxxxx");
    
            return client.RequestClientCredentialsAsync("api").Result;
        }
    

    更新1
    以下是我在identity server日志中看到的内容

    2018-12-21 19:29:59.284+00:00[信息]启动令牌请求
    2018-12-21 19:29:59.301+00:00[调试]开始客户端验证
    2018-12-21 19:29:59.302+00:00[调试]开始解析基本身份验证密钥
    2018-12-21 19:29:59.302+00:00[调试]开始解析post body中的secret
    2018-12-21 19:29:59.304+00:00[调试]解析器发现秘密:“PostBodySecretParser”
    2018-12-21 19:29:59.304+00:00[信息]发现秘密id:“A0AD7FB8-2881-484F-ABE0-xxxxxxx”
    2018-12-21 19:29:59.943+00:00[调试]跳过机密:无描述,机密不是SharedSecret类型。
    2018-12-21 19:29:59.943+00:00[调试]未找到匹配的哈希机密。
    2018-12-21 19:29:59.943+00:00[信息]机密验证器无法验证机密
    2018-12-21 19:29:59.944+00:00[信息]客户端验证失败。
    2018-12-21 19:29:59.945+00:00[信息]结束令牌请求
    2018-12-21 19:29:59.946+00:00[信息]返回错误:无效的客户机

    更新2
    (秘密值比我之前发布的更新) enter image description here

    1 回复  |  直到 6 年前
        1
  •  1
  •   Vidmantas Blazevicius    6 年前

    尝试机密类型为 SharedSecret 而不是 clientsecret . Identity Server 3具有以下机密类型:

    • 共享机密
    • X509指纹
    • X509名称
    • X509CertificateBase64证书

    Taken from Identity Server 3 source

    另外,在发送身份验证请求时,您似乎正在使用secret的散列值 a84iThYxAA5eZpkIzt9xxxxxxxxxxxxxxxxxx 但是,您需要使用用于创建机密的纯文本值。( 58b9.... )