Get up and running with Okta OPP Agent + SCIM Server for Generic Database in minutes.
- Docker Desktop or Docker Engine with Docker Compose v2+
- Okta Organization with admin access
- Downloaded files from Okta (see step 1)
Download from Okta Help Center:
# Copy OPP Agent RPM
cp OktaProvisioningAgent-*.rpm ./docker/okta-opp/packages/
# Copy SCIM Server RPM
cp OktaOnPremScimServer-*.rpm ./docker/okta-scim/packages/
# Optional: If using VPN with custom certificates (e.g., PaloAlto GlobalProtect/Prisma Access)
# cp ../your_path/your_vpn_certificates.pem ./docker/okta-opp/packages/
# cp ../your_path/your_vpn_certificates.pem ./docker/okta-scim/packages/cp .env-sample .env
# Edit .env if needed (default values work for testing)# Build Docker images
make build
# Start all services
make start-logsWait for the message: "⏳ Waiting for configuration files"
Then run the interactive configuration:
make configureYou will see the message:
[ YYYY-MM-DD HH:MM:SS.sss ] [ main ] [OppAgentConfigLoader] [ ] [INFO] - Register Mode successfully finished
Configuration successful.
Service can now be started by typing
systemctl start OktaProvisioningAgent.service
as root.You don't need to run the systemctl command since the agent is already running in the container. The message indicates that the configuration files have been generated successfully.
Follow the prompts to connect to your Okta org.
The credentials are automatically displayed in the logs. You can also retrieve them:
# Get bearer token (look for scim.security.bearer.token)
cat ./data/okta-scim/conf/config-*.properties | grep bearer.token
# Get public certificate
cat ./data/okta-scim/certs/OktaOnPremScimServer-*.crtExample output:
scim.security.bearer.token=da655feabd8ec0c3f89c1fb6e9f0ad39-
In Okta Admin Console, go to Applications → Browse App Catalog
-
Search for "On-prem connector for Generic Databases"
-
Add the application
-
In the Provisioning tab, configure:
SCIM Connection:
- SCIM Hostname:
okta-scim - SCIM Bearer Token:
Bearer da655feabd8ec0c3f89c1fb6e9f0ad39⚠️ Include "Bearer " prefix! - Upload Certificate: Use the
.crtfile from step 6
Database Connection:
- Database Type: MySQL (works with both MySQL and MariaDB)
- IP/Domain name:
db - Port:
3306 - Database Name:
oktademo - Username:
oktademo - Password:
oktademo
Note: Database type should be set to "MySQL" in Okta configuration even though MariaDB is being used, as MariaDB is MySQL-compatible.
Stored Procedures: See detailed configuration guide for configuring all 10 stored procedures (import/provisioning operations)
- SCIM Hostname:
-
Configure attribute mappings
-
Assign users or groups to the application
The database schema includes:
- USERS table: USER_ID (PK), USERNAME (UNIQUE VARCHAR(100)), FIRSTNAME (VARCHAR(100) nullable), LASTNAME (VARCHAR(100) nullable), EMAIL, MANAGER, TITLE, IS_ACTIVE
- ENTITLEMENTS table: ENT_ID (INT PK, values 1-10), ENT_NAME (UNIQUE), ENT_DESCRIPTION
- USERENTITLEMENTS junction table: Links users to entitlements with assignment dates
The database comes pre-populated with 15 test users (Star Wars characters). Try:
# View test users in DBGate
open http://localhost:8090
# Or via command line
docker compose exec db mariadb -u oktademo -poktademo oktademo -e "SELECT * FROM USERS;"
# Test stored procedures
docker compose exec db mariadb -u oktademo -poktademo oktademo -e "CALL GET_ACTIVEUSERS();"Assign a user in Okta to test provisioning to the database.
# Check all containers are running
docker compose ps
# View logs
make logs- README.md - Complete setup and configuration guide
- doc/Okta_Provisioning_Configuration.md - Detailed Okta stored procedures configuration
- Install the Okta Provisioning Agent
- Install the Okta On-prem SCIM Server
- On-premises Connector for Generic Databases
Need help? Check the full README or troubleshooting guide.