Хеширование паролей
|
Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine |
В этой главе описывается, как в OpenBPM Engine реализовано криптографическое хеширование паролей. В частности, рассматриваются используемый алгоритм хеширования и генерация соли (salt). Если вы не знакомы с этими темами, рекомендуется ознакомиться со статьями о криптографических хеш-функциях, соли cryptography и безопасном хешировании паролей.
В OpenBPM Engine используется хеш-функция SHA-512. Если возникает необходимость использовать другой, пользовательский алгоритм хеширования, в OpenBPM Engine можно подключить собственный алгоритм хеширования паролей.
При генерации соли для каждого пользователя создаётся случайное 16-байтовое значение, которое генерируется с использованием SecureRandom. При необходимости также можно настроить собственную генерацию соли.
Настройка алгоритма хеширования
Если необходимо использовать более безопасный алгоритм хеширования, вы можете предоставить собственную реализацию.
Для этого нужно реализовать интерфейс PasswordEncryptor из пакета io.openbpm.bpm.engine.impl.digest.
Этот интерфейс гарантирует, что будут реализованы все необходимые функции для хеширования паролей.
Вы можете посмотреть на классы Base64EncodedHashDigest и ShaHashDigest из пакета
io.openbpm.bpm.engine.impl.digest, чтобы увидеть, как это реализовано в OpenBPM Engine.
Шаблон вашей собственной реализации может выглядеть следующим образом:
public class MyPasswordEncryptor implements PasswordEncryptor {
@Override
public String encrypt(String password) {
// do something
}
@Override
public boolean check(String password, String encrypted) {
// do something
}
@Override
public String hashAlgorithmName() {
// This name is used to resolve the algorithm used for the encryption of a password.
return "NAME_OF_THE_ALGORITHM";
}
}
После этого вы можете подключить пользовательскую реализацию через конфигурацию процессного движка,
установив свойство passwordEncryptor в значение вашей реализации, например MyPasswordEncryptor.
См. Process Engine Bootstrapping — где именно необходимо задать это
свойство для вашей среды OpenBPM Engine.
Обратите внимание: даже если у вас уже есть пользователи с паролями, захешированными другими алгоритмами
(например, старыми пользовательскими алгоритмами или стандартным алгоритмом OpenBPM Engine SHA-512),
движок всё равно сможет автоматически их распознавать, даже после добавления нового пользовательского алгоритма.
Свойство customPasswordChecker представляет собой список алгоритмов хеширования, которые используются
для проверки (старых) паролей.
Стандартные алгоритмы хеширования OpenBPM Engine добавляются автоматически, поэтому вам нужно добавлять в этот список
только ваши предыдущие пользовательские реализации passwordEncryptor.
|
Пожалуйста, не используйте собственные реализации хеш-функций, а применяйте только стандартные алгоритмы, прошедшие экспертную проверку! |
Настройка генерации соли
Аналогично алгоритму хеширования, генерацию соли также можно настраивать.
Сначала необходимо реализовать интерфейс SaltGenerator из пакета io.openbpm.bpm.engine.impl.digest.
Это гарантирует, что будут реализованы все необходимые функции.
Вы можете посмотреть на классы Base64EncodedSaltGenerator и Default16ByteSaltGenerator из пакета
io.openbpm.bpm.engine.impl.digest, чтобы увидеть, как это реализовано в OpenBPM Engine.
Шаблон собственной реализации может выглядеть следующим образом:
public class MyCustomSaltGenerator implements SaltGenerator {
@Override
public String generateSalt() {
// do something
}
}
После этого вы можете подключить пользовательскую реализацию через конфигурацию процессного движка,
установив свойство saltGenerator в значение вашей реализации, например MyCustomSaltGenerator.
См. Process Engine Bootstrapping — где именно необходимо задать это
свойство для вашей среды OpenBPM Engine.
Лицензия и атрибуция
Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .
Оригинал документации: https://docs.camunda.org