JBoss密码由ARGON2id编码时的认证
JBoss authentication when password is encoded by ARGON2id
我在数据库中用 Argon2id 加密了密码。
如何更改我的配置,让 JBoss 知道它必须使用 Argon2 来验证密码?
standalone.xml
<security-domain name="databaseDomain">
<authentication>
<login-module code="Database" flag="required">
<module-option name="dsJndiName" value="java:/datasources/hotel"/>
<module-option name="principalsQuery" value="select password from users where login=?"/>
<module-option name="rolesQuery" value="SELECT employee.position,'Roles' FROM users, employee WHERE employee.id=users.employeeId and login=?"/>
<module-option name="unauthenticatedIdentity" value="guest"/>
</login-module>
</authentication>
</security-domain>
web.xml
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/error.html</form-error-page>
</form-login-config>
</login-config>
jboss-web.xml
<jboss-web>
<security-domain>databaseDomain</security-domain>
</jboss-web>
我添加了 ARGON2 和
<dependency>
<groupId>de.mkammerer</groupId>
<artifactId>argon2-jvm</artifactId>
<version>2.7</version>
</dependency>
我尝试添加到 standalone.xml
<module-option name="hashAlgorithm" value="ARGON2id"/>
但它没有用,我对此并不感到惊讶。我的表单正在调用 j_security_check
您需要实现自己的登录模块,听起来很可怕,但实际上并非如此。
- 找出您的 Wildfly 与哪个版本的 Picketbox 捆绑在一起 - 在
modules/system/layers/base/org/picketbox/main
目录中查找。 IE。对于 WF 21,Picketbox 的版本是 5.0.3.Final
- 将 Picketbox 库作为
provided
范围的依赖项添加到您的项目
- 通过扩展
org.jboss.security.auth.spi.DatabaseServerLoginModule
class 并覆盖 convertRawPassword
方法来实现您的自定义登录模块 - 这是您需要将用户输入转换为 Argon2 形式的地方
- 在
standalone.xml
中的登录模块配置的 code
参数中提供完整的 class 名称。 Wildfly 将从您的部署中选择它并使用您的实现而不是默认实现。
这应该有效。
我在数据库中用 Argon2id 加密了密码。
如何更改我的配置,让 JBoss 知道它必须使用 Argon2 来验证密码?
standalone.xml
<security-domain name="databaseDomain">
<authentication>
<login-module code="Database" flag="required">
<module-option name="dsJndiName" value="java:/datasources/hotel"/>
<module-option name="principalsQuery" value="select password from users where login=?"/>
<module-option name="rolesQuery" value="SELECT employee.position,'Roles' FROM users, employee WHERE employee.id=users.employeeId and login=?"/>
<module-option name="unauthenticatedIdentity" value="guest"/>
</login-module>
</authentication>
</security-domain>
web.xml
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/error.html</form-error-page>
</form-login-config>
</login-config>
jboss-web.xml
<jboss-web>
<security-domain>databaseDomain</security-domain>
</jboss-web>
我添加了 ARGON2 和
<dependency>
<groupId>de.mkammerer</groupId>
<artifactId>argon2-jvm</artifactId>
<version>2.7</version>
</dependency>
我尝试添加到 standalone.xml
<module-option name="hashAlgorithm" value="ARGON2id"/>
但它没有用,我对此并不感到惊讶。我的表单正在调用 j_security_check
您需要实现自己的登录模块,听起来很可怕,但实际上并非如此。
- 找出您的 Wildfly 与哪个版本的 Picketbox 捆绑在一起 - 在
modules/system/layers/base/org/picketbox/main
目录中查找。 IE。对于 WF 21,Picketbox 的版本是 5.0.3.Final - 将 Picketbox 库作为
provided
范围的依赖项添加到您的项目 - 通过扩展
org.jboss.security.auth.spi.DatabaseServerLoginModule
class 并覆盖convertRawPassword
方法来实现您的自定义登录模块 - 这是您需要将用户输入转换为 Argon2 形式的地方 - 在
standalone.xml
中的登录模块配置的code
参数中提供完整的 class 名称。 Wildfly 将从您的部署中选择它并使用您的实现而不是默认实现。
这应该有效。