Polski
Zacznij

← Wszystkie szablony · Hasła i logowanie

Wdróż Keycloak jednym kliknięciem

Zarządzanie tożsamością i dostępem open source: logowanie jednokrotne do twoich aplikacji przez OpenID Connect i SAML

Alternatywa dla Auth0 i Okta, hostowana u siebie.

Czym jest Keycloak?

Keycloak to serwer zarządzania tożsamością i dostępem: twoje aplikacje przekazują mu logowanie, a kto zalogował się raz, jest zalogowany we wszystkich. Obsługuje OpenID Connect, OAuth 2.0 i SAML 2.0, więc większość aplikacji i frameworków łączy się z nim swoimi standardowymi bibliotekami. Loguje ludzi hasłem, kluczem dostępu albo kontem społecznościowym, takim jak Google czy GitHub, dodaje uwierzytelnianie dwuskładnikowe z kodami jednorazowymi, synchronizuje użytkowników z LDAP i Active Directory, a każdemu użytkownikowi pozwala zarządzać profilem, hasłem i sesjami w konsoli konta.

Keycloak to projekt w fazie inkubacji w Cloud Native Computing Foundation, używany zarówno w firmach, jak i w homelabach, żeby postawić jedno logowanie przed wieloma aplikacjami. Ten szablon uruchamia go w trybie produkcyjnym z PostgreSQL za proxy i tworzy administratora obszaru master z pól formularza, zanim Keycloak komukolwiek odpowie. Haczyk: Keycloak ma duże możliwości i wiele ustawień, więc pierwszy klient wymaga trochę czytania, a działa na Javie, która zajmuje więcej pamięci niż większość serwerów logowania.

Hosting Keycloak na Pethost

  1. Logujesz się do Pethost kluczem dostępu, przez GitHub albo Google. Nie masz jeszcze maszyny? Wybierasz plan, a link czeka, aż będzie gotowa.
  2. Okno „Nowy projekt” otwiera się na aplikacji Keycloak. Wypełniasz to, o co prosi, i klikasz „Utwórz projekt”: Nazwa użytkownika, Hasło administratora.
  3. Za minutę czy dwie aplikacja Keycloak działa pod własnym adresem z HTTPS. Jej sekrety są tworzone losowo, a dane trafiają do nocnego backupu.
  4. To projekt jak każdy inny: ty albo twój agent możecie go zmienić, cofnąć do wcześniejszej wersji albo przywrócić.

Pytania o Keycloak

Czy Keycloak jest darmowy?

Tak. Keycloak to open source na licencji Apache 2.0, bez płatnej edycji i bez limitu użytkowników ani aplikacji. Red Hat sprzedaje wsparcie dla własnej wersji, Red Hat build of Keycloak.

Keycloak czy Auth0: co wybrać?

Oba logują użytkowników przez OpenID Connect i SAML, z logowaniem kontami społecznościowymi i uwierzytelnianiem dwuskładnikowym. Auth0 to usługa w chmurze wyceniana według liczby aktywnych użytkowników miesięcznie, a Keycloaka uruchamiasz u siebie, za darmo dla dowolnej liczby użytkowników, kosztem tego, że musisz o niego dbać.

Czy Keycloak może logować użytkowników przez Google albo GitHub?

Tak. Sekcja Identyfikatory dostawców tożsamości w obszarze dodaje Google, GitHub, Facebook, Microsoft i innych albo dowolnego dostawcę OpenID Connect lub SAML 2.0 jako przyciski na stronie logowania, bez zmian w twoich aplikacjach.

Czy Keycloak obsługuje uwierzytelnianie dwuskładnikowe i klucze dostępu?

Tak. Przyjmuje kody jednorazowe z aplikacji takich jak Google Authenticator czy FreeOTP, kody odzyskiwania i klucze dostępu, a obszar może wymagać ich od wszystkich albo pozwolić użytkownikom włączyć je w konsoli konta.

Dlaczego Keycloak pokazuje, że konto administratora jest tymczasowe?

Keycloak oznacza administratora, którego tworzy przy pierwszym uruchomieniu, jako tymczasowego i prosi o stałego: dodaj użytkownika w obszarze master, nadaj mu rolę admin w zakładce Mapowanie roli, zaloguj się na to konto i usuń tymczasowego administratora.

Ile pamięci i miejsca na dysku potrzebuje Keycloak?

Keycloak działa na Javie: w spoczynku zajmuje razem z Postgresem około 550 MB pamięci, więcej przy wielu użytkownikach i sesjach; jego baza danych pozostaje mała. Na Pethost wystarczy mu plan Starter, z miejscem na inne aplikacje obok.

Keycloak: plik Docker Compose

Szablon to ten compose.yaml i zmienne zapisywane do .env projektu przy jego tworzeniu. Pethost uruchamia plik dokładnie tak, jak jest napisany.

Kontenery: keycloak (quay.io/keycloak/keycloak:26.8), postgres (postgres:18-alpine).

Wolumeny, w nocnym backupie: 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:

Więcej w kategorii Hasła i logowanie