Русский
Начать

← Все шаблоны · Пароли и вход

Задеплойте 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

  1. Вы входите в Pethost — с passkey, через GitHub или Google. Машины еще нет? Вы выбираете тариф, и ссылка ждет, пока машина не будет готова.
  2. Окно «Новый проект» открывается на приложении Keycloak. Вы заполняете то, что оно просит, и нажимаете «Создать проект»: Имя пользователя, Пароль администратора.
  3. Через минуту-две Keycloak работает по своему адресу с HTTPS. Секреты создаются случайно, а данные попадают в ночной бэкап.
  4. Это проект как любой другой: вы или ваш агент можете его изменить, откатить или восстановить.

Вопросы про 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:

Еще в категории «Пароли и вход»