Безопасность для Spring Restful Web Services
Я пишу Spring Restful Web Services Project. Мне нужно написать безопасные веб-службы. Для безопасности я уже использую Spring Security + SSL, но теперь мне нужно безопасность для шифрования и подписания сообщений. Я знаю, как шифровать сообщение из кода, однако я ищу механизм для автоматического шифрования/дешифрования и подписания сообщения.
Я искал разные альтернативы для безопасности, включая Spring WSS и другие, но большинство из них предназначено для SOAP. Может ли кто-нибудь предложить мне какой-то лучший механизм безопасности и ссылку для него.
Ответы
Ответ 1
Существует несколько способов защиты ваших спокойных веб-сервисов, к сожалению, существует множество ссылок, которые предоставляют информацию для защиты мыльных веб-сервисов, но, как спокойная набирающая популярность, крайне необходимо найти способ защитить и найти способ для управления сеансами вашего спокойного веб-сервиса.
Таким образом, чтобы поддерживать мой MVC Spring с остаточной поддержкой, вам необходимо по крайней мере рассмотреть три аспекта
1) Аутентификация. - Для аутентификации Spring Можно использовать безопасность.
2) Авторизация. - Для авторизации запроса может использоваться OAuth.
3) Обеспечение связи. - SSL можно использовать для защиты канала связи.
4) Шифрование - Опять Oauth может решить цель
5) Подпись сообщения. - Опять же Oauth может решить цель
Таким образом, для обеспечения спокойного webservice Spring можно использовать защиту + OAuth. Другими механизмами безопасности, которые могут быть использованы, являются Http Basic Security и Digest Security.
Вот очень хороший пример обеспечения Spring успокаивающего веб-сервиса с безопасностью Spring:
http://java.dzone.com/articles/securing-restful-web-service
Также для использования безопасности Spring в сочетании с OAuth вы можете следовать этому руководству:
Spring безопасность с OAuth
Ответ 2
В основном у вас есть два шаблона для безопасности REST:
-
Шифровать и подписывать запросы/ответы на уровне приложения и запускать
через HTTP. Это требует значительного объема работы, поскольку вам необходимо
канонизировать все данные перед подписанием и обеспечивать клиент/сервер
точно соответствует одному и тому же процессу. Этот подход был принят в начале
версии протоколов веб-службы amazon.
-
Использовать SSL (возможно, с клиентскими сертификатами). Это предпочтительный
потому что нет необходимости изобретать велосипед. Ускорители SSL
и производительность будет значительно лучше, чем
обработка шифрования и подписание кода.
Amazon теперь перешел на использование SSL, и вы должны сделать то же самое. Эта статья дает хорошее сравнение двух подходов.
REST vs SOAP
Вы ссылались на SOAP и WS-Security, которые определяют протокол для шифрования и подписывания на уровне сообщения (а не транспорта). Причина, по которой WS-Security определяет такой протокол, заключается в обеспечении сквозной конфиденциальности, целостности и подлинности по брокерской архитектуре SOA. Например, вы можете отправить SOAP-сообщение из службы A в службу B, которая проходит через CD и E. SSL/TLS работает на транспортном уровне и поэтому будет защищать только сообщение между A и B. Однако REST не предназначен для брокерской архитектуры поэтому этот подход не применим в вашем случае.