1. Обзор
Пользователям организации с несколькими приложениями часто необходимо проходить аутентификацию в нескольких системах. В результате пользователи должны помнить несколько учетных записей и паролей. Технология единого входа ( SSO ) является решением этой проблемы. SSO предоставляет единые учетные данные для входа в набор систем .
В этом руководстве мы кратко объясним, что такое SSO, а затем рассмотрим семь различных решений SSO для приложений Java.
2. Единый вход
Реализация решения SSO может выполняться с использованием любого из двух протоколов:
- SAML 2.0
- Подключиться к OpenID
SAML 2.0 (язык разметки подтверждения безопасности) упрощает аутентификацию пользователей. Это позволяет пользователям только регистрироваться и аутентифицироваться у поставщика удостоверений для доступа к нескольким службам. Он основан на XML. OpenID Connect Connect ( OIDC ) является преемником SAML 2.0. Кроме того, это расширение протокола OAuth 2.0 , используемого для аутентификации. OIDC проще настроить, чем SAML 2.0.
3. Брелок
Keycloak — это система управления идентификацией и доступом (IAM) с открытым исходным кодом . Он предоставляет такие функции, как SSO, объединение пользователей, детальная авторизация, вход через социальные сети , двухфакторная аутентификация (2FA) и многое другое. Кроме того, он поддерживает OpenID Connect, OAuth 2.0 и SAML. Имеет хорошую интеграцию со сторонними инструментами. Например, он очень хорошо интегрируется с приложением Spring Boot . Последний релиз можно найти здесь . Кроме того, он предоставляет удобную консоль администратора для администраторов и разработчиков для настройки и управления Keycloak. Исходный код доступен на GitHub .
4. Сервер идентификации WSO2
WSO2 Identity Server — это система IAM с открытым исходным кодом, разработанная WSO2 . Он предлагает SSO, 2FA, Identity Federation, вход через социальные сети и многое другое. Он также поддерживает почти все популярные стандарты идентификации. Более того, он поставляется с консолью администратора и предоставляет API для интеграции с другими приложениями. Однако в основном он написан на Java, а исходный код доступен на GitHub .
5. Глуу
Gluu — это облачное решение IAM с открытым исходным кодом и множеством функций для управления доступом. Он обеспечивает строгую аутентификацию, мобильную аутентификацию, 2FA и Identity Brokering. Кроме того, он также поддерживает открытые веб-стандарты, такие как OpenID Connect, SAML 2.0, FIDO и доступ, управляемый пользователями. Он написан на языке Python . Также на GitHub доступны скрипты для автоматизации развертывания и настройки Gluu Server .
6. Аперео КАС
Apereo CAS — это система SSO корпоративного уровня с открытым исходным кодом . Кроме того, он является частью проекта Central Authentication Service (CAS). Как и предыдущие решения, оно поддерживает несколько протоколов, таких как SAML, OAuth 2.0, OpenID Connect и другие. Кроме того, он может интегрироваться с uPortal, BlueSocket, TikiWiki, Mule, Liferay, Moodle и другими. Он построен на основе Spring Boot и Spring Cloud. Исходный код доступен на GitHub .
7. Весенняя безопасность OAuth2
Мы можем использовать проект Spring Security OAuth для реализации решений единого входа. Он поддерживает поставщиков OAuth и потребителей OAuth. Кроме того, мы можем реализовать функциональность 2FA с помощью Soft Token и Spring Security.
8. ОпенАМ
OpenAM — это решение для управления с открытым доступом, которое включает аутентификацию, авторизацию, систему единого входа и поставщика удостоверений. Он поддерживает междоменный единый вход (CDSSO), SAML 2.0, OAuth 2.0 и OpenID Connect. Последний релиз и исходный код можно найти здесь .
9. Аутелия
Authelia — это сервер аутентификации и авторизации с открытым исходным кодом, который обеспечивает SSO и 2FA . Он предоставляет несколько аппаратных двухфакторных аутентификаций с использованием ключей безопасности, совместимых с FIDO2 Webauthn . Кроме того, он поддерживает одноразовые пароли на основе времени, сгенерированные такими приложениями, как Google Authenticator. Сервер Authelia написан на языке Go , и весь его исходный код доступен на GitHub .
10. Заключение
Сегодня многие организации используют SSO. В этой статье мы очень подробно рассмотрели решения SSO в экосистеме Java. Некоторые решения предоставляют полный IAM, а другие — только сервер единого входа и методы аутентификации.