ADR-002 — Autentificare OAuth2/OIDC prin GSSO (Keycloak)
- Status: Acceptat
- Data: 2026-07-07
- Componentă: Securitate / autentificare
- Decidenți: Arhitect platformă GStack, teamlead
Context
Section titled “Context”Sistemele GStack trebuie să folosească un mecanism de autentificare comun, federat, cu
Single Sign-On. Platforma dispune deja de GSSO — un Keycloak găzduit
(sso.gstack.esempla.systems) cu realm-uri dedicate. saas_interdictii a pornit pe JWT
HS512 local și migrează spre OIDC; pentru GRegistry (proiect nou) decizia se ia din start.
JDL-ul fixează deja authenticationType oauth2.
Decizie
Section titled “Decizie”GRegistry folosește OAuth2 / OpenID Connect ca resource server, cu GSSO (Keycloak) drept Identity Provider. Nu se implementează login local cu parolă și nu se emit token-uri proprii.
- Backend-ul validează bearer JWT emise de GSSO (issuer/JWKS din realm-ul GStack).
- Autorizarea funcțională se face pe authorities Spring Security (
ROLE_*) mapate din claim-urile Keycloak (ex.ROLE_REGISTRY_ADMIN,ROLE_REGISTRY_EDITOR,ROLE_REGISTRY_VIEWER). Rolurile bogate stau în Keycloak, nu într-un enum de aplicație. - Frontendul (SPA Angular separat, ADR-007) folosește Authorization Code + PKCE contra aceluiași realm.
- Consumatorii mașină-la-mașină (GPortal, GLog…) folosesc client-credentials sau accesează zona publică fără autentificare (vezi ADR-006).
Alternative considerate
Section titled “Alternative considerate”- JWT HS512 local (ca interdicții v1). Respins pentru un proiect nou: nu oferă SSO, dublează gestiunea utilizatorilor, incompatibil cu federația de platformă.
- mTLS între servicii, fără OIDC. Respins ca mecanism principal: nu acoperă utilizatorii umani; poate completa pe viitor pentru trafic intern.
Consecințe
Section titled “Consecințe”Pozitive
- SSO uniform pe platformă; utilizatorii nu au parole separate în GRegistry.
- Rotația cheilor și politicile de sesiune se gestionează central în GSSO.
- Aliniere cu standardul GovStack (blocul de identitate).
Negative / riscuri
- Dependență de disponibilitatea GSSO pentru autentificare (zona publică rămâne accesibilă).
- Necesită configurare corectă a mapper-elor de roluri Keycloak → authorities; testat în
integrare (vezi
../test-scenarios.md).
Legături
Section titled “Legături”- Model:
../../GRegistry.jdl(authenticationType oauth2) - Design:
../platform_design.md §6(secvența de login OIDC) - Memorie platformă:
keycloak-sso(realm-uri, credențiale admin)