我在Payara中使用JDBCRealm和JAAS Context = jdbcDigestRealm进行http摘要身份验证。如果我将其设置为在我的用户数据库中使用明文密码,则一切都按预期工作。但我想将密码存储为数据库中的MD5(用户名:realm:密码),就像Apache httpd一样。遗憾的是无法在JDBCRealm中找到设置来处理它。存储明文密码当然是不可取的。
如何在Payara中配置JDBCRealm的设置以允许使用存储为MD5的密码(用户名:realm:密码)?
这是我使用明文密码的工作设置:
<auth-realm classname="com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm" name="digestrealm">
<property name="jaas-context" value="jdbcDigestRealm"></property>
<property name="datasource-jndi" value="jdbc/userrepo"></property>
<property name="user-table" value="usertable"></property>
<property name="user-name-column" value="username"></property>
<property name="password-column" value="password"></property>
<property name="group-table" value="grouptable"></property>
<property name="group-name-column" value="groupname"></property>
<property name="charset" value="UTF-8"></property>
<property name="digest-algorithm" value="None"></property>
</auth-realm>
答案 0 :(得分:1)
我在浏览Payara源代码一段时间后自己找到了答案。通过在JDBC领域将属性“Encoding”设置为“Hashed”,假定数据库中的密码采用MD5格式(用户名:realm:password)。
此功能似乎完全没有记录。
<auth-realm classname="com.sun.enterprise.security.auth.realm.jdbc.JDBCRealm" name="digestrealm">
<property name="jaas-context" value="jdbcDigestRealm"></property>
<property name="datasource-jndi" value="jdbc/userrepo"></property>
<property name="user-table" value="usertable"></property>
<property name="user-name-column" value="username"></property>
<property name="password-column" value="password"></property>
<property name="group-table" value="grouptable"></property>
<property name="group-name-column" value="groupname"></property>
<property name="charset" value="UTF-8"></property>
<property name="digest-algorithm" value="None"></property>
<property name="encoding" value="HASHED"></property>
</auth-realm>