如何配置Payara JDBCRealm / jdbcDigestRealm以httpd样式存储密码

时间:2018-01-14 08:36:19

标签: security java-ee glassfish payara

我在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>

1 个答案:

答案 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>