Я изучал схемы аутентификации REST (многие обсуждались на SO), и многие из них кажутся слишком сложными для моих целей. Я сформулировал более простую схему из элементов более сложных: но я хотел бы знать, есть ли в моем подходе дыры в безопасности.Безопасна ли эта простая схема аутентификации REST?
Влияющие факторы:
- TLS везде слишком медленно и ресурсосбережение тяжелый
- я не требуют защиты от перехвата, как вся информация является общедоступной.
Предлагаемая схема аутентификации:
- "Зарегистрироваться" и "Вход" достигается через соединение TLS. В поле «Ввод» указывается имя пользователя и пароль, а серверный сервер возвращает общий секретный ключ (а затем хранится в локальном хранилище клиентом, например, локальным хранилищем HTML5, хранилищем приложений и т. Д.).
- Каждый другой запрос проходит через открытого текста HTTP
стороне клиента алгоритм:
- Перед отправкой каждый запрос «соленый» с общим секретным ключом и хэш SHA берется из соленых запрос.
- Этот хэш вставляется в запрос в пользовательском HTTP-заголовке.
- Соль удаляется из запроса.
- Запрос отправляется с настраиваемым заголовком.
Сервер алгоритм сторона:
- сервер изолирует и удаляет пользовательские Hash заголовка из запроса.
- Соли сервера - строка запроса с общим секретным ключом.
- Сервер принимает хэш солевого запроса и сравнивает его со значением пользовательского хэш-заголовка.
- Если они то же самое, мы определили, какой пользователь отправил запрос и может продолжить авторизацию и т. Д. На основе этих знаний.
Существуют ли какие-либо уязвимости в этой схеме, которые я забыл?
В случае сомнений обратитесь к http://security.stackexchange.com/questions/18197/why-shouldnt-we-roll-our-own – CollinD