Przejdź do głównej zawartości

Konfiguracja strony logowania

Strona logowania

Portal /login uwierzytelnia bezpośrednio przez Keycloak (bez przekierowania). Obsługuje trzy metody:

  • Login i hasło -- ROPC grant via oidc-client-ts
  • Logowanie przez Google -- Keycloak IdP brokering (kc_idp_hint=google)
  • Rejestracja -- POST /api/account/register (Keycloak Admin API), potem auto-login via ROPC

Logowanie Google OAuth (opcjonalne)

Pomiń tę sekcję, jeśli nie potrzebujesz logowania przez Google -- przycisk wyświetli błąd, jeśli nie jest skonfigurowany.

Konfiguracja krok po kroku

  1. Otwórz Google Cloud Console > Credentials
  2. Utwórz OAuth 2.0 Client ID (typ: Web application)
  3. Dodaj autoryzowany URI przekierowania:
{APP_EXTERNAL_BASE_URL}/auth/realms/openksef/broker/google/endpoint

Przykłady:

  • Z ngrok: https://abc123.ngrok-free.app/auth/realms/openksef/broker/google/endpoint
  • Lokalnie: http://localhost:8080/auth/realms/openksef/broker/google/endpoint
  1. Wprowadź dane w kreatorze konfiguracji (Krok 5: Integracje > Google OAuth)

    Lub ustaw ręcznie w .env:

GOOGLE_CLIENT_ID=123456789-abcdef.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-xxxxxxxxxxxxxxxxxxxxxxxx
  1. Jeśli ustawiasz ręcznie, zrestartuj Keycloak:
docker compose restart keycloak

Rejestracja użytkowników

Endpoint rejestracji wymaga service account Keycloak z uprawnieniem manage-users.

Jeśli użyłeś kreatora konfiguracji, jest to skonfigurowane automatycznie.

Konfiguracja ręczna

  1. Otwórz konsolę Keycloak: http://localhost:8082/auth/admin (admin / admin)
  2. Przejdź do Clients > openksef-api > Credentials
  3. Skopiuj Client Secret
  4. Ustaw w .env:
API_CLIENT_SECRET=<wklej-secret>
  1. Upewnij się, że service account ma uprawnienie manage-users:

    • Clients > openksef-api > Service Account Roles
    • Przypisz realm-management > manage-users
  2. Zrestartuj API:

docker compose restart api
informacja

Bez API_CLIENT_SECRET rejestracja zwraca 503 Service Unavailable. Logowanie i Google sign-in działają niezależnie.