211 lines
5.8 KiB
Markdown
211 lines
5.8 KiB
Markdown
# OIDC Server - TODO & Roadmap
|
|
|
|
## ✅ Bereits implementiert
|
|
|
|
### Core OIDC Funktionalität
|
|
- ✅ Authorization Code Flow (vollständig implementiert)
|
|
- ✅ Discovery Endpoint (`/.well-known/openid-configuration`)
|
|
- ✅ `/authorize` - Authorization Endpoint
|
|
- ✅ `/token` - Token Exchange
|
|
- ✅ `/userinfo` - User Info Endpoint
|
|
- ✅ JWT ID Tokens (signiert mit RS256)
|
|
- ✅ Access Tokens mit Validation
|
|
- ✅ Authorization Codes mit TTL
|
|
|
|
### User Management
|
|
- ✅ User Registration (Self-Service)
|
|
- ✅ Password Change (Self-Service)
|
|
- ✅ Bcrypt Password Hashing
|
|
- ✅ User Login mit Session
|
|
- ✅ User Dashboard
|
|
|
|
### Admin Features
|
|
- ✅ Admin Login (separate Session)
|
|
- ✅ CRUD für User-Verwaltung
|
|
- ✅ Rollen-System (user, admin, moderator, readonly)
|
|
- ✅ Permissions-System (JSON Array, comma-separated UI)
|
|
- ✅ User Activate/Deactivate
|
|
- ✅ **(NEU)** Multi-Client Support - OIDC-Clients können über das Admin-Panel verwaltet werden.
|
|
|
|
### Security & Data
|
|
- ✅ SQLite Database (PostgreSQL-ready)
|
|
- ✅ Session-based Authentication
|
|
- ✅ CSRF Protection (state parameter)
|
|
- ✅ Sichere Landing Page (keine Secrets exposed)
|
|
- ✅ **(NEU)** Rate Limiting - Schutz vor Brute-Force auf Login/Token Endpoints
|
|
- ✅ **(NEU)** Audit Logging - Loggt Logins und Admin-Aktionen in die Datenbank
|
|
- ✅ **(NEU)** Asymmetric Token Signing (RS256) - ID Tokens werden mit RS256 signiert und der Public Key per `/jwks` Endpoint bereitgestellt.
|
|
|
|
### DevOps/Production
|
|
- ✅ **(NEU)** Environment Configuration - `.env` File Support für Secrets (Development/Production)
|
|
- ✅ **(NEU)** Health Check Endpoint - `/health` für Monitoring und Load Balancer
|
|
- ✅ **(NEU)** Docker Support - `Dockerfile` und `docker-compose.yml` für einfaches Deployment
|
|
- ✅ **(NEU)** Production WSGI Server - Gunicorn wird im Docker Container verwendet
|
|
- ✅ **(NEU)** Database Migrations - Schema-Änderungen werden mit Flask-Migrate (Alembic) verwaltet.
|
|
|
|
### UI/UX
|
|
- ✅ Modernes Dark Mode Design
|
|
- ✅ Responsive Layout
|
|
- ✅ Alle Templates mit Theme Toggle
|
|
|
|
---
|
|
|
|
## 🚀 TODO - Nächste Features
|
|
|
|
### Security Improvements (Priorität: HOCH)
|
|
|
|
#### 2. Token Refresh Flow
|
|
**Status:** ⏳ Offen
|
|
**Priorität:** Hoch
|
|
**Beschreibung:**
|
|
- Refresh Tokens für längere Sessions
|
|
- User muss nicht alle X Minuten neu einloggen
|
|
**Tasks:**
|
|
- [ ] RefreshToken Model in DB erstellen
|
|
- [ ] `/token` Endpoint erweitern: `grant_type=refresh_token`
|
|
- [ ] Refresh Token Rotation implementieren
|
|
- [ ] Token Expiry konfigurierbar machen
|
|
|
|
#### 4. HTTPS Enforcement
|
|
**Status:** ⏳ Offen
|
|
**Priorität:** Hoch (für Production)
|
|
**Beschreibung:**
|
|
- Aktuell nur HTTP (Development)
|
|
- Production: SSL/TLS zwingend
|
|
**Tasks:**
|
|
- [ ] SSL Certificates (Let's Encrypt)
|
|
- [ ] Nginx/Traefik Reverse Proxy Setup
|
|
- [ ] HTTPS Redirect erzwingen
|
|
- [ ] Secure Cookie Flags setzen
|
|
|
|
#### 5. PKCE Support
|
|
**Status:** ⏳ Offen
|
|
**Priorität:** Mittel
|
|
**Beschreibung:**
|
|
- Proof Key for Code Exchange
|
|
- Wichtig für SPAs und Mobile Apps ohne Client Secret
|
|
**Tasks:**
|
|
- [ ] PKCE Parameter in `/authorize` akzeptieren (`code_challenge`, `code_challenge_method`)
|
|
- [ ] Code Verifier Validation in `/token`
|
|
- [ ] S256 und plain methods unterstützen
|
|
|
|
---
|
|
|
|
### Features (Priorität: MITTEL)
|
|
|
|
#### 7. Scope Management
|
|
**Status:** ⏳ Offen
|
|
**Priorität:** Mittel
|
|
**Beschreibung:**
|
|
- Aktuell: Scopes werden akzeptiert aber nicht enforced
|
|
- Bessere Scope → Permission Mapping
|
|
**Tasks:**
|
|
- [ ] Scope Definition System
|
|
- [ ] Scope Validation gegen User Permissions
|
|
- [ ] Consent Screen für Scopes
|
|
- [ ] Scope-basierte Token Claims
|
|
|
|
#### 8. Email Verification
|
|
**Status:** ⏳ Offen
|
|
**Priorität:** Mittel
|
|
**Beschreibung:**
|
|
- Email Verification bei Registration
|
|
- Password Reset per Email
|
|
**Tasks:**
|
|
- [ ] SMTP Konfiguration
|
|
- [ ] Email Verification Token System
|
|
- [ ] Email Templates (Verification, Password Reset)
|
|
- [ ] `/verify-email` und `/reset-password` Endpoints
|
|
|
|
#### 9. 2FA/MFA
|
|
**Status:** ⏳ Offen
|
|
**Priorität:** Niedrig
|
|
**Beschreibung:**
|
|
- Two-Factor Authentication
|
|
**Tasks:**
|
|
- [ ] TOTP Support (Google Authenticator, Authy)
|
|
- [ ] QR Code Generation für TOTP Setup
|
|
- [ ] Backup Codes generieren
|
|
- [ ] 2FA Enforcement für Admin Accounts
|
|
|
|
---
|
|
|
|
### Admin Features (Priorität: MITTEL)
|
|
|
|
#### 12. Token Management
|
|
**Status:** ⏳ Offen
|
|
**Priorität:** Niedrig
|
|
**Beschreibung:**
|
|
- Aktive Tokens anzeigen und verwalten
|
|
**Tasks:**
|
|
- [ ] Token List View (Access + Refresh Tokens)
|
|
- [ ] Token Revocation UI
|
|
- [ ] Token Lifetime Configuration
|
|
- [ ] "Revoke all tokens for user" Funktion
|
|
|
|
#### 13. Bulk Operations
|
|
**Status:** ⏳ Offen
|
|
**Priorität:** Niedrig
|
|
**Beschreibung:**
|
|
- Bulk User Import/Management
|
|
**Tasks:**.
|
|
- [ ] CSV Import für Users
|
|
- [ ] Bulk Permission Assignment
|
|
- [ ] User Groups erstellen
|
|
- [ ] Group-based Permissions
|
|
|
|
---
|
|
---
|
|
|
|
### User Experience (Priorität: NIEDRIG)
|
|
|
|
#### 19. Consent Screen
|
|
**Status:** ⏳ Offen
|
|
**Priorität:** Niedrig
|
|
**Beschreibung:**
|
|
- User muss Scopes bestätigen
|
|
- "Diese App möchte Zugriff auf..."
|
|
**Tasks:**
|
|
- [ ] Consent Screen Template
|
|
- [ ] Scope Descriptions
|
|
- [ ] Remember Consent per Client
|
|
- [ ] Revoke Consent UI
|
|
|
|
#### 20. Session Management für User
|
|
**Status:** ⏳ Offen
|
|
**Priorität:** Niedrig
|
|
**Beschreibung:**
|
|
- Aktive Sessions anzeigen
|
|
**Tasks:**
|
|
- [ ] Session List View
|
|
- [ ] "Logout from all devices"
|
|
- [ ] Session Details (IP, Location, Device)
|
|
- [ ] Suspicious Login Warnings
|
|
|
|
#### 21. Internationalization (i18n)
|
|
**Status:** ⏳ Offen
|
|
**Priorität:** Niedrig
|
|
**Beschreibung:**
|
|
- Mehrsprachige UI
|
|
- Aktuell: Mix aus Deutsch/Englisch
|
|
**Tasks:**
|
|
- [ ] Flask-Babel Integration
|
|
- [ ] Deutsche Übersetzungen
|
|
- [ ] Englische Übersetzungen
|
|
- [ ] Language Switcher in UI
|
|
|
|
#### 22. Profile Picture Support
|
|
**Status:** ⏳ Offen
|
|
**Priorität:** Niedrig
|
|
**Beschreibung:**
|
|
- Avatar Upload
|
|
**Tasks:**
|
|
- [ ] Avatar Upload im User Dashboard
|
|
- [ ] Image Resizing/Cropping
|
|
- [ ] Gravatar Fallback
|
|
- [ ] Avatar in ID Token (picture claim)
|
|
|
|
---
|
|
|
|
**Letzte Aktualisierung:** 2025-11-27
|