Я создаю публичное приложение REST для доступа клиентов.Пытаясь разработать для него защиту, я посмотрел на то, как AWS обрабатывает свою REST-аутентификацию, используя ключ доступа и секретный ключ, чтобы подписать сообщение перед отправкой на сервер AWS.Таким образом, я протестировал пример с помощью Jersey, JSP и javascript (jsonp), и, похоже, он работает нормально.
1.) При загрузке страницы JSP берет ключ доступа клиента и дату / время (преобразованныев эпоху) и выписывает на страницу.Он также берет эти две части информации и объединяет их с уникальным секретным ключом клиента через HMAC-SHA1.
2.) Когда я выполняю запрос ajax JQuery, я передаю все три части информации.*
- ключ доступа пользователя
- дата / время (EPOCH)
- подписанное сообщение
3.) Со стороны Джерси я беру доступключ и дата / время и проверьте базу данных для секретного ключа пользователя.Затем я выполняю свою собственную подпись HMAC-SHA1 и сравниваю ее с подписанным сообщением от пользователя, отправившего подписанное сообщение.Если они совпадают, то разрешите им использовать наш веб-сервис.Я также проверяю дату / время и принимаю только сообщения, подписанные в течение последних 15 минут.
У меня вопрос, достаточно ли это безопасно?