Интеграция аутентификации SAML для API-интерфейсов, разработанных в микросервисах

#spring-boot #spring-security #oauth-2.0 #microservices #saml-2.0

#spring-загрузка #spring-безопасность #oauth-2.0 #микросервисы #saml-2.0

Вопрос:

Мне нужно разработать набор микросервисов (rest API), которые будут использоваться веб-и мобильным клиентом, микросервисы находятся за шлюзом API, я должен интегрироваться с SSO (используя SAML) для аутентификации пользователя, я понимаю, что преобразование токена SAML в токен OAuth2 должно быть выполнено так, чтобыЯ могу проверить токен аутентификации на шлюзе API и сам обрабатывать авторизацию там, но мне непонятно, кто позаботится о преобразовании токена SAML в токен OAuth2, это IDP, которые предоставляют эту функциональность из коробки или мне нужно создать что-то свое?

Одно из возможных решений, о котором я думаю, это

  • Пользователь (из Интернета / с мобильных устройств) входит в систему через единый вход
  • Получает ответ SAML от IDP
  • Отправьте этот ответ SAML на сервер для генерации токена аутентификации
  • Сервер получает запрос на генерацию токена аутентификации, ищет ответ SAML и проверяет его на соответствие IDP
  • Если ответ SAML действителен, сгенерируйте токен аутентификации и отправьте его обратно клиенту
  • При последующем запросе API от клиента токен передается в качестве заголовка, который проверяет API gateway

Дело в том, что я немного неохотно внедряю SAML и OAuth самостоятельно и ищу какое-то готовое решение, но не смог его найти, может кто-нибудь, пожалуйста, предложить какую-нибудь библиотеку, решающую эту проблему, заранее спасибо.

Ответ №1:

Похоже, ваш подход верен — роль сервера авторизации (AS) заключается в том, чтобы иметь дело с интеграцией входа в систему SAML для вас. Должны потребоваться только изменения конфигурации, хотя, конечно, вам нужно использовать AS, который поддерживает интеграцию SAML.

Вашим пользовательским интерфейсам и API не нужно будет ничего знать о SAML, они будут просто использовать токены OAuth. Не должно быть никаких изменений кода.

Большинство компаний используют готовые решения, например, от недорогого облачного провайдера. В моем сообщении в блоге Federated Logins кратко изложен процесс интеграции IDP. Пошаговое руководство использует AWS Cognito в качестве AS — и IDP может быть SAML.

Ответ №2:

Я поддерживаю микросервис, который, похоже, может вам помочь — https://github.com/enterprise-oss/osso

Osso обрабатывает конфигурацию SAML для нескольких поставщиков IDP, нормализует полезную нагрузку и делает пользовательские ресурсы доступными для вас в потоке предоставления кода авторизации oauth 2.0.

Однако Osso в основном действует как сервер аутентификации — в настоящее время у нас нет способа для вашего API gateway проверить, что токен доступа (все еще) действителен, но для нас это было бы довольно тривиально добавить, мы были бы рады рассмотреть это.