76 lines
3.2 KiB
Markdown
76 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)
|
|
};
|
|
});
|
|
```
|