Задеплойте Keycloak в один клик
Управление идентификацией и доступом с открытым кодом: единый вход в ваши приложения по OpenID Connect и SAML
Альтернатива Auth0 и Okta на вашей машине.
Что такое Keycloak?
Keycloak — сервер управления идентификацией и доступом: ваши приложения поручают ему вход, и, войдя один раз, человек входит сразу во все. Он поддерживает OpenID Connect, OAuth 2.0 и SAML 2.0, поэтому большинство приложений и фреймворков подключаются к нему своими стандартными библиотеками. Он впускает людей по паролю, passkey или через аккаунт в соцсети или сервисе вроде Google или GitHub, добавляет двухфакторную аутентификацию с одноразовыми кодами, синхронизирует пользователей из LDAP и Active Directory и дает каждому пользователю управлять своим профилем, паролем и сессиями в консоли аккаунта.
Keycloak — инкубационный проект Cloud Native Computing Foundation. Его используют и компании, и домашние лаборатории, чтобы поставить один вход перед множеством приложений. Этот шаблон запускает его в продакшен-режиме с PostgreSQL за прокси и создает администратора realm master по данным из полей еще до того, как Keycloak начнет кому-либо отвечать. Подвох: Keycloak мощный, и настроек у него много, так что для первого клиента придется кое-что почитать, а работает он на Java и потому занимает больше памяти, чем большинство серверов аутентификации.
Хостинг Keycloak на Pethost
- Вы входите в Pethost — с passkey, через GitHub или Google. Машины еще нет? Вы выбираете тариф, и ссылка ждет, пока машина не будет готова.
- Окно «Новый проект» открывается на приложении Keycloak. Вы заполняете то, что оно просит, и нажимаете «Создать проект»: Имя пользователя, Пароль администратора.
- Через минуту-две Keycloak работает по своему адресу с HTTPS. Секреты создаются случайно, а данные попадают в ночной бэкап.
- Это проект как любой другой: вы или ваш агент можете его изменить, откатить или восстановить.
Вопросы про Keycloak
Keycloak бесплатный?
Да. Keycloak распространяется с открытым кодом под лицензией Apache 2.0, без платной редакции и без ограничений на число пользователей или приложений. Red Hat продает поддержку своей сборки Keycloak — Red Hat build of Keycloak.
Keycloak или Auth0: что выбрать?
Оба впускают пользователей по OpenID Connect и SAML, со входом через соцсети и двухфакторной аутентификацией. Auth0 — облачный сервис, цена которого зависит от числа активных пользователей в месяц, а Keycloak вы запускаете сами, бесплатно для любого числа пользователей, но и присматривать за ним вам.
Можно ли входить в Keycloak через Google или GitHub?
Да. Раздел «Поставщики идентификации» в realm добавляет Google, GitHub, Facebook, Microsoft и другие сервисы или любого поставщика OpenID Connect или SAML 2.0 кнопками на странице входа, без изменений в ваших приложениях.
Поддерживает ли Keycloak двухфакторную аутентификацию и passkey?
Да. Он принимает одноразовые коды из приложений вроде Google Authenticator или FreeOTP, коды восстановления и passkey, а realm может требовать их от всех или разрешить пользователям включать их в консоли аккаунта.
Почему Keycloak пишет, что я временный администратор?
Keycloak помечает администратора, которого создает при первом запуске, как временного и просит завести постоянного: добавьте пользователя в realm master, дайте ему роль admin на вкладке «Сопоставление ролей», войдите под ним и удалите временного администратора.
Сколько памяти и диска нужно Keycloak?
Keycloak работает на Java: в простое около 550 MB памяти вместе с Postgres, больше при множестве пользователей и сессий; его база данных остается небольшой. На Pethost ему хватит тарифа Starter, и рядом останется место для других приложений.
Keycloak: файл Docker Compose
Шаблон — это этот compose.yaml и переменные, которые пишутся в .env проекта при его создании. Pethost запускает файл так, как он написан.
Контейнеры: keycloak (quay.io/keycloak/keycloak:26.8), postgres (postgres:18-alpine).
Тома, в ночном бэкапе: db.
services:
keycloak:
image: quay.io/keycloak/keycloak:26.8
restart: unless-stopped
command: start
environment:
KC_DB: postgres
KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak
KC_DB_USERNAME: keycloak
KC_DB_PASSWORD: ${POSTGRES_PASSWORD}
KC_HOSTNAME: ${URL}
# The proxy serves HTTPS and passes requests on over HTTP, saying in X-Forwarded-* who sent
# them and how.
KC_HTTP_ENABLED: "true"
KC_PROXY_HEADERS: xforwarded
KC_HEALTH_ENABLED: "true"
# The administrator of the master realm is made from these at the first start, before
# Keycloak answers anyone; Keycloak calls it temporary until a permanent one replaces it.
KC_BOOTSTRAP_ADMIN_USERNAME: ${ADMIN_USERNAME}
KC_BOOTSTRAP_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
depends_on:
postgres:
condition: service_healthy
# The port listens before Keycloak is ready: the deploy waits for its readiness, which its
# management port answers. The image has no curl: bash asks it.
healthcheck:
test: ["CMD-SHELL", "exec 3<>/dev/tcp/127.0.0.1/9000 && printf 'GET /health/ready HTTP/1.1\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n' >&3 && grep -q '\"UP\"' <&3"]
interval: 5s
timeout: 5s
retries: 5
start_period: 180s
postgres:
image: postgres:18-alpine
restart: unless-stopped
environment:
POSTGRES_DB: keycloak
POSTGRES_USER: keycloak
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- db:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U keycloak -d keycloak"]
interval: 5s
timeout: 5s
retries: 10
start_period: 30s
volumes:
db:
Еще в категории «Пароли и вход»
- VaultwardenСервер менеджера паролей для приложений Bitwarden
- AuthorizerВход в ваши собственные приложения, с OAuth 2 и OpenID Connect
- Password PusherПароли и секреты по ссылкам, которые истекают
- authentikПровайдер идентификации для единого входа в ваши приложения: OpenID Connect, SAML, LDAP, MFA и passkey
- FusionAuthУправление идентификацией и доступом клиентов: вход, регистрация, единый вход и MFA для ваших приложений