SSO Setup Guide¶
PRO Feature
SSO configuration requires a PRO tier license.
Configure Single Sign-On (SSO) to allow users to authenticate using your organization's identity provider.
Overview¶
CertifyClouds PRO supports SSO via OpenID Connect (OIDC):
| Provider Type | Description | Use When |
|---|---|---|
azure_ad | Azure AD / Entra ID (first-class support) | Your organization uses Microsoft 365 / Azure AD |
oidc | Generic OIDC | Using Okta, Auth0, Keycloak, PingFederate, or other OIDC providers |
SAML Support
SAML 2.0 support is planned for a future release. Currently, only OIDC-based authentication is supported.
Prerequisites¶
Before configuring SSO:
- PRO tier license - SSO is not available in STARTER tier
- Admin access to your Identity Provider (IdP)
- CertifyClouds URL - Your deployment's base URL
Required Information¶
| Item | Description | Example |
|---|---|---|
| CertifyClouds URL | Your deployment's base URL | https://certifyclouds.yourcompany.com |
| Callback URL | SSO callback endpoint | https://certifyclouds.yourcompany.com/api/auth/sso/callback |
| Client ID | From your IdP app registration | 12345678-abcd-... |
| Client Secret | From your IdP app registration | secret_... |
| Issuer URL | OIDC discovery endpoint base | https://login.microsoftonline.com/{tenant}/v2.0 |
Azure AD / Entra ID Setup¶
Step 1: Create App Registration¶
- Go to Azure Portal → Microsoft Entra ID → App registrations
- Click + New registration
- Configure:
- Name:
CertifyClouds SSO - Supported account types:
Accounts in this organizational directory only - Redirect URI:
- Platform:
Web - URI:
https://YOUR_CERTIFYCLOUDS_URL/api/auth/sso/callback
- Platform:
- Click Register
Step 2: Configure Authentication¶
- In your app registration, go to Authentication
- Under Implicit grant and hybrid flows, ensure:
- [ ] Access tokens - Unchecked (we use authorization code flow)
- [ ] ID tokens - Unchecked
- Under Advanced settings:
- Allow public client flows: No
Step 3: Create Client Secret¶
- Go to Certificates & secrets → Client secrets
- Click + New client secret
- Configure:
- Description:
CertifyClouds SSO - Expires: 24 months (recommended)
- Click Add
- Copy the secret Value immediately - it won't be shown again!
Step 4: Configure API Permissions¶
- Go to API permissions
- Click + Add a permission → Microsoft Graph → Delegated permissions
- Add these permissions:
openid(Sign users in)profile(View users' basic profile)email(View users' email address)User.Read(Sign in and read user profile)- Click Grant admin consent for [Your Organization]
- Verify all permissions show green checkmarks
Step 5: Collect Configuration Values¶
| Setting | Where to Find |
|---|---|
| Client ID | App registration → Overview → Application (client) ID |
| Client Secret | The value you copied in Step 3 |
| Tenant ID | App registration → Overview → Directory (tenant) ID |
| Issuer URL | https://login.microsoftonline.com/{TENANT_ID}/v2.0 |
Okta Setup¶
Step 1: Create Application¶
- Go to Okta Admin Console → Applications → Applications
- Click Create App Integration
- Select:
- Sign-in method: OIDC - OpenID Connect
- Application type: Web Application
- Click Next
Step 2: Configure Application¶
- App integration name:
CertifyClouds - Grant type:
- [x] Authorization Code
- [ ] Implicit (unchecked)
- Sign-in redirect URIs:
https://YOUR_CERTIFYCLOUDS_URL/api/auth/sso/callback- Controlled access: Select appropriate option
- Click Save
Step 3: Collect Values¶
| Setting | Where to Find |
|---|---|
| Client ID | General tab → Client Credentials |
| Client Secret | General tab → Client Credentials |
| Issuer URL | https://yourcompany.okta.com |
Step 4: Assign Users¶
- Go to Assignments tab
- Click Assign → Assign to People or Assign to Groups
- Select users/groups who should access CertifyClouds
Generic OIDC Provider¶
For other OIDC providers (Auth0, Keycloak, PingFederate, etc.):
Prerequisites¶
Your OIDC provider must support:
- Authorization Code flow
- Standard OIDC claims:
sub,email,name - OIDC Discovery endpoint (
/.well-known/openid-configuration)
Configuration¶
| CertifyClouds Setting | Your IdP Value |
|---|---|
| Provider Type | oidc |
| Issuer URL | Base URL for OIDC discovery |
| Client ID | From your IdP |
| Client Secret | From your IdP |
| Scopes | openid profile email |
CertifyClouds Configuration¶
Step 1: Access SSO Settings¶
- Log in to CertifyClouds as admin
- Go to Settings → SSO Configuration
- Click Configure SSO
Step 2: Enter Configuration¶
| Field | Description |
|---|---|
| Provider Type | Select: Azure AD or OIDC |
| Issuer URL | Your IdP's OIDC issuer URL |
| Client ID | Application/Client ID from your IdP |
| Client Secret | Secret from your IdP (encrypted at rest) |
| Login Button Text | Custom text (e.g., "Sign in with Company SSO") |
Step 3: Configure User Provisioning¶
| Option | Description |
|---|---|
| Auto-create users | Automatically create accounts for SSO users |
| Default role | Role assigned to auto-created users |
| SSO-only mode | Disable local username/password login |
Step 4: Test and Save¶
- Click Test Connection to verify IdP connectivity
- If successful, click Save Configuration
- Test login in a private browser window
Troubleshooting¶
Common Issues¶
| Issue | Cause | Solution |
|---|---|---|
| "Invalid redirect URI" | Callback URL mismatch | Ensure IdP redirect URI exactly matches CertifyClouds callback URL |
| "Invalid client_id" | Wrong Client ID | Double-check Client ID in settings |
| "AADSTS50011" | Reply URL not registered | Add callback URL to Azure AD app registration |
| "User not authorized" | User not assigned to app | Assign user/group in IdP |
Debug Tips¶
- Enable SSO debug logging:
LOG_SSO_DEBUG=true - Test OIDC discovery:
- Check for required endpoints:
authorization_endpoint,token_endpoint,jwks_uri
Security Best Practices¶
- Use short-lived client secrets - Rotate every 12-24 months
- Limit application permissions - Only request necessary scopes
- Enable SSO-only mode - After testing, disable local password login
- Use conditional access - Configure MFA via your IdP
- Monitor SSO logins - Review audit logs for unusual activity
Environment Variable Configuration¶
For container deployments, SSO can be pre-configured:
SSO_PROVIDER_TYPE=oidc
SSO_ISSUER_URL=https://login.microsoftonline.com/YOUR_TENANT/v2.0
SSO_CLIENT_ID=your-client-id
SSO_CLIENT_SECRET=your-client-secret
SSO_AUTO_CREATE_USERS=true
SSO_DEFAULT_ROLE=user
SSO_LOGIN_BUTTON_TEXT="Sign in with Azure AD"
Note
Environment variables take precedence over database configuration.