приложение для реализации единой точки аутентификации и авторизации. Данную технологию единого входа также называют Single Sign-On или, сокращенно, SSO. А подобные сервисы имеют общее название «Система управления идентификацией и доступом» или Identity and Access Management (IAM).
Keycloak может предоставить возможность пользователям получать права для различных приложений, пройдя один раз процесс аутентификации. Разработчикам не нужно для этого писать много кода. А инженеры DevOps могут настроить аутентификацию через общую базу пользователей для приложений, у которых нет дополнительных механизмов интеграции.
Среди функций и возможностей выделяют:
- SSO.
- Выдачу токенов.
- Двухфакторную аутентификацию.
- Авторизацию через социальные сети.
- Возможность интеграции со службами каталогов.
- Автоматическую аутентификацию с использованием тикетов Kerberos.
- Управление разными изолированными средами (Realm) со своими настройками.
- Свой интерфейс для регистрации и аутентификации пользователей с возможностью настройки внешнего вида.
Keycloak имеет клиент-серверную инфраструктуру. В качестве сервера используется готовый пакет, устанавливаемый на операционную систему (есть поддержка Linux, Windows) или docker-приложение. В качестве клиента используется адаптер — блок кода, который должен использовать разработчик для интеграции своего приложения с сервером.
Поддерживается два стандарта обмена данными аутентификации и авторизации: OpenID Connect и SAML. В зависимости от данного стандарта Keycloak предлагает готовые шаблоны адаптеров для языков программирования, платформ или приложений а также их фреймворков/расширений:
1. Для OpenID Connect:
- Java (Spring Boot, Wildfly Elytron OIDC).
- JavaScript.
- Node.js.
- C#.
- Python.
- Android/iOS.
- Apache Web Server (mod_auth_openidc).
2. Для SAML:
- Java.
- Apache Web Server (mod_auth_mellon).
Подробнее о поддерживаемых языках программирования и приложениях можно почитать в официальной документации.
Среди аналогов можно выделить:
- CASDOOR.
- RooX UIDM.
- OpenAM.
Еще немного о Keycloak на Википедии.