SSO with OpenID Connect
Connect your identity provider to FinologeeBKO with OpenID Connect: values to register, what to send to Finologee, and provider examples
Introduction
This page explains how to connect your identity provider to FinologeeBKO with OpenID Connect. For the overview of SSO, the onboarding sequence and the choice between protocols, see Single Sign-On (SSO).
The generic sections come first: the values to register, the requirements and what to send to Finologee. Examples for specific identity providers follow.
Placeholders
| Placeholder | Meaning |
|---|---|
{alias} | Connection identifier provided by Finologee, one per identity provider connection |
{client-id} | The client ID (application ID) your identity provider issues for FinologeeBKO |
{issuer-url} | The issuer of your identity provider, from which its discovery document is found |
Provider-specific placeholders are explained in the example sections.
Values to register in your identity provider
Finologee sends you the connection identifier {alias}. Register FinologeeBKO in your identity provider with the following values.
| Setting | Value |
|---|---|
| Redirect URI | https://idp.finologee.com/auth/realms/services/broker/{alias}/endpoint |
| Application type | Confidential web application |
| Grant type | Authorization code |
| Scopes | openid email profile |
| Required claim | email |
| Recommended claims | given_name, family_name |
| Logout URL | None required |
Sandbox valuesThe values above are for production. Finologee sends the sandbox values together with the connection identifier.
Requirements
Your identity provider must meet the following requirements:
- Email in the ID token: the ID token must contain the
emailclaim, with the user's email address. It must be identical to the email address of the user in FinologeeBKO. - Discovery document: your identity provider must publish a standard discovery document at
{issuer-url}/.well-known/openid-configuration. The Finologee IDP reads your endpoints and signing keys from it, so key rotation on your side needs no action from Finologee. - Client authentication: the Finologee IDP authenticates to your identity provider with a client secret.
Private key JWT on requestIf your policy does not allow client secrets, the Finologee IDP can authenticate with a signed JWT (private key JWT) instead. Ask Finologee for this option: Finologee provides the public certificate to register in your identity provider.
What to send to Finologee
Once your identity provider is configured, send Finologee:
- Your
{issuer-url}, or the full URL of your discovery document - The
{client-id}of the FinologeeBKO application - The client secret and its expiry date, through the secure channel Finologee indicates. Never send a client secret by plain email.
- Confirmation that the
emailclaim is included in the ID token - The label for the login button, for example the name of your organisation
Example: Microsoft Entra ID
These steps use the Microsoft Entra admin center. You need at least the Application Administrator or Cloud Application Administrator role.
Placeholders for Microsoft Entra ID
| Placeholder | Meaning |
|---|---|
{tenant-id} | The Directory (tenant) ID of your Microsoft Entra tenant, shown on the application's Overview page |
{application-id} | The Application (client) ID of the FinologeeBKO application, shown on the application's Overview page |
Steps
- Browse to Entra ID > App registrations and select New registration.
- Enter a name, for example
FinologeeBKO. - Under Supported account types, select the single tenant option.
- Under Redirect URI, select the Web platform and enter the redirect URI from Values to register. Select Register.
- On the Overview page, note the Application (client) ID and the Directory (tenant) ID. You can also select Endpoints and copy the OpenID Connect metadata document URL.
- Open Certificates & secrets > Client secrets and select New client secret. Choose an expiry period, then copy the Value immediately: it is only shown once. Note the expiry date.
- Open Token configuration, select Add optional claim, choose the ID token type and add
email,given_nameandfamily_name. If you are asked to turn on the Microsoft Graphemailandprofilepermissions, accept. - Open API permissions and check that the Microsoft Graph delegated permissions
openid,emailandprofileare present. Add any that are missing, then select Grant admin consent. - Optional, to restrict access: browse to Entra ID > Enterprise apps, open the FinologeeBKO application, set Assignment required? to Yes under Properties, then add the users or groups who may sign in under Users and groups.
Values to send
| Item | Value |
|---|---|
| Issuer URL or metadata document URL | https://login.microsoftonline.com/{tenant-id}/v2.0 or https://login.microsoftonline.com/{tenant-id}/v2.0/.well-known/openid-configuration |
| Client ID | {application-id} |
| Client secret | The Value from step 6, with its expiry date, through the secure channel |
Email claim in Microsoft Entra IDMicrosoft Entra ID only includes the
Microsoft Entra ID error codes
| Error | Meaning | What to check |
|---|---|---|
AADSTS50011 | The redirect URI in the request does not match the redirect URIs of the application | The redirect URI registered in step 4, character by character |
AADSTS7000215 | Invalid client secret | The secret sent to Finologee is the Value, not the Secret ID |
AADSTS7000222 | The client secret has expired | Create a new secret and send it to Finologee, see Client secret rotation |
AADSTS50105 | The user is not assigned to the application | Assign the user or one of their groups under Users and groups |
See Microsoft's error code reference and optional claims reference.
Example: Okta
These steps use the Okta Admin Console.
Placeholders for Okta
| Placeholder | Meaning |
|---|---|
{okta-domain} | Your Okta domain, or your custom domain if you use one |
{authorization-server-id} | The ID of the custom authorization server, if you use one, for example default |
Steps
- Go to Applications > Applications and select Create App Integration.
- Select OIDC - OpenID Connect as the sign-in method and Web Application as the application type.
- Enter a name, for example
FinologeeBKO. - Under Grant type, keep Authorization Code selected.
- Under Sign-in redirect URIs, enter the redirect URI from Values to register. Leave Sign-out redirect URIs empty.
- Under Assignments, choose who may sign in, for example a group, then save.
- On the General tab, note the Client ID and the Client secret.
Values to send
| Item | Value |
|---|---|
| Issuer URL | https://{okta-domain} with the org authorization server, or https://{okta-domain}/oauth2/{authorization-server-id} with a custom authorization server |
| Client ID | {client-id} from step 7 |
| Client secret | The secret from step 7, through the secure channel |
See Okta's documentation on creating an OIDC app integration and on authorization servers.
Example: Keycloak
This example applies when your own organisation runs Keycloak as its identity provider.
Placeholders for Keycloak
| Placeholder | Meaning |
|---|---|
{keycloak-host} | The host name of your Keycloak server |
{realm} | The realm that holds your users |
Steps
- In the admin console, select
{realm}, open Clients and select Create client. - Set Client type to OpenID Connect and enter a Client ID, for example
finologeebko. - Turn Client authentication on and keep Standard flow enabled.
- Under Valid redirect URIs, enter the redirect URI from Values to register, then save.
- Open the Credentials tab and copy the Client secret.
- Check that the
profileandemailclient scopes are assigned to the client, so thatemail,given_nameandfamily_nameare in the ID token. They are assigned by default.
Values to send
| Item | Value |
|---|---|
| Issuer URL | https://{keycloak-host}/realms/{realm} (older installations may include /auth before /realms) |
| Client ID | The client ID from step 2 |
| Client secret | The secret from step 5, through the secure channel |
See the Keycloak Server Administration Guide, section "Creating an OpenID Connect client".
Client secret rotation
The client secret belongs to your identity provider, and you decide its expiry date. When the secret expires, SSO stops working for every user of the connection.
- Before the secret expires, create a new secret in your identity provider. Keep the old secret active.
- Send the new secret and its expiry date to Finologee through the secure channel.
- Wait for Finologee to confirm that the connection uses the new secret.
- Delete the old secret.
Plan the renewal a few weeks before the expiry date, and record the date in your own calendar.
Troubleshooting
| Symptom | Likely cause | What to do |
|---|---|---|
| Your identity provider reports a redirect URI mismatch | The redirect URI registered does not match exactly | Compare the registered value with Values to register, including the connection identifier |
| Login fails after authentication with an invalid client error | The client secret is wrong, or it has expired | Check the secret and its expiry date, then see Client secret rotation |
| Your identity provider reports that the user is not assigned | The application is restricted to assigned users | Assign the user, or one of their groups, to the application |
| The user signs in but FinologeeBKO does not recognise them | The email claim is missing from the ID token, or it differs from the email address of the FinologeeBKO user | Check the user's email attribute in your identity provider and the email address in FinologeeBKO |
| The user is asked to complete a profile form | given_name or family_name is missing from the ID token | Include both claims in the ID token |
If the problem remains, contact [email protected] with the time of the attempt, the user's email address and any error code shown.
Related documentation
- Single Sign-On (SSO) - Overview, onboarding sequence and choice of protocol
- SSO with SAML 2.0 - The same setup with SAML 2.0
- User & Groups - Enabling SSO for each user
Updated 18 days ago

