Всего несколько заметок
- существует разница между хешем (односторонним, необратимым) и шифрованием (обратимым).Вы не можете расшифровать хешированное значение.
- Я предполагаю, что вы работаете с учетными данными службы, а не учетными данными пользователя
Здесь я предполагаю, что вы говорите о
РЕШЕНИЕ 2: Перед отправкой пароля A в веб-сервис я делаю второе шифрование для этого существующего хэша.При поступлении в веб-сервис он расшифровывается для предоставления хеша, который затем проверяется на базе данных B.
Хеш фактически становится паролем, он не добавляет никакой безопасности к решению
РЕШЕНИЕ 1. Перед отправкой пароля A в веб-службу я расшифровываю его и отправляю по незашифрованному тексту через защищенное соединение HTTPS.
Существует несколько стандартов для аутентификации SOAP WS.клиент, используя простые учетные данные, это WS-UsernameToken.По сути, клиент отправляет свое имя пользователя и пароль обычным способом, полагаясь на HTTPS для обеспечения безопасности канала.
Моя проблема: если кто-то получает доступ к базе данных A и извлекает хешированные пароли, он может использовать SOAP-запрос для подключения к веб-службе
Один хеш-парольвы не сможете расшифровать его, но вы также не сможете использовать хешированное значение в качестве пароля.В противном случае вы получите «решение 2» и используете хеш в качестве пароля.
Действительно, это, как правило, проблема.Вы можете искать другие вопросы, как хранить учетные данные службы локально.Вся проблема в том, что вам нужно хранить учетные данные.По моему опыту, лучшее, что вы можете сделать, по крайней мере, сделать поиск немного сложнее, например, зашифровать служебные пароли, чтобы они не хранились в базе данных или конфигурационных файлах.В конце клиентскому приложению нужен ключ шифрования где-то для расшифровки учетных данных.Ключ также должен быть защищен.
Если вы работаете с учетными данными пользователя (идентификационные данные пользователя), вообще не храните пользовательские пароли на стороне клиента, есть другие способы авторизации действий пользователя (токен доступа, токен jwt, ..)