Keycloak对接Samba AD用户存储联邦启动报keystore密码错误问题
错误根因
你遇到的密码报错核心是2种可能:
- 生成truststore.jks时设置的存储密码,和
standalone-ha.xml中配置的ExamplePassword1不一致 - truststore.jks文件权限/所有者异常,导致Keycloak进程读取文件内容错误,被误判为密码不正确
解决步骤
1. 重新生成符合要求的truststore.jks
删除旧的错误truststore文件,重新执行证书导入命令,全程使用和xml配置一致的密码ExamplePassword1:
# 清理旧文件 sudo rm -f truststore.jks # 导入Samba CA证书 sudo keytool -import -alias samba-ca -keystore truststore.jks -file ca.pem -storepass ExamplePassword1 -storetype PKCS12 -noprompt # 导入Samba服务端证书 sudo keytool -import -alias samba-cert -keystore truststore.jks -file cert.pem -storepass ExamplePassword1 -storetype PKCS12 -noprompt
2. 验证truststore密码有效性
执行以下命令检查生成的jks文件,能正常输出证书别名信息即说明密码配置正确:
keytool -list -keystore truststore.jks -storepass ExamplePassword1
3. 修正文件权限与所有者
Keycloak 14镜像内部默认以UID为1000的jboss用户运行,需要调整文件归属避免读取异常:
sudo chown 1000:1000 truststore.jks standalone-ha.xml sudo chmod 644 truststore.jks standalone-ha.xml
4. 可选:无需修改xml的简化启动方案
Keycloak支持通过Java参数直接配置信任库,不需要手动修改standalone-ha.xml,可避免配置格式错误问题,启动命令调整如下:
docker run --name keycloak_app -p 443:8443 \ -v /srv/data/certs:/etc/x509/https \ -v /srv/data/sambaCerts/truststore.jks:/opt/jboss/keycloak/standalone/configuration/truststore.jks \ -e KEYCLOAK_USER=admin \ -e KEYCLOAK_PASSWORD=ExamplePassword2 \ -e JAVA_OPTS_APPEND="-Djavax.net.ssl.trustStore=/opt/jboss/keycloak/standalone/configuration/truststore.jks -Djavax.net.ssl.trustStorePassword=ExamplePassword1" \ quay.io/keycloak/keycloak:14.0.0
5. LDAP对接补充校验
服务启动正常后如果仍存在Samba AD认证失败问题,检查LDAP配置项:
- 连接协议选择
ldaps,端口使用636,或开启Use SSL/Enable StartTLS选项 - 绑定DN填写完整的可辨识名称,例如
CN=Administrator,CN=Users,DC=你的域名,DC=com
内容的提问来源于stack exchange,提问作者Roberto Lillo
相关产品推荐
相关产品推荐

