Configure an OpenID Connect Provider to accept discovery requests
The discovery configuration endpoint makes information available about the capabilities supported by the OpenID Connect Provider (OP) server.
The metadata that is returned by this service is based on and extends the OIDC Discovery 1.0 specification provider metadata. The service returns a set of default configurations if nothing is specified. Otherwise, refer to the list of properties to understand their purpose and possible configurable options. We can override the default values for selected properties in the discovery configuration service. This action is performed by specifying the values in the server.xml file. Refer to the following table of properties to view the configurable properties and possible configuration options.
Attribute Name | Data Type | Required/Optional | Description |
---|---|---|---|
responseTypesSupported | Input | Optional | The response types supported by the OpenID Connect Provider (OP) server. Unless specified, the default values are code, token, and id_token
token. More than 1 value can be specified. These values are strings. For example, possible values are:
|
subjectTypesSupported | Output only | N/A | The subject types supported by the OP server. This value is set to public. This value is a string. |
idTokenSigningAlgValuesSupported | Output only | Optional | The ID token signing algorithms supported
by the OP server. This value is specified as the server attribute signatureAlgorithm in the openidConnectProvider server configuration. Unless
specified, the default value is HS256. Only 1 value can be specified. This is a string. For example, possible values for attribute signatureAlgorithm in the openidConnectProvider configuration:
|
scopesSupported | Input | Optional | The scope values supported by the OP server.
Unless specified, the default values are openid, general, profile, email, address,
and phone. More than 1 value can be specified. These
values are strings. For example, possible values are:
|
claimsSupported | Input | Optional | The claims values supported by the OP server. Unless specified, the default values are sub, groupIds, name, preferred_username, picture, locale, email,
and profile. More than 1 value can be specified.
These values are strings. For example, possible values are:
|
responseModesSupported | Input | Optional | The response modes supported by the OP server. Unless specified, the default values are query and fragment.
More than 1 value can be specified. These values are strings.
|
grantTypesSupported | Input | Optional | The grant types supported by the OP
server. Unless specified, the default values are authorization_code, implicit, refresh_token, client_credentials, password,
and urn:ietf:params:oauth:grant-type:jwtbearer. More
than 1 value can be specified. These values are strings. For example,
possible values are:
|
tokenEndpointAuthMethodsSupported | Input | Optional | The token endpoint authorization methods supported by the OP server. Unless specified, the default values
are client_secret_post, and client_secret_basic.
More than 1 value can be specified. These values are strings. For example, possible values are:
|
displayValuesSupported | Output only | N/A | The display values supported by the OP server. This value is set to page. This value is a string. |
claimTypesSupported | Output only | N/A | The claim type values supported by the OP server. This value is set to normal. This value is a string. |
claimsParameterSupported | Input | Optional | Indication of whether claims parameter is supported
by the OP server. Unless specified, the default value is false.
Only 1 value can be specified. This is a Boolean value. For example,
possible values are:
|
requestParameterSupported | Input | Optional | Indication of whether a request parameter is supported by the OP server. Unless specified, the default value is false.
Only 1 value can be specified. This is a Boolean value. For example,
possible values are:
|
requestUriParameterSupported | Input | Optional | Indication of whether request URI parameter
is supported by the OP server. Unless specified, the default value is false. Only 1 value can be specified. This is a Boolean value. For example, possible values are:
|
requireRequestUriRegistration | Input | Optional | Indication of whether require request URI registration
is supported by the OP server. Unless specified, the default value is false. Only 1 value can be specified. This is a Boolean value. For example, possible values are:
|
Examples of discovery configuration
The following example assumes that the Liberty OP is configured with SSL on port 443.https://server.example.com:443/oidc/endpoint/<provider_name>/
The discovery configuration endpoint is accessible at:
https://server.example.com:443/oidc/endpoint/<provider_name>/.well-known/openid-configuration
For example, in the server.xml file, a user can customize their OpenID Connect discovery configuration properties in the following manner:
<openidConnectProvider id="OidcConfigSample" oauthProviderRef="OAuthConfigSample"> <discovery responseTypesSupported="token, id_token token" subjectTypesSupported="public" scopesSupported="openid, general, profile" claimsSupported="sub, groupIds, name" responseModesSupported="query" grantTypesSupported="implicit" tokenEndpointAuthMethodsSupported="client_secret_basic" displayValuesSupported="page" claimTypesSupported="normal" claimsParameterSupported="true" requestParameterSupported="true" requestUriParameterSupported="true" requireRequestUriRegistration="true" /> </openidConnectProvider> <oauthProvider id="OAuthConfigSample"> </oauthProvider>
- Example of customized discovery configuration
-
Request Headers: GET https://server.example.com:443/oidc/endpoint/<provider_name>/.well-known/openid-configuration Response Headers: Status: 200 Content-Type: application/json Cache-Control:public, max-age=3600 Response Body: { "introspection_endpoint":"https://server.example.com:443/oidc/endpoint/<provider_name>/introspect", "coverage_map_endpoint":"https://server.example.com:443/oidc/endpoint/<provider_name>/coverage_map", "issuer":"https://server.example.com:443/oidc/endpoint/<provider_name>", "authorization_endpoint":"https://server.example.com:443/oidc/endpoint/<provider_name>/authorize", "token_endpoint":"https://server.example.com:443/oidc/endpoint/<provider_name>/token", "response_types_supported":[ "token", "id_token token" ], "subject_types_supported":[ "public" ], "userinfo_endpoint":"https://server.example.com:443/oidc/endpoint/<provider_name>/userinfo", "registration_endpoint":"https://server.example.com:443/oidc/endpoint/<provider_name>/registration", "scopes_supported":[ "openid", "general", "profile" ], "claims_supported":[ "sub", "groupIds", "name" ], "response_modes_supported":[ "query" ], "grant_types_supported":[ "implicit" ], "token_endpoint_auth_methods_supported":[ "client_secret_basic" ], "display_values_supported":[ "page" ], "claim_types_supported":[ "normal" ], "claims_parameter_supported":true, "request_parameter_supported":true, "request_uri_parameter_supported":true, "require_request_uri_registration":true, "check_session_iframe":"https://server.example.com:443/oidc/endpoint/<provider_name>/check_session_iframe", "end_session_endpoint":"https://server.example.com:443/oidc/endpoint/<provider_name>/end_session" }
Request Headers: GET https://server.example.com:443/oidc/endpoint/<provider_name>/.well-known/openid-configuration Response Headers: Status: 200 Content-Type: application/json Cache-Control:public, max-age=3600 Response Body: { "introspection_endpoint":"https://server.example.com:443/oidc/endpoint/<provider_name>/introspect", "coverage_map_endpoint":"https://server.example.com:443/oidc/endpoint/<provider_name>/coverage_map", "issuer":"https://server.example.com:443/oidc/endpoint/<provider_name>", "authorization_endpoint":"https://server.example.com:443/oidc/endpoint/<provider_name>/authorize", "token_endpoint":"https://server.example.com:443/oidc/endpoint/<provider_name>/token", "response_types_supported":[ "code", "token", "id_token token" ], "subject_types_supported":[ "public" ], "userinfo_endpoint":"https://server.example.com:443/oidc/endpoint/<provider_name>/userinfo", "registration_endpoint":"https://server.example.com:443/oidc/endpoint/<provider_name>/registration", "scopes_supported":[ "openid", "general", "profile", "email", "address", "phone" ], "claims_supported":[ "sub", "groupIds", "name", "preferred_username", "picture", "locale", "email", "profile" ], "response_modes_supported":[ "query", "fragment" ], "grant_types_supported":[ "authorization_code", "implicit", "refresh_token", "client_credentials", "password", "urn:ietf:params:oauth:grant-type:jwt-bearer" ], "token_endpoint_auth_methods_supported":[ "client_secret_post", "client_secret_basic" ], "display_values_supported":[ "page" ], "claim_types_supported":[ "normal" ], "claims_parameter_supported":false, "request_parameter_supported":false, "request_uri_parameter_supported":false, "require_request_uri_registration":false, "check_session_iframe":"https://server.example.com:443/oidc/endpoint/<provider_name>/check_session_iframe", "end_session_endpoint":"https://server.example.com:443/oidc/endpoint/<provider_name>/end_session" }