Single Sign-On или SSO — технология, которая позволяет пользователям получать доступ к различным приложениям, используя единый сервис аутентификации и одни учетные данные.
Такой подход повышает не только удобство пользователей, но и безопасность, так как управление учетными данными, политиками доступа, процессами аутентификации и мониторинг централизованы.
В статье мы рассмотрим основные подходы к реализации SSO на примере решений с открытым исходным кодом OpenAM и OpenIG.
Рассмотрим компанию с клиентскими или партнерскими сервисами на одном домене. Например, банком и маркетплейсом на домене example.org
.
Архитектура SSO показана на схеме ниже:
На схеме OpenAM выступает в качестве сервиса аутентификации, OpenIG — в качестве шлюза авторизации.
Процесс аутентификации через SSO для пользователя будет выглядеть следующим образом:
example.org
.Рассмотрим предприятие, сотрудники которого работают в домене под управлением Windows Server. Для доступа к корпоративным сервисам будет использоваться встроенная аутентификация Windows по протоколу Kerberos.
Архитектура системы выглядит следующим образом:
Процесс аналогичен примеру выше. Отличается тем, что для аутентификации пользователей OpenAM обращается в Kerberos Key Distribution Center (KDC).
Процесс аутентификации с технической точки зрения:
internal
и перенаправляет пользователя на требуемое приложениеС технической точки зрения процесс выглядит достаточно сложным, но для пользователя — максимально простым: он просто открывает в браузере нужное приложение и сразу получает доступ без каких-либо дополнительных действий.
В примерах выше все сервисы были расположены на одном домене. Как же решить задачу, если сервисы находятся в разных доменах? Например, сеть супермаркетов стала партнером компании доставки продуктов и хочет использовать учетные записи своих клиентов для оформления доставки.
Для такого случая подходит федеративный SSO.
Федеративный SSO — технология, позволяющая сервисам на разных доменах, использовать доверенный сервис аутентификации.
Такой подход реализуется при помощи федеративных протоколов SAML, OAuth2 или OpenID Connect. Несмотря на различия в реализации, эти протоколы выполняют одну задачу - использование доверенного провайдера учетных записей (Identity Provider) для аутентификации.
Федерация состоит из двух сущностей - Identity Provider (IdP) и Service Provider (SP). IdP и SP знают друг о друге и доверяют друг другу.
Архитектура федеративного выглядит следующим образом:
OpenAM выступает качестве Identity Provider, приложение — качестве Service Provider.
OpenAM может выступать как в качестве Service Provider, так и в качестве Identity Provider. Но, как правило, используется в качестве Identity Provider.
Аутентификация при использовании федеративного SSO в общем случае выглядит так, независимо от используемого протокола:
Мы рассмотрели в статье только самые основные способы организации Single Sign-On. На практике возможна их комбинация, например, использование Kerberos аутентификации в OpenAM для федеративного доступа во внешнее приложение по протоколу SAML.
Технология Single Sign-On предоставляет удобный и безопасный способ управления доступом к различным сервисам, будь то сайты на одном домене, корпоративные приложения или сервисы на разных доменах. Использование решених, таких как OpenAM и OpenIG, позволяет гибко настраивать процессы аутентификации и авторизации, адаптируя их под конкретные задачи бизнеса. Внедрение SSO не только упрощает взаимодействие пользователей с системами, но и повышает уровень безопасности за счет централизованного управления.