← ProjekteAuth · SSO · 2025
HanDev Identity
Zentraler SSO-Service (auth.handev.org): gibt JWTs aus, veröffentlicht JWKS, verwaltet Benutzer, Services und Zugriffsrechte.
- RS256 JWT + JWKS-Endpunkt
- Dreifacher Refresh: 401-Retry / 12-Min-Tick / visibilitychange
- Benutzer × Service Zugriffsmatrix
- GitLab OAuth für Unternehmenskonten
Node 22FastifyDrizzlePostgreSQLReact 18

Aufgabe
Die Plattform benötigte einen zentralen Auth-Hub: Single Sign-On für alle Services, Schlüsselrotation, korrektes Token-Refresh aus Hintergrund-Tabs, per-Service-Zugriffs-Gate und Admin-Panel.
Was wir gemacht haben
- Backend auf Fastify + Drizzle mit eigener Token-Verifizierung, bcrypt für Passwörter.
- JWT-Claim-Shape: iss, sub, exp, iat, email, name, isAdmin, globalRole, services. RS256-Signaturen, JWKS unter /.well-known/jwks.json.
- 15-Minuten-Access + 30-Tage-Refresh als HttpOnly-Cookies auf .handev.org mit SameSite=lax.
- Dreifacher Refresh: /auth/refresh-Retry bei 401, 12-Minuten-Tick, Refresh bei visibilitychange.
- Admin-Seiten: /admin/users, /admin/services, /admin/access (Benutzer × Service Zugriffsmatrix).
- GitLab OAuth für die Verknüpfung von GitLab-Unternehmenskonten mit Identity-Benutzern.
Ergebnis
- Einmaliger Login für 3 Services; Hinzufügen eines neuen Services erfordert nur wenige SQL-Inserts.
- Produktionsreifes SSO mit korrektem Refresh und 401-Recovery.
- Klare Trennung zwischen globaler Rolle und servicespezifischer Rolle.