OpenID Connect (OIDC) Setup
Portal supports OpenID Connect (OIDC) for single sign-on with any OIDC-compliant identity provider, including AWS Cognito, Azure AD / Microsoft Entra ID, Google Identity Platform, and Okta.
Warning
OIDC authentication does not work with the Tableau REST API. If your Portal uses Tableau integration, you must use static dashboards rather than the Tableau REST API.
Prerequisites
- Docker-based Portal deployment
- Access to your organization's OIDC identity provider admin console
- Ability to update the Portal's Docker Compose and NGINX configuration
Step 1: Register Portal with Your Identity Provider
Create a new application in your OIDC provider with the following settings:
| Setting | Value |
|---|---|
| Application Type | Web Application |
| Grant Type | Authorization Code |
| Redirect URI | https://<your-portal-hostname>/openidc/authorize |
| Scopes | openid, profile, email |
After registration, note these values:
- Client ID
- Client Secret
- Issuer URL (provided by your identity provider)
Step 2: Create the Settings File
Create a file named settings.json:
{
"client_id": "your-client-id",
"client_secret": "your-client-secret",
"redirect_uri": "https://<your-portal-hostname>/openidc/authorize",
"issuer": "https://your-identity-provider-issuer-url"
}
Provider-Specific Examples
AWS Cognito:
{
"client_id": "1a2b3c4d5e6f7g8h9i0j",
"client_secret": "abcdefghijklmno1234567890",
"redirect_uri": "https://portal.example.com/openidc/authorize",
"issuer": "https://cognito-idp.us-east-2.amazonaws.com/us-east-2_P07hKC2bJ"
}
The Cognito issuer URL format is: https://cognito-idp.<region>.amazonaws.com/<user-pool-id>
Azure AD / Entra ID:
{
"client_id": "application-id-from-azure",
"client_secret": "client-secret-from-azure",
"redirect_uri": "https://portal.example.com/openidc/authorize",
"issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
}
Step 3: Deploy the Configuration
-
Place
settings.jsonin a directory accessible to Docker (e.g.,app/openidc/). -
Add a volume mount to the auth service in your
docker-compose.yaml:
services:
auth:
volumes:
- ./app/openidc:/app/openidc
Step 4: Configure NGINX
Ensure your NGINX configuration routes the OIDC endpoints to the auth service:
location ~ /(openidc/redirect|openidc/authorize)$ {
proxy_pass http://auth:5756$request_uri;
include proxy_params;
include nocache_params;
}
Update the 401 handler to redirect to OIDC instead of the standard login page:
location @401 {
return 302 https://$http_host/openidc/redirect?location=https://$http_host$request_uri;
}
Step 5: Restart and Test
-
Restart the Portal:
docker-compose down && docker-compose up -d -
Navigate to your Portal URL. You should be redirected to your identity provider's login page.
- Log in with your corporate credentials.
- You should be redirected back to Portal and logged in.
Troubleshooting
- Redirect loop - Verify the redirect URI in
settings.jsonexactly matches what is registered with your identity provider. - Settings file not found - Check the Docker volume mount and ensure
settings.jsonexists at the mounted path. Restart the auth service. - Invalid client error - Verify the
client_idandclient_secretare correct and the application is still active. - HTTPS required - The redirect URI must use
https://. Ensure your Portal is accessible via HTTPS.