Apache Superset with Keycloak OAuth2 authentication in Docker.
docker-compose up -dAccess:
- Superset: http://localhost:8088
- Keycloak: http://localhost:XXXX
- Login:
admin/admin
Browser → Superset:8088 ↔ Keycloak:XXXX
↓
Redis
Authentication: OAuth2 flow between Superset and Keycloak
superset_config.pyconfigures OAuth provider and role mappingrealm-import/*.jsondefines Keycloak realm, users, and client
Sessions: Stored in Redis
Roles: Keycloak roles → Superset permissions
admin/realm-admin→ Admin- Others → Gamma (basic user)
URLs:
- Internal (containers):
keycloak:8080 - External (browser):
localhost:8090
docker-compose.yml- Services: Superset, Redissuperset_config.py- OAuth config, security manager, session/cache setuprealm-import/*.json- Keycloak realm with users and client configDockerfile- Superset image with dependencies
Superset (superset_config.py):
- OAuth provider points to Keycloak endpoints
- CustomSecurityManager maps Keycloak roles to Superset
- Redis for sessions and cache
- SQLite for metadata
Keycloak (realm-import):
- Client:
supersetwith secret - Redirect URIs:
http://localhost:8088/* - Protocol mapper: exposes roles in JWT token
Docker Compose:
- Network: All containers on
app-network - Health checks ensure services start in order
- Volume mounts for configs and persistence
docker-compose ps
docker-compose logs -f superset docker-compose logs -f keycloak