Українська
Почати

← Усі шаблони · Паролі та вхід

Задеплойте Keycloak в один клік

Керування ідентифікацією та доступом із відкритим кодом: єдиний вхід для ваших застосунків з OpenID Connect і SAML

Альтернатива Auth0 і Okta на вашій машині.

Що таке Keycloak?

Keycloak — сервер керування ідентифікацією та доступом: ваші застосунки доручають йому вхід, і людина, яка увійшла один раз, уже увійшла в усі. Він підтримує OpenID Connect, OAuth 2.0 і SAML 2.0, тож більшість застосунків і фреймворків підключаються до нього своїми стандартними бібліотеками. Він впускає людей за паролем, ключем доступу або соціальним акаунтом, як-от Google чи GitHub, додає двофакторну автентифікацію з одноразовими кодами, синхронізує користувачів з LDAP і Active Directory, а кожен користувач керує своїм профілем, паролем і сесіями в консолі акаунта.

Keycloak — інкубаційний проєкт Cloud Native Computing Foundation, яким і компанії, і домашні лабораторії користуються, щоб поставити один вхід перед багатьма застосунками. Цей шаблон запускає його в режимі продакшну з PostgreSQL за проксі й створює адміністратора realm master з полів ще до того, як Keycloak комусь відповість. Підводний камінь: Keycloak потужний і має багато налаштувань, тож щоб налаштувати першого клієнта, доведеться трохи почитати, а працює він на Java, яка займає більше пам’яті, ніж більшість серверів входу.

Хостинг Keycloak на Pethost

  1. Ви входите в Pethost — з ключем доступу, через GitHub або Google. Машини ще немає? Ви обираєте тариф, і посилання чекає, доки машина не буде готова.
  2. Вікно «Новий проєкт» відкривається на застосунку Keycloak. Ви заповнюєте те, що він просить, і натискаєте «Створити проєкт»: Ім’я користувача, Пароль адміністратора.
  3. За хвилину-дві Keycloak працює за власною адресою з HTTPS. Секрети створюються випадково, а дані потрапляють у щонічний бекап.
  4. Це проєкт як будь-який інший: ви або ваш агент можете його змінити, відкотити або відновити.

Питання про Keycloak

Keycloak безкоштовний?

Так. Keycloak має відкритий код за ліцензією Apache 2.0, без платної редакції й без обмежень на кількість користувачів чи застосунків. Red Hat продає підтримку своєї збірки — Red Hat build of Keycloak.

Keycloak чи Auth0: що обрати?

Обидва впускають користувачів через OpenID Connect і SAML, із входом через соцмережі та двофакторною автентифікацією. Auth0 — хмарний сервіс із ціною за кількістю активних користувачів на місяць, а Keycloak ви запускаєте самі, безкоштовно для будь-якої кількості користувачів, але й доглядати за ним доведеться вам.

Чи може Keycloak впускати користувачів через Google або GitHub?

Так. Розділ «Identity providers» у realm додає Google, GitHub, Facebook, Microsoft та інших або будь-якого провайдера OpenID Connect чи SAML 2.0 кнопками на сторінці входу, без змін у ваших застосунках.

Чи підтримує Keycloak двофакторну автентифікацію та ключі доступу?

Так. Він приймає одноразові коди із застосунків на кшталт Google Authenticator чи FreeOTP, коди відновлення та ключі доступу, а realm може вимагати їх від усіх або дозволити користувачам увімкнути їх у консолі акаунта.

Чому Keycloak каже, що я тимчасовий адміністратор?

Keycloak позначає адміністратора, якого створює під час першого запуску, як тимчасового й просить створити постійного: додайте користувача в realm master, дайте йому роль admin на вкладці «Role mapping», увійдіть під ним і видаліть тимчасового адміністратора.

Скільки пам’яті й диска потрібно 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:

Ще в категорії «Паролі та вхід»