Выбираем IAM в 2023 или, что есть кроме Keycloak

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Гипотетическая ситуация - ваш работодатель поручил вам выбрать Identity and Access Management platform.

Обязательно: open-source (Apache 2.0), self-hosted, OAuth 2.0, OIDC, SAML, LDAP.

Желательно: чтобы вас не уволили в ближайшие пару месяцев после внедрения.

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

С такими вводными 7 из 10 человек порекомендуют вам Keycloak и надо признать, не просто так. OpenIdСertified, восьмилетний матерый гигант, стал стандартом дефакто.

keycloak.org - встречает вас строгим внешним видом, обещая вам увлекательное путешествие в мир Enterprise решений и Java плагинов. О, да, вы точно полюбите Java плагины! У вас будут ваши собственные Java плагины, плагины других людей, которые вы когда-то поставили и теперь вынуждены поддерживать, т.к. их автор потерял всякий интерес к keycloak, а возможно и к жизни. Но не волнуйтесь, это ровно до тех пор, пока вы не решите обновить ваш IAM до новой, последней версии, ведь вместе с ней, половина ваших плагинов скорее всего просто перестанет работать.

Тем не менее, обилие функционала из коробки, наличие комьюнити, в том числе и русскоязычного (X5, Сбер, РСХБ) делают keycloak отличным выбором, особенно если у вас в компании уже есть Java стек.

Но как быть, если нет ни Java стека, ни моральной готовности разбираться с плагинами?

Если вы подумали, что вот бы как keycloak, но только на GO...

Знакомьтесь, CASDOOR

Выглядит так будто собрал 5300 Github stars за полтора года. Впрочем так оно и есть.
Выглядит так будто собрал 5300 Github stars за полтора года.
Впрочем так оно и есть.


Casdoor - A UI-first Identity Access Management (IAM) / Single-Sign-On (SSO) platform. OAuth 2.0, OIDC, SAML and CAS, integrated with Casbin RBAC and ABAC permission management.

Авторы Casbin не побоялись бросить вызов королю опенсорсных IAM'ов, что не удивительно, ведь уже не так страшно, когда твоя рабочая почта заканчивается на @qq.com, а за твоими плечами стоит такая "маленькая" компания как...Tencent.

Casdoor'а тут пока еще нет, но кто знает...
Casdoor'а тут пока еще нет, но кто знает...

Посмотреть как выглядит китайский IAM можно вот тут - https://door.casdoor.com.

Впечатления, как от современной китайской машины - на первый взгляд тут есть все - OAuth 2.0, OIDC, SAML, WebAuthn, синхронизация с LDAP, multi-tenants, rate-limit, captcha, обилие OAuth провайдеров из коробки. Для интеграции и кастомизации предлагается пакет SDK с поддержкой большинства популярных языков RESTful API и возможность зарегистрировать webHook на ключевые события в системе.

Из минусов можно отметить маленькое русскоязычное (да и англоязычное) комьюнити. Оно настолько маленькое, что его в общем то и нет. Отчасти это можно списать на молодой возраст проекта. Радует, что авторы достаточно активны на гитхабе, регулярно выпускают релизы и прислушиваются к фича реквестам. Вот пример, когда в марте попросили добавить rate-limit на логин и в августе уже вышел релиз. Кроме того не забываем, что это не просто пет проект пары энтузиастов. Если посмотреть на родной сайт https://casbin.com, то явно видна ставка на Casbin + Casdoor.

Ну а для тех, кому мало одной альтернативы - есть вторая:

                 The best of Auth0 and Keycloak combined. (с)
The best of Auth0 and Keycloak combined. (с)

Zitadel - Молодой стартап из Швейцарии, первый релиз был выложен на гитхабе в апреле 2020. За три года компания успела получить статус OpenIdСertified, выиграть пару наград, как лучший стартап в области инфосекьюрити.

API-first approach и Strong audit trail - декларируются как основные преимущества продукта. Цитадель предоставляет полный доступ ко всем возможностям продукта через GRPC и REST APIs. Strong audit trail - достигается за счет используемой архитектуры CQRS + event sourcing. По факту это дает как минимум две вещи: первое это - полную прозрачность происходящего в системе, второе - возможность использовать механизм Actions как реакцию на любое событие в системе. Если быть точным, такая опция появится в ближайшее время после реализации [Epic]: Action possibility on each event. Кстати, проект ведет публичный Roadmap, поэтому можно всегда быть в курсе на чем фокусируется команда.

Теперь немного о минусах.

Интеграция с LDAP еще в процессе разработки, однако уже есть draft PR add ldap provider login #5328, исходя из оригинальной задачи команда планирует успеть выпустить релиз в первом квартале 2023.

Модели доступа Zitadel поддерживает два подхода RBAC и ABAC, подробнее про реализацию можно тут. Однако в отличии от Casdoor, концепция permissions отсутствует, только Role и user-metadata.

Механизм кастомизации под названием Actions выглядит интересно, но пока находится на очень ранней стадии развития, есть пара примеров и по всей видимости даже желание собирать такие Actions в своем Marketplace.

Небольшая сводная таблица характеристик

модель

OIDC

LDAP

SAML

multi-tenant

OTP, U2F

API

DB

keycloak

RBAC, ABAC, UBAC, CBAC

+

+

+

plugin keycloak-orgs

+

REST

mariadb, mssql,  mysql, oracle, postgres

casdoor

ACL, RBAC, ABAC

+

+

+

+

+

REST

mysql, mssql, sqlite3, postgres

zitadel

RBAC,
ABAC

+

-

+

+

+

REST,GRPC

postgres, cockroachDB


В заключении хочется добавить, как известно конкуренция двигатель прогресса, Casdoor и Zitadel пусть и молодые, но однозначно перспективные проекты, которые заслуживают вашего внимания при выборе IAM.

Ну и напоследок то, без чего этот обзор не был бы обзором 2023 года, а именно спросить мнение у ChatGPT.

Ну кто бы сомневался....
Ну кто бы сомневался....

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Какую IAM берем?
0% Нет ничего лучше классики. Конечно Keycloak! 0
33.33% Casdoor. Выглядит мощно и современно. 1
0% Готов дать шанс Zitadel. В Швейцарии знают толк в качестве! 0
33.33% Напишу свой на Haskell 1
33.33% Другой вариант, укажу в комментариях 1
Проголосовали 3 пользователя. Воздержавшихся нет.
Источник: https://habr.com/ru/post/720490/


Интересные статьи

Интересные статьи

Это довольно нетипичная статья, и я хочу предупредить, что такой опыт для меня в новинку, и я надеюсь, что он вам понравится! Мы рассмотрим несколько важных вопросов, а также обратимся к науке, чтобы ...
Здесь рассматривается сравнение подходов Agile (Scrum, Kanban) и классического подхода (PMBoK). Читать далее
Часто в таблицах содержится большое количество логических полей, проиндексировать все из них нет возможности, да и эффективность такой индексации низка. Тем не менее, для работы с произвольными...
В старых добрых сериалах о космосе, вроде «Звездного пути», у людей напрочь отсутствовала паранойя. Почему? Они все поголовно пользовались умным замками. Подходит герой к двери — и та открыва...
Любой советский школьник, собиравший подобную схему знал, что без заземления — никак. Нынешнее поколение Z, взращенное айфонами, сомневается даже в необходимости антенн! Эта статья показывает...