Пользовательский JBoss DataSorurce шифрование пароля? - PullRequest
3 голосов
/ 21 марта 2012

Я работаю с JBoss 4.2.1GA .

Как вы, возможно, теперь можете избежать использования пароля JBoss DataSoruce в виде простого текста .Однако этот метод имеет фундаментальный недостаток безопасности, который становится очевидным, когда вы посмотрите, как реализованы методы org.jboss.resource.security.SecureIdentityLoginModule decode и encode .Шифрование - это, в основном, обычная раздувная рыба, использующая фиксированный секретный ключ ( "jaas is the way" ).

Я ищу способ либо изменить фиксированный секретный ключ для одного Iвыберите или измените способ шифрования / дешифрования.

Я склонен думать, что это можно сделать, переопределив SecureIdentityLoginModule , что хорошо, но мне трудно в это поверитьдля этого нет готовых опций (пока я не нашел)

Кто-то сделал что-то подобное?

Ответы [ 3 ]

3 голосов
/ 21 марта 2012

Для этой проблемы есть выдающаяся ошибка, по крайней мере для JBoss 4.0.x: https://issues.jboss.org/browse/JBAS-4460

Обратите внимание на комментарий:

Функция «зашифровать базу данных» предназначена для глупых проверок безопасности. В конечном счете, где-то будет какой-то пароль, потому что система должна расшифровать пароль, чтобы отправить его в базу данных. Относительно опытному программисту всегда будет легко взломать это. Безопасность файловой системы / ОС + безопасность транспорта - ваша единственная надежда.

То, что говорит комментатор, является общей проблемой для всех систем безопасности: в какой-то момент есть ключ, который можно расшифровать. Убедитесь, что безопасность файловой системы вашего сервера нарушена, поэтому к этому ключу нелегко получить доступ, и с вами все будет в порядке.

1 голос
/ 21 марта 2012

Взгляните на следующий wiki документ.Он описывает два способа шифрования паролей JBoss.Первый - это то, что вы описали, а второй - шифрование на основе пароля.

0 голосов
/ 23 марта 2012

Хорошо, вот как я это сделал (я работаю над JBOSS 4.2.1 GA и Oracle, поэтому некоторые вещи могут отличаться в зависимости от версий и поставщиков БД):

Вам нужнорасширить AbstractPasswordCredentialLoginModule .

Я основал мой (Called PGPLoginModule ) на готовой реализации под названием SecureIdentityLoginModule единственное различие между этим и моим - методы декодирования и кодирования, которые используютдругой алгоритм и процесс шифрования (мой использует сертификат PGP для расшифровки файла свойств, в котором хранится пароль) аналогично тому, как описано в этой статье , но вы можете использовать любой метод, который вы предпочитаете.

Вам потребуется добавить следующие jar-файлы, расположенные в папках библиотеки jboss, чтобы разрешить зависимости:

  • [JBOSS_HOME] / lib / jboss-common.jar
  • [JBOSS_HOME] / lib / jboss-jmx.jar
  • [JBOSS_HOME] / server / default / lib / jbosssx.jar
  • [JBOSS_HOME] / server / default / lib / jboss-jca.jar

Вам необходимо создать JAR-класс и поместить кувшин в любое из следующих мест:

  • [JBOSS_HOME] / server / default / lib

или

  • [JBOSS_HOME] / lib

Если у вас есть это, вам нужно настроить его в домене безопасности, который вы определили в jboss login-config.xml, чтобы он использовал ваш класс (у меня это org.company.resource.security.PGPLoginModule ) вместо использования по умолчанию, он будет выглядеть примерно так:

<application-policy name="PGPDomain">
        <authentication>
            <login-module code="org.company.resource.security.PGPLoginModule" flag="required">
                <module-option name="username">[DB_USER]</module-option>
                <module-option name="password">[ENCTRYPTED_PASSWORD]</module-option>
                <module-option name="managedConnectionFactoryName">jboss.jca:service=LocalTxCM,name=OracleDS</module-option>
            </login-module>
        </authentication>
    </application-policy>

Обратите внимание, что в зависимости от силы и алгоритма, который вы решите использовать, вам может потребоваться установить Неограниченные файлы политик расширения Java Cryptography для вашей JRE.

Надеюсь, кто-то найдет это полезным.

...