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

使用Client Credentials流请求Jack Henry Admin/Alerts API令牌遇认证错误

使用Client Credentials流获取Jack Henry API令牌时的认证错误排查

问题描述

尝试通过Client Credentials授权流获取Jack Henry Digital Toolkit Admin/Alerts()接口的API访问令牌,持续收到错误响应:

{"error":"invalid_request","error_description":"no client authentication mechanism provided"}

已尝试用SignedJWT(client_assertion)替代客户端密钥认证,curl请求示例如下:

curl --request POST --url 'https://banno.com/a/oidc-provider/api/v0/token' \
--header 'content-type: application/x-www-form-urlencoded' \
--data-urlencode client-id=$CLIENT_ID  \
--data-urlencode grant_type=client_credentials \
--data-urlencode client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer  \
--data-urlencode client-assertion=$SIGNED_JWT  

JWT头与载荷示例:

{
    "alg": "PS256"
}
{
  "jti": "065d67c7-41f9-4da0-bdb6-1197d128dcc8",
  "aud": "https://banno.com/a/oidc-provider/api/v0/token",
  "sub": "OUR EXTERNAL APPLICATION CLIENT ID",
  "iss": "OUR EXTERNAL APPLICATION CLIENT ID",
  "iat": 1693247831,
  "exp": 1693247891
}

解决方案与排查点

1. 修正client_assertion参数拼写

你的curl请求中,client-assertion使用了短横线分隔,但OAuth 2.0规范中该参数的标准名称是下划线分隔的client_assertion。服务器无法识别错误拼写的参数,会判定未提供认证机制。

修正后的curl参数:

--data-urlencode client_assertion=$SIGNED_JWT

2. 验证JWT签名与有效性

  • 确认你使用的PS256算法对应的公钥已正确上传至Jack Henry开发者平台,并与当前客户端ID绑定。服务器无法验证JWT签名时,会拒绝认证请求。
  • 检查JWT的iat(签发时间)和exp(过期时间):示例中exp仅比iat晚60秒,确保请求发送时JWT未过期。

3. 核对客户端ID一致性

确保JWT载荷中的sub、iss字段值与请求中的client-id完全一致(包括大小写、特殊字符),任何不一致都会导致认证失败。

4. 确认请求格式正确性

  • 保证content-type请求头严格为application/x-www-form-urlencoded。
  • 所有参数均通过--data-urlencode进行编码,避免特殊字符导致参数解析异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 02:06:15