Реклама АО ТаймВэб
Реклама АО ТаймВэб

Как настроить SSO на примере Keycloak, Blitz Identity Provider и Trusted.ID

Обсудить
Как настроить SSO на примере Keycloak, Blitz Identity Provider и Trusted.ID
Реклама. АО «ТаймВэб». erid: 2W5zFJBys5J

В процессе разработки и настройки собственного SSO-сервиса на базе протокола OIDC возникла необходимость изучить аналогичные бесплатные решения, представленные на рынке. Целью было скорректировать архитектурные решения, перенять удачные идеи и избежать недостатков в установке и настройки сервиса. К удивлению, выяснилось, что представленные продукты могут существенно отличаться друг от друга, но при этом сохранять единый функционал. Об этом и пойдет речь в статье.

Выбор

Первые трудности возникли уже на этапе выбора. Какое SSO-решение использовать? Поиск выдал множество статей и подборок вроде «Top 45 Open Source SSO» или «Лучшие решения для аутентификации» – но в основном это готовые коробочные продукты, внутреннее устройство которых остается неясным. Поэтому первым делом я сократил поиск до тех решений у которых есть Open Source.

Чаще всего попадался Keycloak – популярное open-source SSO-решение с активным сообществом. Именно с него и началось знакомство.

Также хотелось рассмотреть отечественные решения, поскольку локализация и соответствие российским требованиям сейчас критичны. В результате выбор пал на два продукта:

  1. Trusted.ID от ООО «Цифровые технологии» – компания известна своим продуктом «КриптоАРМ», что вызвало интерес к их Open Source SSO-решению.

  2. Blitz Identity Provider от компании ООО «РЕАК СОФТ» – привлек список корпоративных клиентов и достаточно живой сайт.

Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться

Критерии сравнения

Для объективного сравнения решений важно определить, на что обращать внимание. Первоначально я начал составлять список интересных функций, но он быстро стал избыточным, перевалив за 40. Очевидно, что каждая организация имеет собственные приоритеты: для одних важно наличие кастомных полей в профиле, для других – кастомизация интерфейсов или гибкость настройки политик безопасности.

Поэтому для оценки я оставил только универсальные базовые параметры:

  • Поддерживаемые протоколы аутентификации (OIDC, OAuth 2.0, SAML и др.).
  • Гибкость настройки (изменение правил валидации полей профиля, возможность расширять профиль пользователя кастомными полями, политики безопасности).
  • Удобство интеграции с приложениями (наличие SDK, REST API, документации).
  • Расширяемость (поддержка сторонних плагинов, кастомные провайдеры, вебхуки).
  • Простота установки и администрирования.
  • Кастомизация интерфейса и e-mail-уведомлений.
  • Отечественное происхождение и соответствие локальным требованиям.
  • Возможность подключения 1С и LDAP.

Обзор open-source SSO-сервисов

Характеристика

Keycloak

Trusted.ID

Blitz Identity Provider

Open Source

Да

Да

Да

Поддержка протоколов

OIDC, SAML

OIDC, OAuth 2.0

OIDC, OAuth 2.0, SAML

Простота установки

Легко (docker, одна команда)

Легко (docker, несколько команд)

Легко (github, docker)

Гибкость настройки

Высокая, но сложная

Высокая

Высокая, но сложная

Кастомизация писем и интерфейса

Ограничена (выбор из нескольких вариантов)

Гибкая

Гибкая

Гибкость валидации профиля

Высокая

Высокая

Высокая

Документация и SDK

Хорошая

Средняя

Средняя

Отечественное решение

Нет

Да

Да

Подключение 1С и LDAP

LDAP

Да

Да

Как видно из таблицы, продукты по-своему идентичны за небольшим исключением. Сделать выбор на базе таких сравнений практически не возможно. Вдаваться в более мелкие детали будет не объективно, так как не для всех те или иные методы могут оказаться критичными для сравнения. Поэтому далее я решил поделиться краткими инструкциями установки продуктов и своим мнением, чтобы вы могли самостоятельно их попробовать и сравнить свое мнение.

Как настроить SSO при помощи Keycloak

Keycloak предлагает нам установку и работу через docker. В инструкции по сути всего одна команда:

