2014-08-27 2 views
3

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

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

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

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

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

+0

Я правильно понял, что вы хотели бы иметь одно развертывание Spring SAML, используемое несколькими приложениями, в отличие от интеграции Spring SAML отдельно в каждом из приложений? –

+0

Да, ваше понимание верное. В основном другие приложения будут весенним отдыхом с реализацией безопасности. Это будет мой план по внедрению SSO для SPRING RESTful APPS. –

+0

Какова наилучшая практика. Нужно ли нам продлить проект saml для повышения безопасности Spring для каждого приложения или у нас есть некоторая общая точка SP? Можем ли мы преобразовать текущее существующее Spring Security Extension для поддержки веб-служб REST? –

ответ

8

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

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

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

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

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

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