Docker部署Keycloak 16时默认${jboss.server.data.dir}路径是多少
Keycloak 16官方Docker镜像
${jboss.server.data.dir}默认路径 Keycloak 16官方Docker镜像中,${jboss.server.data.dir}对应的实际绝对路径为/opt/jboss/keycloak/standalone/data。
将黑名单文件放在/opt/jboss/keycloak/standalone/data/password-blacklists/路径下仍提示文件找不到,通常是以下几个原因导致:
- 权限不匹配:容器内Keycloak进程以UID 1000的
jboss用户身份运行,创建/挂载的password-blacklists目录及内部黑名单文件,必须配置为jboss用户可读,否则服务会直接判定文件不存在 - 目录层级错误:黑名单文件需要直接放在
password-blacklists目录下,不要额外嵌套子文件夹 - 文件名配置错误:控制台配置Password Blacklist策略时,只需要填写黑名单文件名,不需要写全路径
如果需要验证当前运行实例的实际变量值,可以直接在宿主机执行以下命令查询:
docker exec -it <你的Keycloak容器名称> /opt/jboss/keycloak/bin/jboss-cli.sh --commands="echo \$jboss.server.data.dir"
命令输出的路径就是实例实际生效的数据目录路径。
正确配置密码黑名单的参考步骤
- 提前在宿主机准备好黑名单文件,要求每行一个弱密码,比如命名为
common-passwords.txt - 启动容器时直接将黑名单文件挂载到对应路径,示例启动命令片段:
docker run -d \ -p 8080:8080 \ -v /your/local/path/common-passwords.txt:/opt/jboss/keycloak/standalone/data/password-blacklists/common-passwords.txt \ jboss/keycloak:16.1.1
- 登录Keycloak管理控制台,进入对应Realm的Authentication > Policies > Password Policy页面,添加
Password Blacklist策略,配置项中直接填写黑名单文件名common-passwords.txt保存即可。
注意:
/opt/jboss/keycloak/是Keycloak的安装根目录,对应变量为${jboss.home.dir},服务不会从该路径下扫描密码黑名单文件,不要把黑名单放在这个根目录下。
内容的提问来源于stack exchange,提问作者Mr. Diba
相关产品推荐
相关产品推荐

