如何配置 Payara JDBCRealm/jdbcDigestRealm 以 httpd 样式存储密码
How to configure Payara JDBCRealm/jdbcDigestRealm to store passwords in httpd style
我在 Payara 中使用带有 JAAS Context=jdbcDigestRealm 的 JDBCRealm 来执行 http 摘要身份验证。如果我将它设置为在我的用户数据库中使用明文密码,一切都会按预期进行。但我想将密码作为 MD5(username:realm:password) 存储在数据库中,就像 Apache httpd 一样。遗憾的是无法在 JDBCRealm 中找到设置来处理该问题。存储明文密码当然不可取。
我应该如何配置 Payara 中的 JDBCRealm 设置以允许使用存储为 MD5(username: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>
</auth-realm>
在浏览了一段时间的Payara源代码后,我自己找到了答案。通过在 JDBC 域上将 属性 "Encoding" 设置为 "Hashed",数据库中的密码假定为 MD5(用户名:域:密码)格式。
此功能似乎完全没有记录。
<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>
我在 Payara 中使用带有 JAAS Context=jdbcDigestRealm 的 JDBCRealm 来执行 http 摘要身份验证。如果我将它设置为在我的用户数据库中使用明文密码,一切都会按预期进行。但我想将密码作为 MD5(username:realm:password) 存储在数据库中,就像 Apache httpd 一样。遗憾的是无法在 JDBCRealm 中找到设置来处理该问题。存储明文密码当然不可取。
我应该如何配置 Payara 中的 JDBCRealm 设置以允许使用存储为 MD5(username: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>
</auth-realm>
在浏览了一段时间的Payara源代码后,我自己找到了答案。通过在 JDBC 域上将 属性 "Encoding" 设置为 "Hashed",数据库中的密码假定为 MD5(用户名:域:密码)格式。
此功能似乎完全没有记录。
<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>