В текущем проекте, над которым я работаю, у нас есть следующая проблема.
Наше программное обеспечение является платформой служб на основе определения местоположения, и приложения могут подключаться и использовать наши службы через открытые веб-службы с использованием протокола SOAP. До сих пор наша платформа использовалась только внутренними приложениями, но теперь мы хотели бы открыть ее для сторонних приложений. Для этого нам понадобится механизм аутентификации.
Из-за инфраструктуры и решения для балансировки нагрузки наших клиентов мы не можем использовать HTTPS. Первоначальная идея заключалась в том, что приложения могут просто использовать HTTPS и отправлять пароль, который мы проверяем.
Решение может быть следующим: У приложения есть пароль. Приложение генерирует случайную строку (соль) и создает хеш. Затем приложение создает HTTP-запрос, отправляя хэш, соль и временную метку. Этих трех достаточно для аутентификации, так как мы можем сгенерировать один и тот же хэш и сравнить.
Моя проблема в том, что для этого нам нужно сохранить пароль в нашей базе данных в виде открытого текста, потому что нам нужно проделать тот же процесс, используя заданную соль, чтобы мы могли сравнить результат и аутентифицировать приложение. Хранение паролей в открытом виде недопустимо.
Знаете ли вы о каком-либо механизме аутентификации / контроля доступа, который подошел бы к этой ситуации? Как правило, знаете ли вы о каких-либо хороших книгах / источниках о механизмах аутентификации / контроля доступа приложений?
Любая помощь приветствуется. Заранее спасибо!