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

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

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

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


person user3466814    schedule 23.06.2014    source источник


Ответы (1)


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

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

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

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

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

Конфигурация не слишком сложная. Вам нужна собственная уникальная пара ключей для вашего "сервера",

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

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

person Joop Eggen    schedule 23.06.2014
comment
Спасибо за прекрасное объяснение, Юп. Мои вопросы: 1. Я предполагаю, что этот фильтр сервлета SAML работает на стороне SP, но мое приложение Netty не может быть сервлетом, поэтому кажется, что для этой цели мне нужен отдельный модуль. Знаете ли вы, что было бы обычной практикой для этого? 2. У меня есть доступ к IdP, проблема, которую я пытаюсь решить, заключается в том, как заставить мое приложение работать как SP. - person user3466814; 24.06.2014
comment
Если вы действительно делаете это самостоятельно, вам поможет работающий IdP/SP1/SP2. Обмен данными, вероятно, прост, копирование его как шаблона и использование apache HttpClient для публикации заполненного текста должно быть простым. (Все еще нужно развивать настойчивость.) - person Joop Eggen; 24.06.2014