Параметры преобразования приложения Netty в конечную точку поставщика услуг SAML2.0

#java #single-sign-on #netty #saml-2.0 #opensaml

#java #единый вход #netty #saml-2.0 #opensaml

Вопрос:

У меня есть приложение, использующее Netty 4.x framework, которое функционирует как своего рода сервер. Аутентификация должна быть федеративной, поэтому теперь мне нужно преобразовать ее в поставщика услуг SAML2.0.

Я провел некоторое исследование, и меня беспокоит то, что для использования существующих решений SAML2.0, т.Е. OpenAM, PingFederate, поставщиком услуг должно быть веб-приложение, работающее в каком-то веб-контейнере, чего нет в моем проекте. Это правда?

Я очень новичок в мире единого входа и федерации, я был бы очень признателен за любую информацию и советы.

Ответ №1:

SAML обычно использует браузер для поддержания общего «сеанса» между двумя сайтами.

Это делается следующим образом:

  • Один сайт A.org запускает сеанс A в браузере.
  • Он видит, что проверка подлинности SAML отсутствует, и отправляет сообщения поставщику удостоверений SAML. Через браузер с автоматической отправкой формы (JavaScript),
  • Поставщик удостоверений видит, что нет сеанса единого входа, создает форму входа
  • После формы входа в систему он отправляется обратно на сайт A.org с идентификатором сеанса единого входа (так сказать).
  • Если тот же браузер теперь на сайте B.net запускает новый сеанс B, он снова отправляется поставщику идентификационных данных SAML, который теперь должен возвращать существующий идентификатор сеанса единого входа.

Форма, отправленная поставщику удостоверений SAML, автоматически отправляется обратно, и возвращенная аутентификация также является автоматически отправленной формой.Разновидность межсайтового скриптинга.

Фильтр сервлетов SAML может принять этот результат и поместить UserPrinciepal в запрос приложения.

Настройка не слишком сложна. Вам нужна ваша собственная уникальная пара ключей для вашего «сервера»,

В целом это заняло довольно много времени. Это также помогло настроить собственного поставщика удостоверений. У Apache Shiro, решения для обеспечения безопасности за пределами мира серверов Java EE, не было решения SAML в то время, когда я работал над SAML.

Если у вас запущены демонстрационные IdP и SP, не должно быть слишком сложно сократить все. Возможно, с помощью FireFox с надстройкой TamperData для проверки связи.

Комментарии:

1. Спасибо за ваше отличное объяснение, Joop. Мои вопросы: 1. Я предполагаю, что этот «фильтр сервлетов SAML» работает на стороне SP, но мое приложение Netty не может быть сервлетом, поэтому, похоже, у меня должен быть отдельный модуль для этой цели. Знаете ли вы, какой была бы обычная практика для этого? 2. У меня есть доступ к IdP, проблема, которую я пытаюсь решить, заключается в том, как заставить мое приложение функционировать как SP.

2. Если вы действительно хотите сделать это самостоятельно, наличие рабочего IdP / SP1 / SP2 поможет. Обмен данными, вероятно, прост, копирование его в качестве шаблона и использование apache HttpClient для публикации заполненного текста должно быть простым. (Это все еще требует настойчивости.)