-
-
Notifications
You must be signed in to change notification settings - Fork 47
docs: Add OPENID_CONNECT authentication module documentation #137
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 6 commits
bfb4dd6
15312ef
6f3a1f5
50e3937
d796363
92d58f0
f3fe265
29f1292
9790f10
df894da
473462f
3bb4519
ca9276d
4bd801f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -291,4 +291,87 @@ a|authentication.json | |||||
| |=== | ||||||
| In general, if you add a custom property, the Admin UI writes changes to the `authentication.json` or `ui-configuration.json` files. | ||||||
|
|
||||||
| [#openid-connect-module-details] | ||||||
| === OPENID_CONNECT Module Configuration Options | ||||||
|
|
||||||
| The `OPENID_CONNECT` module authenticates users via an OpenID Connect 1.0 provider. It reads an OpenID Connect ID token (JWT) from an HTTP header, validates it against the configured OIDC provider, and maps the identity to an OpenIDM managed object. | ||||||
|
|
||||||
| [#table-openid-connect-module] | ||||||
| .OPENID_CONNECT Module Properties | ||||||
| [cols="28%,29%,43%"] | ||||||
| |=== | ||||||
| |Authentication Property |Property as Listed in the Admin UI |Description | ||||||
|
|
||||||
| a|`enabled` | ||||||
| a|Module Enabled | ||||||
| a|Whether OpenIDM uses this module. | ||||||
|
|
||||||
| a|`openIdConnectHeader` | ||||||
| a|OpenID Connect Header | ||||||
| a|Name of the HTTP header that carries the OIDC access token passed from the client (for example, `authToken`). | ||||||
|
|
||||||
| a|`queryOnResource` | ||||||
| a|Query on Resource | ||||||
| a|Managed object endpoint to query after token validation (for example, `managed/google`). | ||||||
|
|
||||||
| a|`propertyMapping.authenticationId` | ||||||
| a|Authentication ID | ||||||
| a|Attribute in the managed object used as the user identifier. | ||||||
|
||||||
| a|Attribute in the managed object used as the user identifier. | |
| a|Attribute in the managed object used as the user identifier, to be matched against the resolver's `authenticationId` claim. |
Copilot
AI
Mar 26, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
resolvers[].authenticationId is described as an “OIDC claim or managed object attribute”, but this field corresponds to a property/claim in the identity provider profile/ID token used to identify the subject (it’s used to read from the provider profile). It shouldn’t be described as a managed object attribute here; clarify it’s the provider profile claim name (for example, sub).
| a|OIDC claim or managed object attribute used as the user identifier (for example, `sub` or `_id`). | |
| a|Claim name in the identity provider profile or ID token used as the user identifier (for example, `sub`). |
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -480,6 +480,56 @@ Set up logins with OpenAM, to work with the related login session cookie, known | |||||
| IWA:: | ||||||
| The IWA module enables users to authenticate by using Integrated Windows Authentication (IWA), rather than by providing a username and password. For information about configuring the IWA module with OpenIDM, see xref:#openidm-auth-kerberos["Configuring IWA Authentication"]. | ||||||
|
|
||||||
| [#openid-connect-module] | ||||||
| OPENID_CONNECT:: | ||||||
| The `OPENID_CONNECT` module authenticates users via an OpenID Connect 1.0 provider. It reads an OpenID Connect ID token (JWT) from an HTTP header (configured via `openIdConnectHeader`), validates it against the configured OIDC provider endpoints, and maps the authenticated identity to an OpenIDM managed object. | ||||||
| + | ||||||
| The module uses a single OIDC provider configuration from the first entry in the `resolvers` array (`resolvers[0]`). Although `resolvers` is defined as an array, only one resolver is supported and used per `OPENID_CONNECT` module instance; that entry configures the provider with its own `client_id`, `client_secret`, and endpoint URLs. When a `well-known` discovery URL is provided, the module auto-populates the `authorization_endpoint`, `token_endpoint`, and `userinfo_endpoint` from the provider's OIDC discovery document. | ||||||
| + | ||||||
| The following excerpt shows a sample `OPENID_CONNECT` configuration using Google as the identity provider: | ||||||
| + | ||||||
|
|
||||||
| [source, json] | ||||||
| ---- | ||||||
| { | ||||||
| "name" : "OPENID_CONNECT", | ||||||
| "enabled" : true, | ||||||
| "properties" : { | ||||||
| "augmentSecurityContext": { | ||||||
| "type" : "text/javascript", | ||||||
| "file" : "auth/populateAsManagedUserFromRelationship.js" | ||||||
| }, | ||||||
| "propertyMapping" : { | ||||||
| "userRoles" : "authzRoles", | ||||||
| "authenticationId" : "_id" | ||||||
| }, | ||||||
| "defaultUserRoles" : [ | ||||||
| "openidm-authorized" | ||||||
| ], | ||||||
| "resolvers" : [ | ||||||
| { | ||||||
| "name" : "google", | ||||||
| "type" : "OPENID_CONNECT", | ||||||
| "icon" : "<button class=\"btn btn-lg btn-default btn-block btn-social-provider\"><img src=\"images/google.png\">Sign in with Google</button>", | ||||||
| "scope" : ["openid", "email", "profile"], | ||||||
| "authenticationId" : "_id", | ||||||
|
||||||
| "authenticationId" : "_id", | |
| "authenticationId" : "sub", |
Uh oh!
There was an error while loading. Please reload this page.