Skip to content

ADR 002 Auth

ADR-002 — Autentificare OAuth2/OIDC prin GSSO (Keycloak)

Section titled “ADR-002 — Autentificare OAuth2/OIDC prin GSSO (Keycloak)”
  • Status: Acceptat
  • Data: 2026-07-07
  • Componentă: Securitate / autentificare
  • Decidenți: Arhitect platformă GStack, teamlead

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.

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).
  1. JWT HS512 local (ca interdicții v1). Respins pentru un proiect nou: nu oferă SSO, dublează gestiunea utilizatorilor, incompatibil cu federația de platformă.
  2. mTLS între servicii, fără OIDC. Respins ca mecanism principal: nu acoperă utilizatorii umani; poate completa pe viitor pentru trafic intern.

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).
  • Model: ../../GRegistry.jdl (authenticationType oauth2)
  • Design: ../platform_design.md §6 (secvența de login OIDC)
  • Memorie platformă: keycloak-sso (realm-uri, credențiale admin)