#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 проверить, что токен доступа (все еще) действителен, но для нас это было бы довольно тривиально добавить, мы были бы рады рассмотреть это.