thecr3w-dev/docs/KEYCLOAK.md

77 lines
3.2 KiB
Markdown

# 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):
```csharp
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)
};
});
```