Toggle menu

OpenID Connect

Connect to any provider that conforms to the OpenID Connect specification. The OpenID Connect Provider (ie whatever it is that holds all of the user data) will need to supply a client ID and secret, as well as a discovery endpoint URL.

The provider will also need to know the re-entry target of the Authentication worker, which in a standard installation will be https://website.com/apiserver/auth/http/reentry - all subsites using this provider should enforce HTTPS in their Subsite Properties.

Provider Linking and Group Mirroring

The standard provider type, openid, allows user login linking but does not allow group mirroring.

A second version, openid_no_link, allows group mirroring, but not linking.

We do not allow linking and mirroring with the same provider because an additional login on an account, external to the provider that manages groups, could grant undue access to a user who logs in with that additional login.

Provider Type

  • openid_no_link - linking disabled, group mirroring enabled
  • openid - linking enabled, group mirroring disabled

Parameters

As well as the parameters described in Base Provider Parameters, the following must be set in the params object.

NameTypeComments
Required
clientIdStringThe Client ID from the identity provider
discoveryEndpointUrlStringThe location of the provider's discovery document found at a "well-known" location
secretStringThe Client secret from the identity provider
userProfileAttributeMappingObjectMaps profile properties (left) to the Authentication Worker's UserProfile class fields (right)

Only the UNIQUEID field is required. See Site User Profile Mapping for further information

"userProfileAttributeMapping": {
    "mapping": {
        "SUB": {
            "mappings": ["UNIQUEID"]
        },
        "NAME": {
            "mappings": ["PREFERREDNAME"]
        },
        "GIVEN_NAME": {
            "mappings": ["FORENAMES"]
        },
        "FAMILY_NAME": {
            "mappings": ["SURNAME"]
        },
        "EMAIL": {
            "mappings": ["EMAIL"]
        }
    }
}
Optional
acrValuesStringThe acr_values claim, for example "urn:okta:loa:1fa:any" 
validateAcrValuesBooleanDefault: true. Whether or not to validate that the values returned from the provider match those sent
authClaimsStringA comma separated list of requested claims
authenticationMethodStringDefault client_secret_post

Request to the /token endpoint using the client authentication method, either private_key_jwt or client_secret_post. If you use a private key, the path is set using the tokenEndpointPrivateKeyPath
authUiLocalesStringSets ui_locales in the authentication request, for example "cy"
authVtrStringThe vectors of trust to request. A comma separated string, for example "P1.Cb.Cc.Ab,Ce.Ab"
clockSkewIntegerA number of seconds to allow for discrepancies between clocks on local and remote servers. Default 0
debugLoggingBooleanDefault: false

If enabled the JWT Token and Attribute Mapping Values will be logged, simplifying the process of creating a mapping
didEndPointStringThe url to retrieve Decentralized Identifiers document (DID) for core identity verification
expectedIdentityConfidenceLevelStringA comma separated string to define the level of identity confidence for your service
nonceEnabledBooleanDefault: false

Whether to include nonce parameter for the /authorize endpoint
persistIdTokenBooleanDefault: false

Persists the id_token from token endpoint if true
requestPostResponseBooleanDefault: true

If true, Form Post Response Mode is enabled. This adds response_mode=form_post to the authorizationURL. This is recommended for Azure.

Set as false if the provider expects a multipart response body
requestUserInfoBooleanIf true the provider will make an additional call to the userinfo_endpoint to retrieve information. In most circumstances this is not needed as the data is in the id_token
responsetypeStringSpace delimited list of responses requested. Any of:

code
token
id_token
none

Default: "id_token token"
scopesStringSpace delimited scopes to request from the provider

Default: "openid"
shouldUseSingleSignOutBooleanDefault: true

Whether or not logging out should terminate the sessions of all applications involved. If false logging out of the iCM powered site will not log the user out of, eg their Azure account
tokenEndpointPrivateKeyAlgorithmStringDefault: "RS256"