docker run -d --name keycloak \
  -p 8080:8080 \
  -e KEYCLOAK_ADMIN=admin \
  -e KEYCLOAK_ADMIN_PASSWORD=admin \
  quay.io/keycloak/keycloak start-dev

После окончания установки мы переходим по ссылке и попадаем на виджет.

Виджет Keycloak

рис.1 Виджет Keycloak

Входим в систему под admin/admin.

Личный кабинет Keycloak

рис.2 Личный кабинет Keycloak

Это очень удобно, но только для первого запуска. При попытке настроить систему под себя возникает множество вопросов. Как запустить на другом домене? Как поменять порт? Спасает ситуацию, что у Keycloak очень много различной документации, которая поможет получить на это ответы.

Двоякое осталось впечатление: простая установка, но появляются вопросы по настройке маршрутизаций.

Подключение ресурса

Убил порядка 3 часов на попытку подключения ресурса moodle. Проблема была с получением client_secret, а также запуском Keycloak на https. Результат отрицательный. По моему мнению, если за несколько часов не достигнут результат, то система относится к категории не дружеских и неудобных.

Выводы после использования

Простой интерфейс администратора, ничего лишнего. Внушительный набор настроек, неудивительно, что он достаточно популярен. Но при попытке настроить подключения возникает очень много вопросов. А это что? А это зачем? А как это работает? Но повторюсь, наличие большого количества документации спасает ситуацию.

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

Как настроить SSO при помощи Trusted.ID

Cервис SSO Trusted.ID работает через docker, как и Keycloak, это придает гибкость установки под различные операционные системы. Другими словами, если вы можете установить docker на своей машине, значит вы сможете установить Trusted.ID. Это удобное и распространенное решение для подобных продуктов.

Установив docker, приступаем к выполнению последовательных команд:

wget https://git.digtlab.ru/trusted/id/-/archive/docker/id-docker.zip
unzip id-docker.zip
cd id-docker/
chmod +x ./build.sh
docker compose up -d

И прописываем в файле hosts (если запускаете локально)

127.0.0.1       id.example.ru

После команды “docker compose up -d” поднимается система. Перейдя по адресу https://id.example.ru, попадаем на виджет.

Виджет Trusted.ID

рис.3 Виджет Trusted.ID

Используя root/changethis, попадаем в личный кабинет.

Обратил внимание, что достаточно большой перечень различных параметров присутствует в файле env, при помощи которых можно настроить систему более гибко, в том числе и кастомизацию, адрес ресурса, параметры redis и postgres, а также, судя по всему, некоторые подключения.

Перечень env в Trusted.ID

рис.4 Перечень env в Trusted.ID

Это часто применяемая практика с env, механики известные. Такой формат мне показался удобнее, чем в Keycloak.

Подключение ресурса

Сперва создаем приложение в Trusted.ID. Для этого переходим в список приложений и нажимаем «Создать приложение».

Личный кабинет Trusted.ID

рис.5 Личный кабинет Trusted.ID

Заполняем 3 параметра приложения: название приложения, адрес приложения и возвратный URL.

Настройки приложения в Trusted.ID

рис.6 Настройки приложения в Trusted.ID

После создания приложения копируем client_id и client_secret. Они нам нужны для настройки на стороне ресурса.

Карточка приложения в Trusted.ID

рис.7 Карточка приложения в Trusted.ID

