Гипотетическая ситуация - ваш работодатель поручил вам выбрать 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.

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

Комментарии (8)


  1. alexrett
    00.00.0000 00:00
    +1

    Спасибо за сравнение. Хотел бы добавить, что еще есть Permify, который кажется тоже очень перспективным решением среди open-source IAM решений на go. Правда в проде еще не довелось поэксплуатировать, но как замена keycloak вполне мои задачи решил в тестовых сценариях.


  1. alex1t
    00.00.0000 00:00

    Тут я совсем не эксперт, но мне интересно - могут ли указанные продукты позволить такую схему:

    У нас развёрнут один из этих сервисов и обеспечивает авторизацию и т.д. Один из клиентов хочет подключить свой сервис для управления пользователями и ролям и ещё с SSO в придачу. Возможно ли вообще такое?


    1. MrAwesome Автор
      00.00.0000 00:00

      Зависит от сервиса клиента, если он поддерживает OIDC / SAML / LDAP то да.


      1. alex1t
        00.00.0000 00:00

        Спасибо, насколько я помню тогда речь шла про SAML


  1. MiT_73
    00.00.0000 00:00
    +3

    Тоже недавно интересовался данным вопросом. Помимо того что есть в стате, нашёл эти проекты:
    https://github.com/ory
    https://github.com/authorizerdev/authorizer
    https://github.com/logto-io/logto


  1. LordImperious
    00.00.0000 00:00

    Дополню список, по моему мнению такие продукты как authentik и gluu тоже имеют место быть

    goauthentik.io
    gluu.org/gluu-4


  1. Apokalepsis
    00.00.0000 00:00

    А кто-нибудь спрыгнул на Casdoor c Keycloak? Мне кажется выглядит очень интересной заменой.


    1. MrAwesome Автор
      00.00.0000 00:00

      Надеюсь, что в ближайшее время появятся успешные или не очень истории внедрения.
      Если у меня такой появится, обязательно поделюсь.