如何在KeyCloak中获取签名JWT格式的client_assertion?登录报错求助
解决Keycloak登录时"Client authentication with signed JWT failed: Can’t identify client. Issuer missing on JWT token"错误
你遇到的问题核心在于client_assertion这个用于客户端身份认证的JWT字段配置错误,下面一步步帮你排查修复:
1. 搞懂client_assertion的必填规则
client_assertion是客户端向Keycloak证明自身身份的JWT,它的几个核心字段必须严格对应你的客户端配置:
iss(签发人):必须等于你的客户端ID(也就是jweclient),你之前把它设成了Keycloak的realm地址,这就是Keycloak提示"Issuer missing"的根本原因sub(主题):同样必须等于你的客户端IDaud(受众):必须是Keycloak的Token端点地址,即http://localhost:8080/auth/realms/jwedemo/protocol/openid-connect/tokenexp(过期时间):必须是未来的Unix时间戳,绝对不能设为0(你之前的JWT里exp是0,这也会导致认证失败)iat(签发时间):当前的Unix时间戳jti(JWT唯一ID):任意不重复的字符串,用来防止重放攻击
2. 先配置Keycloak客户端支持签名JWT认证
在Keycloak后台完成以下配置:
- 进入
jwedemorealm的Clients页面,找到jweclient - 将Access Type设置为
confidential - 切换到Credentials标签页:
- 把Client Authenticator改成
Signed JWT - 选择你要使用的签名算法(比如你用的HS256),确保客户端的
Client Secret已生成(就是你用的418d630c-44cb-4f11-9dcc-a0c72dfc9f85)
- 把Client Authenticator改成
3. 生成正确的client_assertion
你可以用在线工具或代码生成符合要求的JWT,这里用jwt.io举例子:
- 打开jwt.io,算法选择
HS256 - 在Verify Signature区域的密钥输入框,填入你的客户端
client_secret - 在Payload区域填入正确字段,示例如下:
{ "iss": "jweclient", "sub": "jweclient", "aud": "http://localhost:8080/auth/realms/jwedemo/protocol/openid-connect/token", "exp": 1720000000, "iat": 1719996400, "jti": "unique-jwt-id-12345" }
- 页面会自动生成签名后的JWT,这个就是你需要的
client_assertion值
4. 修正curl命令
把生成的正确JWT替换到命令中,同时去掉冗余的client_secret参数(因为已经通过JWT完成客户端认证):
KC_USERNAME=root KC_PASSWORD=casiopea KC_CLIENT_ID=jweclient KC_ISSUER=http://localhost:8080/auth/realms/jwedemo KC_RESPONSE=$( curl -d "client_id=$KC_CLIENT_ID" -d "client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer" -d "client_assertion=替换为正确生成的JWT字符串" -d "username=$KC_USERNAME" -d "password=$KC_PASSWORD" -d "grant_type=password" -d "scope=profile openid" "$KC_ISSUER/protocol/openid-connect/token" ) echo $KC_RESPONSE | jq -C .
5. 验证与排查
执行修正后的命令后,应该就能正常获取access token了。如果仍有问题:
- 用jwt.io解析你的
client_assertion,检查所有字段是否符合要求 - 查看Keycloak的日志文件(
standalone/log/server.log),获取更详细的错误信息
内容的提问来源于stack exchange,提问作者user1106585
相关产品推荐
相关产品推荐

