Skip to main content

Custom OIDC SSO for Docker

To enable security for the Docker deployment, follow the next steps:

1. Create an .env file

Create an openmetadata_oidc.env file and add the following contents as an example. Use the information generated when setting up the account.
# OpenMetadata Server Authentication Configuration
AUTHORIZER_CLASS_NAME=org.openmetadata.service.security.DefaultAuthorizer
AUTHORIZER_REQUEST_FILTER=org.openmetadata.service.security.JwtFilter
AUTHORIZER_ADMIN_PRINCIPALS=[admin]  # Your `name` from [email protected]
AUTHORIZER_PRINCIPAL_DOMAIN=open-metadata.org # Update with your domain

AUTHENTICATION_PROVIDER=custom-oidc
CUSTOM_OIDC_AUTHENTICATION_PROVIDER_NAME=KeyCloak
AUTHENTICATION_PUBLIC_KEYS=[http://localhost:8080/realms/myrealm/protocol/openid-connect/certs, https://{your domain}/api/v1/system/config/jwks] # Update with your Domain and Make sure this "/api/v1/system/config/jwks" is always configured to enable JWT tokens
AUTHENTICATION_AUTHORITY={http://localhost:8080/realms/myrealm}
AUTHENTICATION_CLIENT_ID={Client ID} # Update with your Client ID
AUTHENTICATION_CALLBACK_URL=http://localhost:8585/callback

2. Start Docker

docker compose --env-file ~/openmetadata_oidc.env up -d

Configure Ingestion

Once your server security is set, it’s time to review the ingestion configuration. Our bots support JWT tokens to authenticate to the server when sending requests. Find more information on Enabling JWT Tokens and JWT Troubleshooting to ensure seamless authentication.

Troubleshooting

  • If you are seeing the below trace in the logs, you need to add the discovery URL
org.pac4j.core.exception.TechnicalException: You must define either the discovery URL or directly the provider metadata
To resolve the error regarding the discovery URL, you need to set the AUTHENTICATION_DISCOVERY_URI in your configuration. This URI is used to discover the OpenID Connect provider’s configuration.
  • If you are using a confidential type to start the server
When using a confidential type to start the server, it is necessary to provide all the details in the docker-compose file at the time of starting the server. For more information, refer to the here. Alternatively, the client type can be set to “public”, which does not require a secret key.