Как настроить Payara JDBCRealm/jdbcDigestRealm для хранения паролей в стиле httpd

Я использую JDBCRealm с JAAS Context=jdbcDigestRealm в Payara для выполнения http аутентификации дайджеста. Если я настрою использование паролей в виде открытого текста в моей базе данных пользователей, все будет работать как положено. Но я бы хотел хранить пароли как MD5(имя пользователя:realm: пароль) в базе данных, как это делает Apache httpd. К сожалению, не могу найти настройки в JDBCRealm для обработки этого. Хранение паролей в виде открытого текста, конечно, не желательно.

Как мне настроить параметры JDBCRealm в Payara, чтобы разрешить использование паролей, хранящихся как 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 ответ

Решение

Я нашел ответ сам после просмотра исходного кода Payara некоторое время. При установке для свойства "Кодировка" значения "Хешированный" в области JDBC пароли в базе данных предполагаются в формате 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>
  <property name="encoding" value="HASHED"></property>
 </auth-realm>
Другие вопросы по тегам