Keycloak 密码黑名单不适用于特殊符号

Ale*_*xey 1 java keycloak

我有一个包含黑名单密码的文本文件,并将文件名设置为“身份验证”->“密码策略”->“keycloak 中的密码黑名单”。如果有简单的密码,例如

password
admin
user
Run Code Online (Sandbox Code Playgroud)

效果很好 - 当我尝试更改密码时,我看到了这条消息Error! Invalid password: password is blacklisted. 但是当我向此列表添加更复杂的密码时,就像Music.1%它不起作用 - 我可以将密码更改为此。

为什么它会如此有效?有没有办法将文件中的类似密码列入黑名单?

dre*_*ash 7

从 Keycloak 文档中可以读到以下内容:

密码黑名单

此策略检查给定密码(转换为小写)是否包含在黑名单文件中,该文件可能是一个非常大的文件。密码黑名单是带有 Unix 行结尾的 UTF-8 纯文本文件,其中每一行代表一个列入黑名单的密码。黑名单中的所有密码必须为小写,以便于不区分大小写的比较。黑名单文件的文件名必须作为密码策略值提供,例如10_million_password_list_top_1000000.txt。默认情况下,黑名单文件是根据 ${jboss.server.data.dir}/password-blacklists/ 解析的。可以通过 keycloak.password.blacklists.path 系统属性或 passwordBlacklist 策略 SPI 配置的 blacklistsPath 属性自定义此路径。

密码“password”、“admin”和“user”有效而“Music.1%”无效的原因是前三个是小写,而最后一个不是。它不是特殊符号。