Executive Summary
This implementation provides a production-ready authentication system with:- ✅ Keycloak as Single Source of Truth - All identity centralized
- ✅ JWT Standardization - All auth methods produce JWTs
- ✅ Service Principals - Long-lived credentials for batch jobs
- ✅ API Key Management - Legacy support with JWT exchange
- ✅ Identity Federation - LDAP, SAML, OIDC integration
- ✅ SCIM 2.0 Provisioning - Automated user management
- ✅ Kong JWT Validation - High-performance gateway validation
- ✅ OpenFGA Permission Inheritance - Service principals inherit user permissions
- ✅ Hybrid Session Model - Stateless users + stateful services
Architecture Diagram
Quick Links
Documentation
Architecture Decision Records
- ADR-0031: Keycloak as Authoritative Identity
- ADR-0032: JWT Standardization
- ADR-0033: Service Principal Design
- ADR-0034: API Key to JWT Exchange
- ADR-0035: Kong JWT Validation
- ADR-0036: Hybrid Session Model
- ADR-0037: Identity Federation
- ADR-0038: SCIM Implementation
- ADR-0039: OpenFGA Permission Inheritance
Key Design Decisions
| Decision | ADR | Rationale |
|---|---|---|
| Keycloak as authoritative source | ADR-0031 | Single source of truth, enterprise federation |
| JWT standardization | ADR-0032 | Consistent auth, stateless validation |
| Service principal design | ADR-0033 | Long-running tasks, permission delegation |
| API key→JWT exchange | ADR-0034 | Legacy support + JWT standard |
| Kong JWT validation | ADR-0035 | High performance, no custom plugin |
| Hybrid session model | ADR-0036 | Stateless users, stateful services |
| Identity federation | ADR-0037 | Enterprise integration |
| SCIM implementation | ADR-0038 | Automated provisioning |
| Permission inheritance | ADR-0039 | Service acting as user |
Getting Started
- Review ADR-0031 through ADR-0039
- Follow Deployment Guide
- Configure identity providers per Federation Guide
- Create service principals per Service Principals Guide
- Generate API keys per API Key Guide
Support
- GitHub Issues: Report bugs
- Discussions: Ask questions