thecr3w-dev/docs/KEYCLOAK.md

3.2 KiB

THECR3W-DEV — INTEGRACJA KEYCLOAK IAM (STAGE 2 ARCHITECTURE)

Wersja: 1.0.0 | Data: 2026-10-31


1. Wymagania i Środowisko

  • Adres instancji: https://login.thecr3wnet.com
  • Realm: master (Wymaganie bezwzględne Właściciela Projektu)
  • Protokół: OpenID Connect (OIDC) / OAuth 2.0
  • Flow uwierzytelniania Frontend: Authorization Code Flow z PKCE (Proof Key for Code Exchange, S256)
  • Flow uwierzytelniania Backend: Bearer Token JWT (walidacja sygnatury kluczami JWKS z https://login.thecr3wnet.com/realms/master/protocol/openid-connect/certs)

2. Minimalna Konfiguracja w Keycloak (Zasada Least Privilege)

Aby nie naruszać istniejących użytkowników i konfiguracji w realm master, TheCr3w-dev wymaga utworzenia wyłącznie dwóch odseparowanych klientów:

2.1. Klient Frontend: thecr3w-admin-panel

  • Client ID: thecr3w-admin-panel
  • Client Protocol: openid-connect
  • Access Type / Client Authentication: Public (wyłączony Client Secret)
  • Standard Flow Enabled: ON
  • Direct Access Grants Enabled: OFF
  • Valid Redirect URIs:
    • https://admin.thecr3wnet.com/*
    • http://localhost:3000/* (do testów lokalnych)
  • Web Origins:
    • https://admin.thecr3wnet.com
    • http://localhost:3000
  • PKCE Code Challenge Method: S256

2.2. Klient Backend: thecr3w-backend

  • Client ID: thecr3w-backend
  • Client Protocol: openid-connect
  • Access Type / Client Authentication: Confidential (posiada Client Secret przekazywany przez KEYCLOAK_CLIENT_SECRET)
  • Service Accounts Enabled: ON (dla operacji CI/CD i komunikacji machine-to-machine)
  • Authorization Enabled: ON

3. Matryca Ról Klienta (Client Roles)

Wszystkie role tworzone są wewnątrz klienta thecr3w-backend, a NIE jako role realm:

Nazwa Roli Klienta Opis i Uprawnienia
thecr3w:admin Pełna administracja całym systemem, zarządzanie serwerami zewnętrznymi, audyt.
thecr3w:release-manager Zarządzanie wydaniami aplikacji Android i Windows, generowanie adresów uploadu, publikacja i wycofywanie wydań.
thecr3w:approver Zatwierdzanie manifestów wdrożeń produkcyjnych.
thecr3w:deployer Zgłaszanie manifestów wdrożeniowych, uruchamianie wdrożeń na staging/dev, synchronizacja plików.
thecr3w:viewer Podgląd dashboardu, listy wydań, historii wdrożeń i logów audytowych.

4. Walidacja Tokenów w ASP.NET Core Backend

Konfiguracja uwierzytelniania w Program.cs (.NET 9):

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.Authority = "https://login.thecr3wnet.com/realms/master";
        options.Audience = "thecr3w-backend";
        options.RequireHttpsMetadata = true;
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidIssuer = "https://login.thecr3wnet.com/realms/master",
            ValidateAudience = true,
            ValidAudience = "thecr3w-backend",
            ValidateLifetime = true,
            ClockSkew = TimeSpan.FromMinutes(1)
        };
    });