2009-11-24 2 views
2

Следуя за prior question, я пытаюсь выяснить, как настроить аутентификацию на основе контейнера для приложения J2EE. В частности, мне нужно иметь возможность применять алгоритм дайджеста паролей, отличный от тех, которые поддерживаются java.security.MessageDigest (которые являются SHA, MD2 или MD5 - here's where I think that limitation is documented). В этом случае моя база данных хранит пароли, зашифрованные Blowfish.Конфигурирование аутентификации на основе контейнера с использованием альтернативных методов дайджеста

У меня уже есть код Java, написанный для получения зашифрованного пароля из моей базы данных, и сравните введенный пользователем пароль с базой данных, выполнив шифрование Blowfish. Как настроить его так, чтобы контейнер просто использовал мой собственный класс (ы) Java для выполнения проверки подлинности пользователя?

Я использую JBoss AS 5.1 (что, я думаю, означает, что моя версия Tomcat - 6).

ответ

2

Вам понадобится написать custom LoginModule для JBoss.

В вашем случае это должно быть тривиально, так как все, что вы хотите сделать, это изменить способ шифрования пароля, чтобы вы просто расширили DatabaseServerLoginModule и переопределили один метод, как показано в приведенном выше примере.

Если бы вы сделали это для автономного Tomcat, вам нужно написать your own Realm. Опять же, достаточно просто, поскольку вы можете расширить область JDBC или Data Source

+0

Могу ли я это сделать без изменения conf/login-config.xml? Это очень уродливо, чтобы выбор был записан в этот файл, особенно когда у меня уже есть очень хороший Java-код (EJB3 + POJO), который захватывает информацию пользователя. –

+0

Вы можете, конечно, реализовать 'LoginModule' самостоятельно, а не расширять« DatabaseServerLoginModule »и получать информацию о пользователе, как хотите. Я не уверен, будет ли EJB доступным из LoginModule, хотя, но он был (длинным), поскольку я работал с JBoss; возможно, изменились. – ChssPly76

+0

Учитывая сложность поиска полезной документации по любому из этих аспектов, я буду придерживаться расширения DatabaseServerLoginModule. Есть ли у вас какие-либо ссылки о том, что должен содержать параметр модуля «roleQuery»? У меня нет таблицы базы данных, содержащей любые данные о роли, поэтому я теряюсь в том, как справиться с этим. Я попытался вернуть постоянную строку, равную роли безопасности, определенную в моем DD, и я также попытался полностью исключить эту строку, но в любом случае вход в журнал генерирует исключение IOException: 'No properties file: users.properties или defaults: defaultUsers.properties найдено '. –

0

Вся документация, которую я смог найти в Интернете, связанную с написанием пользовательского модуля входа в систему, относится только к JBoss v4 или ранее. Я не смог найти один рабочий пример этого в JBoss v5.1. Это очень расстраивает. Для JBoss v5.1 нет javadocs, которые я могу найти на официальном веб-сайте JBoss; на самом деле, нет текущих документов безопасности, связанных с настраиваемыми модулями, нигде в сети. Я просматривал каждую книгу, к которой у меня есть доступ в Barnes & Благородный, до сих пор не повезло. На данный момент мы смотрим на отключение JBoss, b/c, что отсутствие документации просто непрофессионально.