Внедрение SAML Spring Security

Я начинаю с нового проекта Spring, в котором планирую использовать SSO. Я красил блоги и узнал, что весенняя безопасность SAML будет лучшим решением для SP.

Итак, я реализовал образец приложения Spring Security SAML, предоставленный сайтом Spring https://github.com/SpringSource/spring-security-saml как SP вместе с Shibboleth IDP.

IDP подключается к серверу LDAP. Я могу запустить пример приложения безопасности Spring.

Я не понимаю, как я могу использовать это расширение SAML безопасности Spring вместе с несколькими проектами Spring.

Любая ссылка на пример или предложения по архитектуре интеграции проекта Spring SAML с несколькими приложениями Spring MVC будут полезны.


person Suresh J    schedule 27.08.2014    source источник
comment
Правильно ли я понимаю, что вы хотели бы, чтобы одно развертывание Spring SAML использовалось несколькими приложениями, а не интегрировать Spring SAML индивидуально в каждое из приложений?   -  person Vladimír Schäfer    schedule 30.08.2014
comment
Да, ваше понимание правильное. По сути, другие приложения будут работать на весну с реализацией безопасности. Я планирую реализовать SSO для SPRING RESTful APPS.   -  person Suresh J    schedule 01.09.2014
comment
Какая лучшая практика. Нужно ли нам расширять проект Saml расширения безопасности Spring для каждого приложения или у нас может быть некогда общая точка SP? Можем ли мы преобразовать текущее существующее расширение безопасности Spring для поддержки веб-служб REST?   -  person Suresh J    schedule 01.09.2014


Ответы (1)


При условии, что ваши REST API вызываются только веб-приложением, которое развертывается вместе с ними (в одной войне и, следовательно, совместно используя один и тот же HTTP-сеанс), вы можете использовать Spring SAML + Spring Security для их защиты.

Spring SAML будет использоваться для аутентификации пользователей на удаленном IDP и заполнения их прав (предоставленных полномочий); Затем Spring Security можно использовать для определения политик безопасности для API-интерфейсов, вызываемых из пользовательского интерфейса.

Если вы хотите иметь возможность вызывать REST API с удаленных клиентов, вы можете изучить проект Spring Security OAuth - поскольку это больше не касается единого входа в систему через Интернет.

Можно создать центральную установку Spring SAML, которая обрабатывает всю логику единого входа. Конечно, вам потребуется реализовать механизм, в котором Spring SAML передает информацию об аутентифицированном пользователе и его атрибутах другим вашим приложениям и делает это безопасным способом. Один из возможных подходов к этому (при условии, что приложения развернуты в одном домене и, следовательно, могут совместно использовать файлы cookie):

  • после аутентификации в Spring SAML установите общий файл cookie, который виден всем другим приложениям и который, например, подписанный ключом Spring SAML или зашифрованный с помощью общего ключа, файл cookie также должен содержать атрибуты пользователя
  • это можно сделать в настраиваемом AuthenticationSuccessHandler, который впоследствии, как ожидается, перенаправит пользователя в правильное приложение (например, на основе некоторой настраиваемой логики или состояния реле)
  • целевому приложению необходимо проверить файл cookie (путем проверки подписи или дешифрования с использованием общего ключа, возможно, выполнив другие проверки), проанализировать атрибуты и запустить собственный сеанс, который предварительно аутентифицируется на основе содержимого файла cookie

Все это можно сделать с помощью реализации стандартных интерфейсов Spring Security и Spring SAML. Но это нетривиальная задача - в основном с учетом того, что любая уязвимость безопасности в вашей реализации может поставить под угрозу безопасность ваших приложений.

person Vladimír Schäfer    schedule 24.09.2014