2016-12-01 6 views
0

У нас есть требование, когда нам нужно включить аутентификацию SAML в нашем приложении для клиента, у которого ADFS является IDP.Spring Security SAML со стандартным java-приложением

Рассмотрев различные варианты, я смог получить эту работу с безопасностью Spring SAML, как указано в документах. Теперь проблема заключается в интеграции безопасности SAML с нашим приложением.

К сожалению, наше приложение по-прежнему представляет собой приложение jagagation с использованием сервлетов и jsp, а не основанных на пружинах. Мне просто интересно, как можно интегрировать 2. В документе упоминается, что это возможно. Однако я не смог найти ни одной записи на нем.

Может ли кто-нибудь из нас обратиться к соответствующему источнику, который может предоставить рекомендации по этому подходу.

Спасибо.

ответ

1

Классы в пакете org.springframework.security.saml.websso содержат ядро ​​функциональности обработки SAML и не зависят от Spring Security. Они содержат немного импорта классов из Spring, поэтому Spring-core классы должны быть в пути к классам, но самому приложению не нужно использовать Spring/SpringSecurity.

Вам потребуется повторная реализация логики, которая относится к Spring Security - пакет org.springframework.security.saml - например. SAMLEntryPoint, SAMLProcessingFilter, и вызовите вашу реализацию во время жизненного цикла аутентификации. Логика этих классов проста, поэтому включение основных вариантов использования довольно просто.

+0

Благодаря Vladimír для руководства. Я начал с такого подхода. Мне потребовалось некоторое время, чтобы понять поток, но я догоняю. В настоящее время я отправляю вызов переадресации из моего приложения java в/spring-security-saml2/saml/login. При успешной аутентификации из ADFS я перенаправляю пользователя обратно в мое приложение Java, установив свойство RelayState в SamlEntryPoint. Теперь мне нужно получить userClaim в моем приложении Java. Мне было интересно, какой должен быть идеальный подход здесь. – shirjai

0

Спасибо Владимиру за руководство. Это, как я интегрировал стандартное приложение наследие Java с пружинной безопасности для проверки подлинности на основе SAML:

  1. Modified securityContext.xml
    набор idpDiscoveryEnabled = ложь
    набор forceAuthN = TRUE, чтобы заставить пользователя войти в систему, когда SAML маркер истекает
    обновленный defaulttargetURL в successHandler на странице authhandler.jsp, представленный в приложении весенней безопасности, для перенаправления обратно в мое приложение
  2. У меня есть фильтр, применяемый ко всем веб-звонкам в моем приложении java. Этот фильтр перенаправляет вызов/пружинными безопасности saml2/SAML/логин
  3. пружина SAML проверяет подлинность пользователя с ADFS.On успешной аутентификации, пользователь перенаправляется на authhandler.jsp
  4. Authhandler.jsp такой же, как индекс. jsp, но найденные претензии являются скрытыми полями здесь. Эти значения в скрытых полях отправляются обратно в мое стандартное приложение Java.
  5. Здесь мое приложение java выполняет проверку подлинности на уровне другого приложения и работает по желанию.

Оценил какие-либо предложения по импровизации или идентификации каких-либо недостатков в вышеуказанном подходе

Смежные вопросы