Database configuration
Environment Variables
- Database user needs full access to
authorization_systemdatabase - PostgreSQL must be available before service startup
CAS client library configuration
The authorization-system uses the CAS client library to communicate with SpiceDB for ACL operations.
Environment Variables
- SpiceDB Host: Service hostname (typically
spicedb) - SpiceDB Port: gRPC port (standard:
50051) - SpiceDB Token: Authentication token for SpiceDB access
OAuth2/Keycloak configuration
| Environment Variable | Description | Default Value |
|---|---|---|
SECURITY_TYPE | Security type | oauth2 |
SECURITY_OAUTH2_BASE_SERVER_URL | Base URL of the Keycloak server (internal) | - |
SECURITY_OAUTH2_REALM | OAuth2 realm name | - |
SECURITY_OAUTH2_CLIENT_CLIENT_ID | Client ID for token introspection | - |
SECURITY_OAUTH2_CLIENT_CLIENT_SECRET | Client secret for token introspection | - |
SECURITY_OAUTH2_SERVICE_ACCOUNT_ADMIN_CLIENT_ID | Service account client ID | flowx-authorization-system-sa |
SECURITY_OAUTH2_SERVICE_ACCOUNT_ADMIN_CLIENT_SECRET | Service account client secret | - |
SPRING_SECURITY_OAUTH2_CLIENT_PROVIDER_MAINAUTHPROVIDER_TOKEN_URI | Token endpoint | ${SECURITY_OAUTH2_BASE_SERVER_URL}/realms/${SECURITY_OAUTH2_REALM}/protocol/openid-connect/token |
Redis configuration
Authorization System uses Redis for caching. Configure Redis connection using the standard Redis environment variables. Quick reference:| Environment Variable | Description | Example Value | Status |
|---|---|---|---|
SPRING_DATA_REDIS_HOST | Redis server hostname | localhost | Recommended |
SPRING_DATA_REDIS_PORT | Redis server port | 6379 | Recommended |
SPRING_DATA_REDIS_PASSWORD | Redis authentication password | - | Recommended |
REDIS_TTL | Cache TTL in milliseconds | 5000000 | Optional |
Both
SPRING_DATA_REDIS_* and SPRING_REDIS_* variable prefixes are supported. The SPRING_DATA_REDIS_* prefix is the modern Spring Boot standard and is recommended for new deployments.For advanced Redis deployment modes (Sentinel, Cluster) and SSL/TLS setup, see the Redis Configuration guide. Note that Sentinel and Cluster modes are only supported by the Events Gateway service.
Kafka configuration
Connection settings
| Environment Variable | Description | Default Value |
|---|---|---|
SPRING_KAFKA_BOOTSTRAPSERVERS | Kafka broker addresses | localhost:9092 |
SPRING_KAFKA_SECURITY_PROTOCOL | Security protocol for Kafka | PLAINTEXT |
KAFKA_MESSAGE_MAX_BYTES | Maximum message size | 52428800 (50 MB) |
KAFKA_AUTHEXCEPTIONRETRYINTERVAL | Retry interval for auth exceptions (seconds) | 10 |
Topic naming configuration
| Environment Variable | Description | Default Value |
|---|---|---|
KAFKA_TOPIC_NAMING_PACKAGE | Package prefix for topic names | ai.flowx. |
KAFKA_TOPIC_NAMING_ENVIRONMENT | Environment segment for topic names | |
KAFKA_TOPIC_NAMING_VERSION | Version suffix for topic names | .v1 |
KAFKA_TOPIC_NAMING_SEPARATOR | Primary separator for topic names | . |
KAFKA_TOPIC_NAMING_SEPARATOR2 | Secondary separator for topic names | - |
Audit topic
| Environment Variable | Description | Default Value |
|---|---|---|
KAFKA_TOPIC_AUDIT_OUT | Topic for sending audit logs | ai.flowx.core.trigger.save.audit.v1 |
Organization events topic
New in v5.5.0
| Environment Variable | Description | Default Value |
|---|---|---|
KAFKA_TOPIC_ORGANIZATION_EVENTS_OUT | Topic for organization lifecycle events | ai.flowx.organization.events.v1 |
OAuth authentication (when using SASL_PLAINTEXT)
| Environment Variable | Description | Default Value |
|---|---|---|
KAFKA_OAUTH_CLIENT_ID | OAuth client ID | kafka |
KAFKA_OAUTH_CLIENT_SECRET | OAuth client secret | kafka-secret |
KAFKA_OAUTH_TOKEN_ENDPOINT_URI | OAuth token endpoint | kafka.auth.localhost |
When using the
kafka-auth profile, the security protocol will automatically be set to SASL_PLAINTEXT and the SASL mechanism will be set to OAUTHBEARER.Management
Environment Variables
Organization admin bootstrap
Primary method (recommended)
SetSPRING_LIQUIBASE_PARAMETERS_DEFAULTORGADMINUSERNAME (default: admin@flowx.ai)
Process:
- System searches for this username in Keycloak
- Copies the user’s
sub_id(subject ID) to authorization-system database - Grants organization admin privileges automatically
Fallback method
SetSPRING_LIQUIBASE_PARAMETERS_DEFAULTORGADMINUSERSUBJECTID with a specific Keycloak subject ID
Process:
- Creates user directly in authorization-system database
- Assigns organization admin roles
- Used when username method fails or is set to null
Error handling
If incorrect subject_id is provided:- Login will fail
- No org-admin privileges granted
- Manual database correction required
If you’ve deployed with an incorrect subject_id, use this SQL script to fix it:The first organization administrator always has the ID
00000000-0000-0000-0000-100000000001 in the authorization-system database.Keycloak redirect URIs
Available starting with FlowX.AI 5.5.0
flowx-platform-authenticate client. You can control which redirect URIs are set on this client using:
Environment Variables
| Environment Variable | Description | Default Value |
|---|---|---|
SPRING_LIQUIBASE_PARAMETERS_ALLOWED_REDIRECT_URIS | Comma-separated list of valid redirect URI patterns for the flowx-platform-authenticate Keycloak client | (empty) |
https://designer.yourcompany.com/*— Designer accesshttps://app.yourcompany.com/*— Container app accesshttp://localhost*— Local development
Default realm admin credentials
Available starting with FlowX.AI 5.6.0
| Environment Variable | Description | Default Value |
|---|---|---|
SPRING_LIQUIBASE_PARAMETERS_DEFAULT_ORG_ADMIN_USERNAME | Email/username for the default realm admin user | admin@flowx.ai |
SPRING_LIQUIBASE_PARAMETERS_DEFAULT_REALM_ADMIN_INITIAL_PASSWORD | Initial password for the default realm admin user. The user will be required to change this password on first login. | (empty) |
Customer-specific variables
Required Customization: These variables must be updated for each deployment environment.
SECURITY_OAUTH2_BASE_SERVER_URL— Your Keycloak server URLSECURITY_MASTER_REALM_ADMIN_PASSWORD— Master realm admin passwordSPRING_DATASOURCE_URL— Your PostgreSQL connection detailsSPRING_LIQUIBASE_PARAMETERS_ALLOWED_REDIRECT_URIS— Designer and app redirect URIs- Service hostnames — Update to match your Kubernetes service names
Secrets management
Required Kubernetes Secrets:SPRING_DATASOURCE_PASSWORDFLOWX_SPICEDB_TOKENSPRING_REDIS_PASSWORDSPRING_SECURITY_OAUTH2_CLIENT_REGISTRATION_MAINIDENTITY_CLIENTSECRETSECURITY_MASTER_REALM_ADMIN_PASSWORD
Deployment prerequisites
Infrastructure
- PostgreSQL with
authorization_systemdatabase - SpiceDB with authentication configured
- Redis for caching
Identity & Access
- Keycloak with configured realm
- OAuth2 clients created
- Admin user exists in Keycloak
Architecture notes
Database Access Control: Only authorization-system has direct write access to the CAS PostgreSQL database. Other services communicate via REST APIs only.
SpiceDB Integration: Uses PostgreSQL as backend storage and communicates via gRPC through the CAS client library.
Ingress configuration
The Authorization System uses the standard FlowX.AI ingress pattern. For complete setup instructions including the full ingress template, CORS configuration, and troubleshooting, see the Ingress Configuration Guide. Service-specific values for Authorization System:- Ingress name:
authorization-system-admin - Service path:
/auth/api(/|$)(.*)(/|$)(.*) - Service name:
authorization-system - Rewrite target:
/api/$2 - Fx-Workspace-Id: Required
Complete Ingress Configuration
View the centralized ingress guide for the complete configuration template, annotations reference, and best practices.

