Безопасность для 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 не предназначен для брокерской архитектуры поэтому этот подход не применим в вашем случае.