Настраиваем сторонний ресурс. Я использую сервис moodle. Для настройки необходимо указать client_id, client_secret, domain (базовый URL: https://id.example.ru/api/oidc).

Настройка службы OAuth 2 в Moodle

рис.8 Настройка службы OAuth 2 в Moodle

Прописываем endpoints.

Настройка endpoints для службы OAuth 2 в Moodle

рис.9 Настройка endpoints для службы OAuth 2 в Moodle

Готово. Теперь на ресурсе есть наш способ авторизации.

Виджет Moodle

рис.10 Виджет Moodle

При нажатии на local.MIR мы проходим авторизацию через свой SSO.

Виджет авторизации Trusted.ID в приложение
рис.11 Виджет авторизации Trusted.ID в приложение

Обратите внимание на тонкости настройки, их не так много, но они есть. В целом, сбор этой информации занял немного времени.

Знакомство с продуктом

Большой контраст с Keycloak. Если Keycloak разом вываливает на вас все, что у него есть и в «админских» таблицах, то Trusted.ID заманивает своей простотой и открытостью, постепенно приоткрывая свой функционал. При настройке подключения и самой системы вопросов практически не возникает, все интуитивно понятно.

Карточка приложения в Trusted.ID

рис.12 Карточка приложения в Trusted.ID

Обратил внимание, что помимо различных настроек должное внимание уделено кастомизации не только системы, но и виджета, писем.

Шаблон письма в Trusted.ID

рис.13 Шаблон письма в Trusted.ID

Достаточно интересный продукт, с одной стороны кажется, что функционала меньше, чем в Keycloak, но нет ощущения, что чего-то не хватает. Интерфейс приятно порадовал. 

Как настроить SSO при помощи Blitz Identity Provider

Работает аналогично Trusted.ID и Keycloak на docker. Здесь нам предлагают склонировать репозиторий и запустить.

git clone https://github.com/reaxoft/blitz-demo.git
docker compose up -d

Переходим по ссылке (https://localhost/blitz/console) и попадаем на виджет.

Виджет Blitz Identity Provider

рис.14 Виджет Blitz Identity Provider

Входим под admin/blitz-demo.

Личный кабинет Blitz Identity Provider

рис.15 Личный кабинет Blitz Identity Provider

Подключение ресурса

Попробовал настроить подключение ресурса moodle. Дошел до проблемы с отправкой параметра state. В течение нескольких часов я не смог разрешить данную проблему. Если у кого-то получится настроить, то поделитесь своим опытом, буду вам признателен.

Выводы после использования

Первое впечатление я бы охарактеризовал как Keycloak 2.0. Более приятный интерфейс, но остается впечатление дежавю. Обилие настроек и параметров, несомненно, дает гибкость, но при настройке подключений глаза просто разбегаются от обилия кнопок, параметров и вложений.

Почему выбор SSO важен?

Каждое SSO-решение имеет свои тонкости, которые могут оказаться критичными:

  • Гибкость правил валидации. В Trusted.ID и Blitz Identity Provider уделено особое внимание настройке атрибутов профиля, кастомизации данных пользователя и их проверке.
  • Кастомизация писем и UI. В Trusted.ID и Blitz Identity Provider легко настроить e-mail-уведомления и внешний вид интерфейса, в то время как Keycloak требует доработки через расширения.
  • Простота интеграции. Keycloak предлагает хорошую документацию, но может потребовать дополнительных настроек, тогда как Trusted.ID и Blitz Identity Provider ориентированы на удобство администраторов.

Безопасность SSO: лучшие практики

  • Используйте многофакторную аутентификацию (MFA).
  • Ограничивайте время жизни сессий.
  • Настройте аудит и логи аутентификации.
  • Регулярно обновляйте Keycloak, Trusted.ID и Blitz Identity Provider.

Итоги

SSO – мощный инструмент, повышающий безопасность и удобство работы пользователей. Однако обилие решений делает выбор непростым.

Для каждого решения ответ на вопрос «как настроить SSO?» может быть достаточно сложным. Поэтому следует обращать внимание на те решения которые вызывают меньше проблем и вопросов не только на этапе установки, но и на этапе подключения ресурсов.

Keycloak – гибкий, широко распространённый и хорошо документированный, но разработан за рубежом, что может вызвать сложности с локальной поддержкой.

Blitz Identity Provider и Trusted.ID – российские решения, ориентированные на локальные требования, но с разными целями и архитектурными подходами.

Выбор подходящего продукта зависит от конкретных задач: требований к безопасности, удобству, интеграциям и поддержке.

Лично для своих целей мне подходит Trusted.ID.

Каким SSO-решением пользуетесь вы?

Поделитесь своим опытом и предпочтениями в комментариях – это поможет другим в выборе.

Наши постоянные авторы и читатели делятся лайфхаками, основанными на личном опыте. Полная свобода самовыражения.

Комментарии

С помощью соцсетей
У меня нет аккаунта Зарегистрироваться
С помощью соцсетей
У меня уже есть аккаунт Войти
Инструкции по восстановлению пароля высланы на Ваш адрес электронной почты.
Пожалуйста, укажите email вашего аккаунта
Ваш баланс 10 ТК
1 ТК = 1 ₽
О том, как заработать и потратить Таймкарму, читайте в этой статье
Чтобы потратить Таймкарму, зарегистрируйтесь на нашем сайте