Dynamic Client Registration API#

Dynamic Clients may be Templatized or Non-Templatized.

To use Templatized Clients, first a Template Client must be created. That is just a normal Client which is also configured to be a Template as shown below:

Admin UIProfilesOauthOauth DevClientsClient

Configuring Client as a Template client
Configuring a client as a Template Client. (Admin UI version: 10.6)

Templatized Dynamic Client Registration#

Creating templatized clients only require a single parameter to indicate which client template to instantiate.

ParameterTypeDescription
software_idStringThe ID of the client template to instantiate

The Template Client used by the Dynamic Client must configure the following settings:

Client Authentication Method

The Authentication Method that the templatized client should use to authenticate. Must be either Client Secret or Credential Manager (see Client Authentication ).

Non-Templatized Dynamic Client Registration#

When creating a regular DCR client the request is a combination of grant_types and additional settings depending on what grant_types are requested.

ParameterTypeDescription
access_token_ttlIntegerThe TTL of the Access Token in seconds.
allow_per_request_redirect_urisBoolean(Deprecated). When using PAR, should each request be allowed to vary the redirect_uri. This is be replaced by redirect policies which are configured on the profile.
allowed_originsString ArrayA list of urls allowed to frame the flows.
application_urlURIA url of the application that the user may be redirected to if the session expires or the user bookmarks the login. Must reside on the same domain as a redirect URI.
authenticator_filtersString ArrayA list of authenticator filter id’s
authorization_signed_response_algStringThe algorithm to use for Jwt Secured Authorization Response Mode (JARM).
backchannel_authentication_request_signing_algStringThe algorithm to use for signed requests when using CIBA.
backchannel_client_notification_endpoint-Not used as only Poll deliver mode is supported.
backchannel_logout_uriURIA URI to call during OIDC back-channel logout.
backchannel_token_delivery_modeStringThe only available mode is poll.
backchannel_user_code_parameterBooleanIf back channel user code should be used with CIBA.
client_nameStringA human readable name of the client.
client_secret_expires_at-Not supported.
client_uriURIA URI to a webpage showing information about the client. Must reside on the same domain as a redirect URI.
default_max_ageIntegerA default max_age used for user authentication.
default_acr_valuesString ArrayThe authenticator ACRs to be used for this client.
disallowed_proof_key_challenge_methodsString ArrayA list of PKCE challenge methods that should be disabled.
frontchannel_logout_uriURIA URI to call during front-channel logout. Must reside on the same domain as a redirect URI.
grant_typesString ArrayA list of grant_types and capabilities for this client. Possible values are: authorization_code, client_credentials, https://curity.se/grant/assisted-token, implicit, urn:ietf:params:oauth:grant-type:device_code, urn:openid:params:grant-type:ciba, password.
id_token_encrypted_response_algStringThe key encryption algorithm to use for encrypted ID token responses.
id_token_encrypted_response_encStringThe content encryption algorithm to use for encrypted ID token responses.
id_token_signed_response_algStringThe ID token signing algorithm to be used.
id_token_ttlIntegerThe number of seconds the ID token should be valid for.
initiate_login_uriURIRP Initiated Login URI. Must reside on the same domain as a redirect URI.
jwksJSONA Json Web Key Set containing the public keys this client will use. Combine with token_endpoint_auth_method to enable Client Assertions for client authentication.
jwks_uriURIA URI pointing to a JWKS resource where the public keys for the client are published. Combine with token_endpoint_auth_method to enable Client Assertions for client authentication.
logo_uriURIA URI to a logo for the client. Must reside on the same domain as a redirect URI.
policy_uriURIA URI to a logo for the client. Must reside on the same domain as a redirect URI.
post_logout_redirect_urisURI ArrayA set of URIs allowed to redirect the user to after logout.
redirect_urisURI ArrayA set of URIs allowed to redirect to for front-channel flows.
refresh_token_max_rolling_lifetimeIntegerThe max number of seconds the refresh tokens may be refreshed from the time of original issuance.
refresh_token_ttlIntegerTime in seconds that the refresh token is valid. 0 will disable the use of refresh tokens.
request_object_signing_algStringThe whitelisted request object signing algorithm to be used with this client.
request_urisURI ArrayA list of request_uri’s allowed for Request Object by reference.
require_proof_keyBooleanRequires PKCE to always be used if set to true.
require_pushed_authorization_requestsBooleanRequires PAR to always be used if set to true.
requires_consentBooleanEnables User Consent for this client.
scopeStringSpace separated string of scopes.
sector_identifier_uriURISector identifier URI for when using PPID.
subject_typeStringpublic or pairwise. Pairwise enables PPID.
tls_client_auth_subject_dnStringThe client certificate DN.
token_endpoint_auth_methodStringThe authentication method to use on the token endpoint for client authentication.
token_endpoint_auth_signing_algStringThe signing algorithm to use on the token endpoint for client authentication.
tos_uriURIA URI for the Terms of Service for the client. Must reside on the same domain as a redirect URI.
userinfo_signed_response_algStringThe signing algorithm to use for signed userinfo responses. This effectively toggles on signed responses for userinfo.

Template Area In Non-Templatized Dynamic Client Registration#

The template area (to be used by authenticators during OAuth flows) for a non-templatized DCR client can be set using a pre-processing procedure only. Sending a template_area field in a registration request will result in the field being stored the same way as any other custom property (described below). This template_area (the one sent via a registration request) will have no effect on what template area authenticators will use during OAuth flows ran by the registered non-templatized DCR client.

In a scenario where a template_area field is sent in a registration request and it is set also in a pre-processing procedure, the template_area from the request will be stored as a custom property, and the template_area from the pre-processing procedure will be stored as well and it will be used by authenticators (so the two template areas will not overwrite one another).

Example of a pre-processing procedure that sets template area

function result(context) {
    return {
        template_area: 'custom-area',
    }
}

Custom Client Properties#

It is possible to send custom properties that should be stored as client properties. Any non-standard parameter will be recognized as a custom client property and stored as such. These are later available when issuing tokens etc.

Was this helpful?