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

Keycloak报错‘Client secret not provided in request’问题求助

问题分析与解决思路

从你提供的配置和错误日志来看,核心问题出在适配器配置中的public-client参数没有同步修改,导致Keycloak适配器仍以public客户端模式运行,没有在请求token时携带客户端密钥。

问题原因

当你在Keycloak后台将客户端Access Type改为confidential后,该客户端就需要在获取token的请求中携带客户端密钥(client secret)才能通过验证。但你的JBoss适配器配置里依然保留了<public-client>true</public-client>,这个参数会告诉适配器以public客户端的身份工作——而public客户端是不需要(也不会发送)客户端密钥的,这就和Keycloak后台的客户端配置冲突,直接触发了Client secret not provided in request的错误。

解决步骤

  1. 修正适配器配置中的public-client参数
    打开你的JBoss配置文件,将<public-client>true</public-client>修改为<public-client>false</public-client>,确保配置和Keycloak后台的客户端类型一致。修改后的完整配置应该是:
    <subsystem xmlns="urn:jboss:domain:keycloak:1.1"> 
      <secure-deployment name="appWEB.war"> 
        <realm>demo</realm> 
        <resource>app</resource> 
        <public-client>false</public-client> 
        <auth-server-url>http://localhost:8180/auth</auth-server-url> 
        <ssl-required>EXTERNAL</ssl-required> 
        <principal-attribute>preferred_username</principal-attribute> 
        <use-resource-role-mappings>true</use-resource-role-mappings> 
        <credential name="secret">b35f1121-93a4-4483-a70a-0048b95fd250</credential> 
      </secure-deployment> 
    </subsystem>
    
  2. 验证客户端密钥一致性
    确认配置中<credential name="secret">的值,和Keycloak后台对应客户端的Credentials标签下的Secret完全一致,避免因密钥不匹配导致的其他授权错误。
  3. 重启JBoss服务器
    配置修改后需要重启服务器,让新的Keycloak适配器配置生效。

完成以上步骤后,重新尝试登录,应该就能正常获取token了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:09:07