Как настроить 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>