Algorithm of private key of signing JWT assertion
tokenEndpointPrivateKeyPathStringThe path to the private key of signing JWT assertion, for example "${APISERVER}/data/auth/ONELOGIN/tokenEndpointPrivateKey"
tokenSigningCertFilePathString (File path)Default: null

Optional path to a PEM encoded .cer file containing the certificate to use. Certificates should be stored in the ${APISERVER}/data/auth directory, eg ${APISERVER}/data/auth/openid-providername/openid-token-signing.cer
tokenSigningKeyStringA key to use instead of a certificate
validateTokenModeStringMode of validating the JWT returned from endpoints
Group Mirroring
excludeMirroredGroupsArray<String>If includeMirroredGroups and includeMirroredGroupsRegex have not been provided then all groups will be mirrored, excluding those in this list or those that match excludeMirroredGroupsRegex. Group names are case insensitive
excludeMirroredGroupsRegexString (Regex)Default: null

If includeMirroredGroups and includeMirroredGroupsRegex have not been provided then all groups will be mirrored, excluding those in excludeMirroredGroups and those that match this regular expression
groupAttributeStringDefault: null

Name of the JWT token attribute containing the JSON array of groups the user is a member of

For example if on the server the attribute 'Token-Groups - Unqualified Names' was mapped to a token name of 'ADGROUPS', the value of this property should be 'ADGROUPS'
includeMirroredGroupsArray<String>Default: null

If defined, only groups in this list of group names or those that match includeMirroredGroupsRegex will be mirrored. Group names are case insensitive
includeMirroredGroupsRegexString (Regex)Default: null

If defined, only groups that are either in the includeMirroredGroups list or match this regex will be mirrored
mirrorGroupsBooleanDefault: false

If true creates an iCM Site User group structure identical to that returned by the provider.

For example, with a provider prefix of "OPENID_" and a user in the following groups:
  • admins
  • webteam
  • companyuser

once authenticated, iCM site user groups with the following names will be created if they do not already exist, and the user added to them:

  • OPENID
  • OPENID_ADMINS
  • OPENID_WEBTEAM
  • OPENID_COMPANYUSER

Mirrored groups are updated every time a user successfully authenticates

Example

This example shows three different providers, all using the OpenID type. The first connects to the API Server's own OAuth worker (a premium service).

{
    "providerName": "icmOIDC",
    "providerDisplayName": "icm OpenID Connect",
    "type": "openid",
    "userPrefix": "ICMOIDC_",
    "params": {
        "checkConsentToStoreData": false,
        "failIfConsentNotGiven": true,
        "clientId": "...",
        "secret": "...",
        "discoveryEndpointUrl": "https://demosite.gossinteractive.com/apiserver/oauth/http/.well-known/openid-configuration",
        "userProfileAttributeMapping": {}
    }
}, {
    "providerName": "googleOID",
    "providerDisplayName": "google OpenID Connect",
    "type": "openid",
    "userPrefix": "GOID_",
    "params": {
        "checkConsentToStoreData": false,
        "failIfConsentNotGiven": true,
        "clientId": "123...456-idj...i0.apps.googleusercontent.com",
        "secret": "wmX.....-.....KiQ",
        "discoveryEndpointUrl": "https://accounts.google.com/.well-known/openid-configuration",
        "userProfileAttributeMapping": {}
    }
}, {
    "providerName": "azureOID",
    "providerDisplayName": "azure OpenID Connect",
    "type": "openid",
    "userPrefix": "AOID_",
    "params": {
        "checkConsentToStoreData": false,
        "failIfConsentNotGiven": true,
        "clientId": "7f0...-...-...-...7de",
        "secret": "Zjgq...IKME=",
        "discoveryEndpointUrl": "https://login.microsoftonline.com/{tenant}/.well-known/openid-configuration",
        "userProfileAttributeMapping": {}
    }
}

Last modified on 3 March 2026