Service Settings 3.0

Table of Contents

Service Settings

This page documents all the services settings available to configure Authlete service for your authorization server. You can manage these configurations through the Authlete Management Console or via the Authlete APIs.

Basic Settings

Service Name

A name of this service. Up to 100 Unicode characters.

Service Description

A description of this service. Up to 200 Unicode characters.

Issuer Identifier

An identifier of this service as an OpenID Provider. Authlete uses it as the value of the “iss” claim in ID token issued by this service. Additionally, if this service implements a discovery endpoint (OpenID Connect Discovery 1.0, 4. Obtaining OpenID Provider Configuration Information) using Authlete’s /api/service/configuration API, Authlete uses it as the value of the “issuer” property included in the response from the endpoint.

The default value is “https://authlete.com.” Change this value in a production environment. This must be an URL starting with “https://” and excluding the query part and the fragment part.

The URL of a discovery endpoint must be {Token-Issuer-Identifier}/.well-known/openid-configuration, so be careful when determining the value of the token issuer identifier if your service exposes a discovery endpoint. See OpenID Connect Discovery 1.0, 4. Obtaining OpenID Provider Configuration Information for details.

Supported Custom Client Metadata

Names of custom client metadata that this service supports. Some names, such as client_name, are reserved and not supported.

Service Attributes

Attributes of this service. You can associate arbitrary key-value pairs with the service for any purpose. The associated attributes are embedded in responses of some Authlete APIs (e.g., /api/auth/introspection API). In most cases, they are embedded as the value of serviceAttributes, but in cases where a response contains service, the attributes are embedded as the value of attributes in the service JSON object.

The attributes are encrypted and stored in Authlete’s database.

Access Tokens

This section allows you to generate Service Access Tokens with use_service permissions. These tokens grant you the necessary permissions to manage the service and its clients, as well as to call all essential endpoints required for implementing your Authorization Server. Use this access token alongside your Service ID and cluster URL in your Authorization Server implementation.

Endpoints: Global Settings

Supported Grant Types

Grant types supported by this service. This configuration item indicates which flows defined in RFC 6749 are supported. If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the grant_types_supported property included in the response from the endpoint.

Client applications can use only the flows enabled in this setting. Using an unsupported flow results in an error.

AUTHORIZATION_CODE is a flow to get issued an authorization code at the authorization endpoint and exchange it for an access token at the token endpoint. Details are described in RFC 6749, 4.1. Authorization Code Grant. This is the most common flow.

IMPLICIT is a flow to get issued an access token directly at the authorization endpoint. Details are described in RFC 6749, 4.2. Implicit Grant. This flow is used, for example, to issue access tokens directly to JavaScript applications that run in web browsers.

PASSWORD is a flow to get issued an access token by presenting a user’s credentials (ID & password) at the token endpoint. Details are described in RFC 6749, 4.3. Resource Owner Password Credentials Grant. As stated in the specification, use this flow only when other flows cannot be used for some reason. If you don’t have a clear reason, disable this flow in a commercial environment.

CLIENT_CREDENTIALS is a flow to get issued an access token by presenting a client application’s credentials (client ID and client secret) at the token endpoint. Details are described in RFC 6749, 4.4. Client Credentials Grant. Access tokens issued by this flow are not associated with any user. If you don’t have a clear reason to issue such access tokens, disable this flow in a commercial environment.

REFRESH_TOKEN is a flow to get a new access token by presenting a refresh token at the token endpoint. Details are described in RFC 6749, 6. Refreshing an Access Token. If this flow is disabled, refresh tokens are not issued.

[cf.] Diagrams And Videos Of All The OAuth 2.0 Flows

CIBA (TBD)

DEVICE_CODE (TBD)

TOKEN_EXCHANGE (TBD)

JWT_BEARER (TBD)

PRE_AUTHORIZED_CODE (TBD)

Supported Response Types

Supported combinations of tokens issued from the authorization endpoint. If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the response_types_supported property included in the response from the endpoint.

In RFC 6749, what can be issued at a time at the authorization endpoint is either an authorization code or an access token, but the additional specification of OAuth 2.0 Multiple Response Type Encoding Practices has enabled issuing any combination of an authorization code, an access token, and an ID token. Also, an option to issue nothing (none) has been added.

NONE, CODE, TOKEN, and ID_TOKEN mean that “none”, “code”, “token”, and “id_token” can be independently specified as a value of the response_type parameter of an authorization request, respectively.

CODE_TOKEN means that the combination of “code” and “token” (in no particular order) can be specified as the value of the response_type parameter. Likewise, CODE_ID_TOKEN represents the combination of “code” and “id_token”, ID_TOKEN_TOKEN represents the combination of “id_token” and “token”, and CODE_ID_TOKEN_TOKEN represents the combination of “code”, “id_token”, and “token”.

Client applications cannot use combinations disabled here as the value of the response_type request parameter.

If you don’t have a clear reason, leave all the combinations enabled (it is up to you whether to enable or disable “none”).

[cf.] Diagrams of All The OpenID Connect Flows

Supported Service Profiles

[IMPORTANT] Supported additional features on top of the base OAuth 2.0 and OpenID Connect. Note that if these features are not enabled in your Authlete server environment, you can’t use them even if they are marked as enabled in the Console. Please contact sales@authlete.com for details.

FAPI is a set of security profiles defined by the FAPI Working Group under the OpenID Foundation.

OPEN_BANKING represents the Open Banking Security Profile defined by Open Banking Implementation Entity in the UK. This feature works on top of FAPI.

Error Details

Include Error Description

If enabled, error responses from your authorization server will include the error_description response parameter.

error_description is a standard response parameter defined in RFC 6749, but its content depends on each authorization server implementation. On error cases, Authlete sets an error description to the error_description response parameter. The content of the description may either be generic or Authlete-specific. In either case, it contains an Authlete-specific result code.

If you want to hide the information in a production environment, disable this setting. However, note that in that case, error information returned to client applications will become very simple (e.g., “error=invalid_request” only), so it may take longer for client application developers to find error causes.

Include Error URI

If enabled, error responses from your authorization server will include the error_uri response parameter.

error_uri is a standard response parameter defined in RFC 6749, but its content depends on each authorization server implementation. On error cases, Authlete sets a URI to the error_uri response parameter, which points to the page that contains the list of error descriptions. The page exists on Authlete’s website. If you want to hide the information in a production environment, disable this setting.

Endpoints: Authorization

Authorization Endpoint URL

An URL of the authorization endpoint. If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the authorization_endpoint property included in the response from the endpoint.

OpenID Connect Discovery 1.0 states the authorization_endpoint property is REQUIRED. Therefore, if you want to comply with the specification completely, set a proper value to this configuration item.

Proof Key for Code Exchange (PKCE)

Require PKCE

[Enabled recommended] This configuration item determines whether to require the code_challenge request parameter as a mandatory parameter in the authorization code flow.

If enabled, authorization requests using the authorization code flow without the code_challenge request parameter are all rejected.

If disabled, the code_challenge request parameter becomes optional, but even in this case, if an authorization request includes the request parameter, it is handled as the specification defines. As a result, the token request that corresponds to the authorization request with the code_challenge request parameter has to include a code_verifier request parameter.

The code_challenge is defined in RFC 7636 (Proof Key for Code Exchange by OAuth Public Clients). This specification is a countermeasure for the authorization code interception attack. If your system allows smartphone applications to use the authorization code flow, the code_challenge request parameter is almost mandatory from a security standpoint.

If enabled, your system will become more secure. However, keep in mind that client application developers are required to do additional work.

If you don’t have a reason like “we have to support existing client applications that don’t support PKCE,” especially if you build a new service and develop a new client application, “Required” is recommended in a production environment.

Require S256 for Code Challenge Method

(TBD)

[cf.] Proof Key for Code Exchange (RFC 7636)

Authorization Response Duration

The duration of authorization response JWTs in seconds.

Financial-grade API: JWT Secured Authorization Response Mode for OAuth 2.0 (JARM) defines the following new values for the response_mode request parameter:

  • query.jwt
  • fragment.jwt
  • form_post.jwt
  • jwt

If one of these is specified as the response mode, response parameters from the authorization endpoint will be packed into a JWT. This value is used to compute the value of the exp claim of the JWT. The maximum value is 999999999999999 seconds (about 31.7 million years).

Issuer Identification Response Parameter

If Suppress is selected, the authorization server does not include the iss response parameter in authorization responses.

“OAuth 2.0 Authorization Server Issuer Identifier in Authorization Response” has defined a new authorization response parameter, iss, as a countermeasure for a certain type of mix-up attacks.

The specification requires that the iss response parameter always be included in authorization responses unless JARM (JWT Secured Authorization Response Mode) is used.

By switching this configuration item, developers of client applications can experiment with the mix-up attack and the effect of the iss response parameter.

Note that you should not select Suppress in a production environment unless there are special reasons for it.

Loopback Redirection URI

This is a flag indicating whether the port number component of redirection URIs can be variable when the host component denotes loopback.

When Variable is selected, if the host component of a redirection URI specified in an authorization request denotes loopback (to be precise, when the host component is localhost, 127.0.0.1, or ::1), the port number component is ignored when the specified redirection URI is compared to pre-registered ones. This behavior is described in 7.3. Loopback Interface Redirection of RFC 8252 OAuth 2.0 for Native Apps.

3.1.2.3. Dynamic Configuration of RFC 6749 states:

“If the client registration included the full redirection URI, the authorization server MUST compare the two URIs using simple string comparison as defined in [RFC3986] Section 6.2.1.”

Also, the description of redirect_uri in 3.1.2.1. Authentication Request of OpenID Connect Core 1.0 states:

“This URI MUST exactly match one of the Redirection URI values for the Client pre-registered at the OpenID Provider, with the matching performed as described in Section 6.2.1 of [RFC3986] (Simple String Comparison).”

These “Simple String Comparison” requirements are preceded by this flag. That is, even when the conditions described in RFC 6749 and OpenID Connect Core 1.0 are satisfied, the port number component of loopback redirection URIs can be variable when this flag is true (Variable).

8.3. Loopback Redirect Considerations of RFC 8252 states:

“While redirect URIs using localhost (i.e., http://localhost:{port}/{path}) function similarly to loopback IP redirects described in Section 7.3, the use of localhost is NOT RECOMMENDED. Specifying a redirect URI with the loopback IP literal rather than localhost avoids inadvertently listening on network interfaces other than the loopback interface. It is also less susceptible to client-side firewalls and misconfigured host name resolution on the user’s device.”

However, Authlete allows the port number component to be variable in the case of localhost, too. It is left to client applications whether they use localhost or a literal loopback IP address (127.0.0.1 for IPv4 or ::1 for IPv6).

Section 7.3 and Section 8.3 of RFC 8252 state that loopback redirection URIs use the http scheme, but Authlete allows the port number component to be variable in other cases (e.g., in the case of the https scheme), too.

Because FAPI 1.0 Part 1 Section 7.5. Native Apps explicitly states:

“shall not support Loopback Interface Redirection”

the port number component of loopback redirection URIs cannot be variable in the context of FAPI, even if Variable is selected.

Supported Locales

A list of display languages supported on the authorization page of your authorization server. Technically, this is a list of language tags (RFC 5646) that the authorization endpoint recognizes as the value of the ui_locales parameter (OpenID Connect Core 1.0, 3.1.2.1. Authentication Request). If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the ui_locales_supported property included in the response from the endpoint.

A client application may specify display languages for the authorization page by using the ui_locales request parameter. However, it is not assured that the authorization server honors the request parameter and changes the display language accordingly. Even if the authorization server completely ignores the ui_locales parameter, it is not a specification violation. Probably, most authorization server implementations recognize the Accept-Language HTTP header but don’t recognize the ui_locales request parameter.

The value of the ui_locales parameter in an authorization request is included in a response from Authlete’s /api/auth/authorization API as the value of the uiLocales property. However, languages that are not listed in this configuration item will never be included in the uiLocales. For example, even if an authorization request includes ui_locales=ja, if “ja” is not listed in this configuration item, “ja” will not appear in the uiLocales property in the response from /api/auth/authorization API.

If your authorization endpoint implementation ignores the ui_locales request parameter, you can leave this configuration item empty.

Supported Display Types

A list of display types supported on the authorization page of your authorization server. Technically, this is a list of valid values that the authorization endpoint recognizes as the value of the display parameter (OpenID Connect Core 1.0, 3.1.2.1. Authentication Request). If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the display_values_supported property included in the response from the endpoint.

PAGE is the default value to request the entire drawing area of the user agent to be used. If this display type is checked, display=page can be included in an authorization request. If this display type is disabled, Authlete regards all authorization requests that don’t include the display request parameter explicitly as invalid requests. Therefore, don’t disable this display type.

POPUP is the value to request a popup to be used. If this display type is checked, display=popup can be included in an authorization request.

TOUCH is the value to request a page suitable for touch devices. If this display type is checked, display=touch can be included in an authorization request.

WAP is the value to request a page suitable for feature phones. If this display type is checked, display=wap can be included in an authorization request.

A client application may specify a display type for the authorization page by using the display request parameter. However, it is not assured that the authorization server honors the request parameter and changes the display type accordingly. Even if the authorization server completely ignores the display parameter, it is not a specification violation.

If a value that is not checked in this configuration item is used as the value of the display request parameter, the authorization server returns an error.

The value of the display parameter in an authorization request is included in a response from Authlete’s /api/auth/authorization API as the value of the display property. If the authorization request does not include the display parameter, the value of the display property in the response from /api/auth/authorization API becomes the default value, PAGE.

If you don’t have a clear reason, leave all the display types checked.

Supported Authentication Context Class References

Authentication context class references supported for user authentication at the authorization endpoint. If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the acr_values_supported property included in the response from the endpoint.

A client application may specify authentication contexts it wants to be satisfied when the authorization server processes an authorization request. The means to specify authentication contexts are (1) the acr_values request parameter (OpenID Connect Core 1.0, 3.1.2.1. Authentication Request), (2) the acr claim in the claims request parameter (OpenID Connect Core 1.0, 5.5. Requesting Claims using the “claims” Request Parameter), and (3) the default_acr_values metadata (OpenID Connect Dynamic Client Registration 1.0, 2. Client Metadata) of the client application.

Even if authentication contexts are specified by the means above, values not listed in this configuration item will be dropped on Authlete’s side. For example, even if an authorization request includes acr_values=my_acr, my_acr won’t be included in the acrs property in the response from Authlete’s /api/auth/authorization API if my_acr is not included in this configuration item.

If you do not plan to implement an authorization server that refers to the value of specified authentication contexts and changes its behavior accordingly, you can leave this configuration item empty.

The UK Open Banking defines at least two authentication contexts: “urn:openbanking:psd2:sca” and “urn:openbanking:psd2:ca”.

Request Object

If Require is selected, authorization requests to this service must always specify a request object by using the request or request_uri parameter.

If Require is selected here and JAR compatible is selected in Request Object Processing, this service behaves as if require_signed_request_object server metadata is true. See the specification of JAR (JWT Secured Authorization Request) for details about the server metadata.

Request Object Processing

If Enable JAR Compatibility is selected, request objects are processed based on the rules defined in JAR (JWT Secured Authorization Request). If not, the rules defined in OpenID Connect Core 1.0 apply for backward compatibility.

Differences between JAR rules and OIDC Core 1.0 rules are as follows:

  1. JAR requires that request objects be always signed.
  2. JAR prohibits referring to request parameters outside the request object. As a result, when JAR rules apply, parameters outside the request object and parameters inside the request object are not merged.
  3. OIDC Core 1.0 requires that the response_type query/form parameter be present outside the request object even when the request object contains response_type. On the contrary, when JAR rules apply, the response_type query/form parameter outside the request object is no longer mandatory. However, instead, it means JAR requires that response_type be always included in the request object.
  4. OIDC Core 1.0 requires that an OIDC request come with the scope query/form parameter, including openid, even when the request object contains scope. On the contrary, when JAR rules apply, the scope query/form parameter outside the request object is no longer mandatory. Note that the request object must contain scope including openid so that the authorization request can be regarded as an OIDC request.

If Enable JAR Compatibility is selected here and Mandatory is selected in Request Object, this service behaves as if require_signed_request_object server metadata is true. See the specification of JAR for details about the server metadata.

nbf Claim

This setting is intended to facilitate smooth migration from FAPI 1.0 ID2 to 1.0 Final without breaking live systems. If Require is off, even when an authorization request is regarded as a FAPI-Part2 request, the nbf claim in the request object used in the authorization request is treated as optional.

The final version of the Financial-grade API (FAPI) was approved in January 2021. Part 2 introduec a new requirement for request object lifetimes: they must contain an nbf claim, and the duration (exp - nbf) must not exceed 60 minutes. If an authorization request is treated as a FAPI-Part2 request, its request object must include an nbf claim; otherwise, the authorization server will reject it. This setting allows for backward compatibility when needed.

Supported Authorization Details Types

Supported values of the type field of each element in authorization_details. Details are defined in OAuth 2.0 Rich Authorization Requests.

Encryption in Front Channel

If Require is selected, encryption of request objects is required when the request object is passed through the front channel.

The configuration of this property does not affect the processing of request objects at the Pushed Authorization Request Endpoint, which is defined in OAuth 2.0 Pushed Authorization Requests. Unencrypted request objects are accepted at the endpoint even if this property is set to Require.

Note that, even if Require is not selected, encryption of the request object is required if the client’s Request Object Encryption In Front Channel is set to Require.

Encryption Algorithm Match

If Require is selected, the JWE alg of an encrypted request object must match the request_object_encryption_alg client metadata of the client that sent the request object.

Note that, even if Require is not selected, the match is required if the client’s Request Object Encryption Algorithm Match is set to Require.

Encryption Encoding Algorithm Match

If Require is selected, the JWE enc of an encrypted request object must match the request_object_encryption_enc client metadata of the client that sent the request object.

Note that, even if Require is not selected, the match is required if the client’s Request Object Encryption Encoding Algorithm Match is set to Require.

Audience Validation

If Require is selected, Authlete checks whether the aud claim of a request object matches the issuer identifier of this service and raises an error when they are different. On the other hand, if Require is not selected, Authlete does not check the value of the aud claim.

Both OpenID Connect Core 1.0 and RFC 9101 state that the aud claim should match or include the issuer identifier of the server. If you want to treat the statement as a mandatory requirement, please select Require.

Depending on the category of the official conformance suite, Require has to be selected here.

Endpoints: Token

Token Endpoint URL

An URL of the token endpoint. If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the “token_endpoint” property included in the response from the endpoint.

If a JWT-based client authentication method is used at the token endpoint (= if a token request includes “client_assertion={JWT}”), the value of the “aud” claim of the JWT is required to be the URL of the token endpoint. Therefore, set the correct value if the token endpoints supports CLIENT_SECRET_JWT and PRIVATE_KEY_JWT.

Supported Client Authentication Methods

Client authentication methods supported at the token endpoint. If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the token_endpoint_auth_methods_supported property included in the response from the endpoint.

If there are client applications whose client type (RFC 6749, 2.1. Client Types) is “confidential,” at least one client authentication method except NONE must be supported.

NONE allows token requests without client authentication. If there are client applications whose client type is “public,” NONE has to be supported.

CLIENT_SECRET_BASIC is a client authentication method where a client ID and a client secret are embedded in the Authorization header in the format of Basic Authentication. This client authentication method is mentioned in RFC 6749. The specification says authorization servers must support this client authentication method.

CLIENT_SECRET_POST is a client authentication method where a client ID and a client secret are embedded in the request body. This client authentication method is also mentioned in RFC 6749 in addition to CLIENT_SECRET_BASIC. As CLIENT_SECRET_BASIC is regarded as more secure than CLIENT_SECRET_POST, authorization servers may adopt a security policy that allows CLIENT_SECRET_BASIC but does not allow CLIENT_SECRET_POST.

CLIENT_SECRET_JWT is a client authentication method defined in RFC 7523 that uses a JWT with a symmetric signature algorithm. See OpenID Connect Core 1.0, 9. Client Authentication for details.

PRIVATE_KEY_JWT is a client authentication method defined in RFC 7523 that uses a JWT with an asymmetric signature algorithm. See OpenID Connect Core 1.0, 9. Client Authentication for details.

TLS_CLIENT_AUTH is a client authentication method that uses a client certificate. Details are described in OAuth 2.0 Mutual TLS Client Authentication and Certificate Bound Access Tokens, 2.1. PKI Mutual TLS OAuth Client Authentication Method.

SELF_SIGNED_TLS_CLIENT_AUTH is a client authentication method that uses a self-signed client certificate. Details are described in OAuth 2.0 Mutual TLS Client Authentication and Certificate Bound Access Tokens, 2.2. Self-Signed Certificate Mutual TLS OAuth Client Authentication Method.

To support the TLS-based client authentication methods, the implementation of the token endpoint of the front-end authorization server must extract a client certificate from a token request and pass it to Authlete’s /api/auth/token API as the value of the clientCertificate request parameter.

ATTEST_JWT_CLIENT_AUTH

(TBD)

OpenID on Refresh

If Require offline_access is selected, the openid scope is dropped from a new access token issued by the refresh token flow unless the presented refresh token contains the offline_access scope.

Client ID Omission

If Allow is selected, token requests without the client_id request parameter from public clients (RFC 6749, Section 2.1) are allowed in the authorization code flow (Section 4.1) and the refresh token flow (Section 6). As a result, the token endpoint will try to identify the client from the value of the authorization code (code) or the refresh token (refresh_token) when the token request does not include the client_id request parameter.

However, in normal cases, the authorization server should not attempt this even if it is possible. Therefore, don’t select Allow unless you have a special reason to support public clients that make inappropriate token requests without the client_id request parameter.

Client ID

If Require is selected, the service rejects token requests that use the grant type urn:ietf:params:oauth:grant-type:jwt-bearer but contain no client identifier.

RFC 7523 JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants states: “JWT authorization grants may be used with or without client authentication or identification.” Technically, “identification” in this context means that a token request contains no identifier of the client that made the request.

Although RFC 7523 allows for this, it is risky to permit unidentifiable clients (API callers) to make token requests. However, there may be cases where token requests by unidentified clients are necessary, and the safety of the operation can be ensured in some way. In such cases, this switch can be turned off.

Encrypted JWT

If Allow is selected, Authlete skips the remaining validation steps on an input assertion when it detects that the JWT is encrypted. This means that your authorization server implementation must verify an encrypted JWT independently when one is used as an authorization grant.

If Allow is not selected, the service rejects token requests that use an encrypted JWT as an authorization grant with the grant type urn:ietf:params:oauth:grant-type:jwt-bearer (RFC 7523).

See JWT Authorization Grant on the Authlete website for details about the validation process performed by Authlete.

Unsigned JWT

If Allow is selected, Authlete skips the remaining validation steps on an input assertion when it detects that the JWT is unsigned.

If Allow is not selected, the service rejects token requests that use an unsigned JWT as an authorization grant with the grant type urn:ietf:params:oauth:grant-type:jwt-bearer (RFC 7523).

See JWT Authorization Grant on the Authlete website for details about the validation process performed by Authlete.

Endpoints: General

Revocation Endpoint URL

An URL of the revocation endpoint (RFC 7009 ). If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the “revocation_endpoint” property included in the response from the endpoint.

An implementation of a revocation endpoint is not mandatory.

Authlete’s /api/auth/revocation API is an API which helps customers implement an RFC 7009 compliant revocation endpoint. The API itself is not an implementation of RFC 7009.

Introspection Endpoint URL

An URL of the introspection endpoint (RFC 7662 ). If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the “introspection_endpoint” property included in the response from the endpoint.

An implementation of an introspection endpoint is not mandatory.

Authlete’s /api/auth/introspection/standard API is an API which helps customers implement an RFC 7662 compliant introspection endpoint. The API itself is not an implementation of RFC 7662.

Authlete’s /api/auth/introspection API is an Authlete-specific custom introspection API. Unlike the standard specification (RFC 7662), /api/auth/introspection API not only returns information about an access token but also validates the access token and builds an RFC 6750 compliant error message as necessary. Also, the API returns information about arbitrary key-value pairs associated with the access token (Authlete’s custom feature). Therefore, in normal cases, Web API implementations on resource servers use the Authlete’s custom introspection API.

Pushed Authorization Requests (PAR)

Require PAR

If Require PAR is selected, Authlete rejects an authorization request that doesn’t employ PAR.

PAR Endpoint URL

An URL of the pushed authorization request endpoint. Client applications can register authorization requests at this endpoint in advance before sending the authorization requests to the authorization endpoint. The pushed authorization request endpoint issues a request_uri that represents the registered authorization request. The issued request_uri can be included in an authorization request. Technical details are defined in OAuth 2.0 Pushed Authorization Requests.

The value of this property is used as the value of the pushed_authorization_request_endpoint metadata in the response from the discovery endpoint.

PAR Endpoint Duration

The default value of the duration of request_uris issued from the pushed authorization request endpoint. The unit of time is seconds. If the value is 0, the default value determined by the Authlete server is used.

If an authorization request being registered at the pushed authorization request endpoint includes information about its expiration (e.g., as the value of the exp claim), that information is considered. The smaller value between the specified expiration and the default value is chosen as the duration of the registered authorization request. Note that the specification, OAuth 2.0 Pushed Authorization Requests, states: “The request URI lifetime is at the discretion of the AS.” Therefore, the behavior described here is specific to the Authlete implementation.

UserInfo Endpoint URL

An URL of the userinfo endpoint (OpenID Connect Core 1.0, 5.3. UserInfo Endpoint ). If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the “userinfo_endpoint” property included in the response from the endpoint.

An implementation of a userinfo endpoint is not mandatory.

Authlete’s /api/auth/userinfo API and /api/auth/userinfo/issue API are APIs that help customers implement their own userinfo endpoint. The Authlete APIs themselves are not a userinfo endpoint.

Endpoints: Federation

Federation Support

A flag that indicates whether this service supports OpenID Federation 1.0.

However, if the feature of OpenID Federation 1.0 is not enabled on the Authlete server hosting this service, functions related to OpenID Federation 1.0 are not usable regardless of the setting of this property.

Client Registration Types

client registration types supported by this service. This property corresponds to the client_registration_types_supported server metadata defined in OpenID Federation 1.0.

If the EXPLICIT checkbox is checked, the Registration Endpoint must be set up properly.

Registration Endpoint

An URI of the federation registration endpoint. This property corresponds to the federation_registration_endpoint server metadata defined in OpenID Connect Federation 1.0.

If this service declares that it supports the client registration type explicit, this property must not be empty.

Organization Name

A human-readable name representing the organization that operates this service. This property corresponds to the organization_name server metadata defined in OpenID Connect Federation 1.0.

If this property is not empty, the organization_name property appears in self-signed entity statements of this service.

Authority Identifier

Identifiers of authorities that can issue entity statements for this service. The format of the identifiers is a URL with either the https or http scheme. This property corresponds to the authority_hints property that appears in self-signed entity statements.

OpenID providers participating in one or more federations are expected to have superior authorities. Only trust anchors with no superiors do not have superior authorities.

Because the authority_hints property in self-signed entity statements is mandatory, if this setting is left empty, the configuration endpoint (/.well-known/openid-federation) cannot generate a valid entity statement. Therefore, to make OpenID Connect Federation 1.0 work, this property must be set up properly.

Entity Configuration Duration

Duration of the entity configuration in seconds.

An OpenID provider that participates in an OpenID Connect federation must publish its entity configuration at /.well-known/openid-federation or at a variant location such as /.well-known/openid-federation{path_part_of_issuer}. An entity configuration is a kind of JWT. This property specifies the duration of the JWT in seconds.

When the value of this property is 0, the default value determined by your Authlete server is used as the duration of the entity configuration.

Trust Anchors

Trust anchors referenced when this service resolves trust chains of relying parties. If this property is left empty, attempts of client registration will fail regardless of whether its type is automatic or explicit. Therefore, to make OpenID Connect Federation 1.0 work, this property must be set up properly.

Each trust anchor has an entity ID and a JWK Set. The format of entity IDs is a URL with either the https or http scheme. JWK Sets are expected to contain public keys that this service can use to verify signatures of entity statements issued by trust anchors.

The OpenID Connect Federation 1.0 specification does not define how to obtain JWK Sets of trust anchors. This is considered out of scope of the specification.

Endpoints: Advanced

Dynamic Client Registration (DCR)

If Supported is selected, the service will allow access to the dynamic client registration protocol API.

You probably want to supply both a Registration Endpoint URI and Registration Management Endpoint base URI value to support the protocol.

If Supported is not selected, the registration API is not available for this service, though the usual client management APIs are still available.

See OpenID Connect Dynamic Registration 1.0 for details about client registration.

DCR’s Scope Parameter

This switch indicates whether the dynamic client registration/configuration endpoints of your authorization server recognize the scope parameter in client metadata.

When Enable is selected, Authlete’s /api/client/registration API and /api/client/registration/update API use the value of the scope parameter to limit the range of scopes that the client application can request. The limitation is achieved by registering the specified scopes as requestable scopes (cf. ClientExtension.isRequestableScopesEnabled()). The Authlete APIs will embed the scope parameter in the responseContent response parameter, representing a response from the dynamic client registration/configuration endpoints.

If the switch is off, the Authlete APIs ignore the scope parameter in client metadata and do not embed the scope parameter in responseContent. This behavior is backward-compatible with previous Authlete versions. No limitation is imposed on the range of requestable scopes, so the client application can request any scopes that your authorization server supports.

See RFC 7591 OAuth 2.0 Dynamic Client Registration Protocol for technical details about the scope parameter.

DCR with Duplicate Software ID

A DCR (Dynamic Client Registration) request may contain the software_id client metadata, defined in RFC 7591. The client metadata is saved in Authlete’s database together with other client metadata.

If Accept is selected, Authlete does not check for duplication of software_id.

If Accept is not selected, Authlete checks whether the value of the software_id client metadata included in a DCR request already exists in the database and rejects the DCR request if it does.

Registration Endpoint URL

An URL of an endpoint to register a client application dynamically (OpenID Connect Dynamic Client Registration 1.0). If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the registration_endpoint property included in the response from the endpoint.

An implementation of a registration endpoint is not mandatory.

Currently, Authlete does not provide any API that helps customers implement an API that complies with OpenID Connect Dynamic Client Registration 1.0. However, customers can register clients dynamically by using /api/service/create API.

Registration Management Endpoint Base URL

An URL of the client registration endpoint of this service. ASCII characters only. 200 characters at most. The URL must start with https://.

The value is used as the value of the registration_endpoint property in the OpenID Provider Metadata of this service.

See OpenID Connect Dynamic Registration 1.0 for details about client registration.

Client Configuration Error Behavior

A flag to toggle the behavior of the /api/client/registration API in the error case of 401 Unauthorized. If Return Unauthorized is selected, the API uses UNAUTHORIZED as a value of the action response parameter when appropriate. If Return Unauthorized is not selected, the API never uses UNAUTHORIZED.

The UNAUTHORIZED enum value did not exist in the initial implementation of ClientRegistrationResponse.Action enum (JavaDoc). Therefore, implementations of the client configuration endpoint were not able to conform to RFC 7592 strictly.

For backward compatibility (to avoid breaking running systems), the API does not use the UNAUTHORIZED action if this flag is OFF.

The steps an existing implementation of the client configuration endpoint has to take in order to conform to the requirements related to 401 Unauthorized are as follows:

  1. Update the Authlete library (e.g., authlete-java-common) your system may be using.
  2. Update your implementation of the client configuration endpoint so that it can handle the UNAUTHORIZED action.
  3. Set ON to this flag.

RFC 7592 requires that the client configuration endpoint return 401 Unauthorized when the registration access token is invalid or the client does not exist (or is invalid).

Grant Management

Require Action

This property corresponds to the grant_management_action_required server metadata defined in Grant Management for OAuth 2.0. If Require Action is selected, the authorization server requires that every authorization request and any request serving as an authorization request (e.g., CIBA backchannel authentication request) include the grant_management_action request parameter.

Note that selecting Require Action will result in rejecting all authorization requests from public clients because the specification does not allow public clients to utilize grant management.

Endpoint URL

An URL of the grant management endpoint. This property corresponds to the grant_management_endpoint server metadata defined in Grant Management for OAuth 2.0. If this property is set, query and revoke are added to the grant_management_actions_supported server metadata advertised in the discovery document (OIDC Discovery) in addition to the default set (create, replace, and merge).

Grant Management for OAuth 2.0 is supported from Authlete 2.3. The grant management endpoint can be implemented by using Authlete’s /api/gm API.

Device Authorization Endpoint URL

An URL of the device authorization endpoint. This property corresponds to the device_authorization_endpoint metadata defined in OAuth 2.0 Device Authorization Grant (Device Flow). The value must consist of only ASCII characters and its length must not exceed 200. The scheme part must be https.

This property is used as the value of device_authorization_endpoint in the response from the discovery endpoint. Also, if a JWT-based client authentication method (client_secret_jwt or private_key_jwt) is used, the aud claim in the client assertion (client_assertion) is compared to the value of this property.

Verification URI

A verification URI. This property is used as the value of the verification_uri parameter in responses from the device authorization endpoint. The value must consist of only ASCII characters and its length must not exceed 200. The scheme part must be https.

This property must be set in advance to use Device Flow. Otherwise, an error is returned when /api/device/authorization API is called.

Verification URI with Placeholder

A verification URI with a placeholder for a user code. The value must consist of only ASCII characters and its length must not exceed 200. The scheme part must be https.

If this property is set and its value includes a fixed string USER_CODE (e.g., https://example.com/verification?user_code=USER_CODE), it is used to generate the value of the verification_uri_complete parameter in responses from the device authorization endpoint. Authlete replaces the fixed string with an actual user code. If the value of this property is not set or does not include the fixed string, the verification_uri_complete parameter will not be embedded in responses from the device authorization endpoint.

Verification Code Duration

Duration of device verification codes (device_code) and end-user verification codes (user_code) in seconds. The value is used as the value of the expires_in parameter in responses from the device authorization endpoint.

A positive number must be set to this property in advance to use Device Flow. Otherwise, an error is returned when /api/device/authorization API is called.

Polling Interval

A minimum interval between polling requests to the token endpoint in seconds. The value must be between 0 and 65,535. The value is used as the value of the interval parameter in responses from the device authorization endpoint unless it is zero.

User Code Character Set

A character set for user codes (user_code).

If BASE20 is selected, user codes will consist of BCDFGHJKLMNPQRSTVWXZ (20 upper-case non-vowel characters) (e.g., WDJBMJHT). If NUMERIC is selected, 0123456789 are used (e.g., 019450730). If this property is not set, BASE20 is used as the default value.

Note that user codes generated by Authlete do not include dashes and other punctuation.

User Code Length

The length of user codes (user_code). The value must be between 0 and 255.

If the value is 0, the length of user codes will be 8 when using the character set BASE20 (the entropy is 20^8) and 9 when using the character set NUMERIC (the entropy is 10^9). The value of this property directly affects the entropy of user codes. Setting the value too low may cause frequent database errors due to the UNIQUE constraint. Conversely, setting the value too high may demotivate end-users from entering the user codes. Therefore, it is advised not to set an extreme value.

Mutual TLS Authentication

Validate PKI Certificate Chain

If Validate is selected, Authlete server checks whether client certificates used for TLS_CLIENT_AUTH client authentication can be reached from root certificates which have been registered in advance.

If Validate is not selected, Authlete server does not perform the validation. Therefore, the validation needs to be done in the implementation of your front-end authorization server.

You can register trusted root certificates at the configuration item, “Trusted Root Certificates for Mutual TLS Authentication”.

Trusted Root Certificate

List of trusted root certificates used when validating client certificate chains in Mutual TLS PKI authentication. If the configuration item above, “Validate PKI Certificate Chain " is enabled, Authlete server checks whether client certificates used for TLS_CLIENT_AUTH can be reached from root certificates registered here.

MTLS Endpoint Aliases

This property corresponds to the mtls_endpoint_aliases metadata defined in “5. Metadata for Mutual TLS Endpoint Aliases” of OAuth 2.0 Mutual TLS Client Authentication and Certificate-Bound Access Tokens.

Backchannel Authentication Endpoint URL

An URL of the backchannel authentication endpoint. This property corresponds to the backchannel_authentication_endpoint metadata.

Supported Backchannel Token Delivery Modes

Select token delivery modes to support.

POLL means a backchannel token delivery mode where a client polls the token endpoint until it gets tokens.

PING means a backchannel token delivery mode where a client is notified via its client notification endpoint and then retrieves tokens from the token endpoint.

PUSH means a backchannel token delivery mode where a client receives tokens directly at its client notification endpoint.

Backchannel Auth Req ID Duration

Specify the duration of auth_req_id issued from the backchannel authentication endpoint in seconds. This is used as the value of the expires_in property in responses from the backchannel authentication endpoint.

Backchannel Polling Interval

Specify the minimum interval between polling requests to the token endpoint from client applications in seconds. This is used as the value of the interval property in responses from the backchannel authentication endpoint. The maximum value is 65535 seconds.

Backchannel User Code Parameter

If Supported is selected, the user_code request parameter is supported at the backchannel authentication endpoint. This property corresponds to the backchannel_user_code_parameter_supported metadata.

Binding Message in FAPI Context

If Require is selected, the binding_message request parameter is always required when a backchannel authentication request is judged as a request for Financial-grade API (FAPI).

The FAPI-CIBA profile requires that the authorization server shall ensure a unique authorization context exists in the authorization request or require a binding_message in the authentication request (FAPI-CIBA, 5.2.2, 2). The simplest way to fulfill this requirement is to select Require here.

If you don’t select Require, the binding_message request parameter remains optional even in the FAPI context, but in exchange, your authorization server must implement a custom mechanism that ensures each backchannel authentication request has a unique context.

Tokens and Claims: Access Token

Access Token

Type

The type of access tokens issued from the service. The value of this configuration item is used as the value of the token_type response parameter which is included together with an access token in a response from your authorization server.

If Web APIs on resource servers receive access tokens by the means defined in RFC 6750 , set Bearer (case-insensitive).

In general, Web API implementations comply with RFC 6750 unless they have a clear reason to avoid it.

Duration

Duration of access tokens in seconds. This value is used to calculate the value of expires_in response parameter which is returned together with an access token.

The appropriate value for access token duration varies depending on characteristics of respective services. It may be 1 hour, 1 day, 1 year and even 100 years.

The value set to this configuration item is applied to all access tokens issued by this service. However, it is possible to change the expiration date of an access token independently by calling /api/auth/token/update API with the accessTokenExpiresAt request parameter. Also, /api/auth/token/create API (which is used to create an access token manually) provides an optional request parameter, accessTokenDuration, to specify the duration for a newly created access token.

In addition, there is a mechanism to control access token duration using “scope attributes”. See the description about scopes for details.

Signature Algorithm

The algorithm used for signing access tokens. If this property is set, access tokens issued by this service are JWTs. If not, access tokens issued by this service are random strings.

Signature Key ID

A key ID to identify the JWK (JSON Web Key) used for signing access tokens (This property is only used when JWT-based access tokens are generated by this service).

If there is only one applicable JWK, then there is no problem. However, if there are multiple candidates, a key ID needs to be specified so that the Authlete Server can select the correct one.

If this setting has a value, it is interpreted as a key ID. Authlete Server uses this key ID to select a JWK when signing access tokens.

Even if there are multiple candidate JWKs and this setting is left empty, Authlete Server will try its best to choose one. However, there are cases where Authlete Server cannot choose one (e.g., there are multiple candidate JWKs but none of them has a key ID). In such cases, Authlete Server fails to generate an access token.

Enable TLS Client Certificate Bound

Configuration item to control whether or not this service supports certificate-bound access tokens defined in OAuth 2.0 Mutual TLS Client Authentication and Certificate Bound Access Tokens. If Enable is selected, a discovery endpoint implemented using Authlete’s /api/service/configuration API will include "tls_client_certificate_bound_access_tokens":true.

If this feature is enabled, the client certificate used in a token request is associated with the access token issued by the token request. When a client application accesses Web APIs with the access token, the client application has to use the same client certificate that was used in the token request. Otherwise, accesses would be rejected.

If an access token is associated with a client certificate, it becomes difficult to abuse the access token even when the access token is leaked. It is because one won’t succeed in using Web APIs with the access token unless he has the same client certificate at hand which was used when the access token was issued.

To use this feature, implementations of a token endpoint and Web APIs must extract a client certificate from a request and pass it to an Authlete API as the value of the clientCertificate request parameter. /api/auth/token API (which a token endpoint implementation calls) and /api/auth/introspection API (which Web API implementations call) have the clientCertificate request parameter.

Associating client certificates with access tokens will make your system securer. However, note that additional development work will be required for an authorization server, resource servers and client applications.

Even if Enable is selected here on the server side (Service Owner Console), if “TLS Client Certificate Bound Access Tokens” on the client side (Developer Console) is not enabled, access tokens issued to the client application won’t be associated with client certificates.

Single Token per Subject

Configuration item to control whether to allow at most one access token only per combination of a subject (= end-user identifier) and a client application, or to allow multiple access tokens to be issued for each combination.

If “Enabled” is selected, an attempt to issue a new access token invalidates existing access tokens that are associated with the combination of the same subject and the same client.

Note that, however, attempts by Client Credentials flow do not invalidate existing access tokens because access tokens issued by the flow are not associated with any end-user’s subject.

Also note that an attempt by Refresh Token flow invalidates the coupled access token only and this invalidation is always performed regardless of whether the value of this configuration item is Enabled or Disabled.

Tokens and Claims: Refresh Token

Refresh Token Duration

Duration

Duration of refresh tokens in seconds.

There is a mechanism to control refresh token duration using “scope attributes”. See the description about scopes for details.

Enable Duration Reset

This flag indicates whether duration of refresh tokens are reset when they are used even if Token Rotation is enabled.

Refresh Token Rotation

Enable Token Rotation

Configuration item to control whether to keep a refresh token valid after its use or invalidate the used refresh token and issue a new one.

If a refresh token remain valid after its use and a new one is not issued, the refresh token will eventually expire. At the timing, authorization process is required again.

On the other hand, if a refresh token is invalidated when it is used and if a new one is issued, authorization process is not required again while you continue to use a refresh token to get a new access token before the refresh token expires.

Enable Idempotency

If the switch is turned on, refresh token requests using the same refresh token can be made multiple times in quick succession, and they will obtain the same renewed refresh token within a short period.

If the switch is turned off, each refresh token request will receive a different renewed refresh token, even if the requests are made in a short period.

Enable Duration Takeover

If the switch is turned on, the remaining duration of the used refresh token is carried over to the newly issued one. This setting has no effect when Token Rotation is enabled.

Enable Token Expiration

If the switch is turned on, the expiration date of the access token will never exceed the expiration date of the corresponding refresh token, regardless of the calculated duration based on other settings.

Tokens and Claims: ID Token

ID Token Duration

Duration

Duration of ID tokens in seconds. The value set to this configuration item is used to compute the value of the “exp” claim of ID tokens.

Allowable Clock Skew

Specify the allowable clock skew between this service and clients in seconds. This value is taken into consideration when time-related claims in a JWT (e.g., exp, iat, nbf) are verified.

Enable Reissuable

This switch controls whether to enable the ID token reissuance feature in the refresh token flow.

If the switch is turned on, the action parameter in a response from the /auth/token API becomes ID_TOKEN_REISSUABLE when the following conditions are all met:

  1. The flow of the token request is the refresh token flow.
  2. The scope set after processing the token request still contains the openid scope.
  3. The access token is associated with the subject of a user.
  4. The access token is associated with a client application.

When receiving ID_TOKEN_REISSUABLE, the implementation of the token endpoint can take either of the following actions:

  1. Execute the same steps as for the OK action. This will result in the token endpoint behaving as before, and no ID token is reissued.
  2. Call the /idtoken/reissue API to reissue an ID token and let the API prepare a token response including a new ID token, along with a new access token and a refresh token.

See the JavaDoc of the TokenResponse class for details.

Tokens and Claims: Claims

Trust Frameworks

Trust frameworks supported by this service. Pre-defined values listed in 11.1. Trust Frameworks of OpenID Connect for Identity Assurance 1.0 are as follows:

  • de_aml
  • eidas_ial_substantial
  • eidas_ial_high
  • nist_800_63A_ial_2
  • nist_800_63A_ial_3
  • jp_aml
  • jp_mpiupa

Trust frameworks listed here are used as values of the trust_frameworks_supported metadata in the discovery document. See 7. OP Metadata for details.

Identity Evidence

Types of identity evidence supported by this service. Pre-defined values listed in 4.1.1. Evidence of OpenID Connect for Identity Assurance 1.0 are as follows:

  • id_document
  • utility_bill
  • qes

Identity evidence listed here are used as values of the evidence_supported metadata in the discovery document. See 7. OP Metadata for details.

Supported Identity Documents

Types of identity documents supported by this service. Pre-defined values listed in 11.2. Identity Documents of OpenID Connect for Identity Assurance 1.0 are as follows:

  • idcard
  • passport
  • driving_permit
  • de_idcard_foreigners
  • de_emergency_idcard
  • de_erp
  • de_erp_replacement_idcard
  • de_idcard_refugees
  • de_idcard_apatrids
  • de_certificate_of_suspension_of_deportation
  • de_permission_to_reside
  • de_replacement_idcard
  • jp_drivers_license
  • jp_residency_card_for_foreigner
  • jp_individual_number_card
  • jp_permanent_residency_card_for_foreigner
  • jp_health_insurance_card
  • jp_residency_card

Identity document types listed here are used as values of the id_documents_supported metadata in the discovery document. See 7. OP Metadata for details.

Supported Verification Methods

Types of identity document verification methods supported by this service. Pre-defined values listed in 11.3. Verification Methods of OpenID Connect for Identity Assurance 1.0 are as follows:

  • pipp
  • sripp
  • eid
  • uripp

Verification methods listed here are used as values of the id_documents_verification_methods_supported metadata in the discovery document. See 7. OP Metadata for details.

Supported Verified Claims

Names of verified claims supported by this service. For example, given_name and family_name. See 3.1. Additional Claims about End-Users and 4.2. claims Element in OpenID Connect for Identity Assurance 1.0 for more examples.

Claim names listed here are used as values of the claims_in_verified_claims_supported metadata in the discovery document. See 7. OP Metadata for details.

Predefined Transformed Claims

Predefined transformed claims. The format is JSON. This property corresponds to the transformed_claims_predefined server metadata, which is defined in “OpenID Connect Advanced Syntax for Claims (ASC) 1.0”.

Document Types

Document types supported by this service. This property corresponds to the documents_supported server metadata, which was added by the third implementer’s draft of OpenID Connect for Identity Assurance 1.0. Examples of predefined values are idcard and passport. See the identifiers page maintained by the eKYC-IDA WG for the complete list of predefined values.

Document Check Methods

(TBD)

Electronic Record Types

(TBD)

Attachment Types

Attachment types supported by this service. The check boxes correspond to embedded and external, which are predefined values for the attachments_supported server metadata added by the third implementer’s draft of OpenID Connect for Identity Assurance 1.0.

Supported Digest Algorithms

Supported algorithms that can be used to compute digest values of external attachments. This property corresponds to the digest_algorithms_supported server metadata, which was added by the third implementer’s draft of OpenID Connect for Identity Assurance 1.0.

Possible values are listed in the Hash Algorithm Registry of IANA (Internet Assigned Numbers Authority). If this service supports external attachments, this property must include at least sha-256.

Client applications can specify a digest algorithm by setting the digestAlgorithm property (which corresponds to the digest_algorithm client metadata). When the client property is not set, the service must use sha-256 as the default algorithm.

Access Token for External Attachments

If Embed Automatically is selected, Authlete generates access tokens for external attachments and embeds them in ID tokens and userinfo responses.

The claims request parameter of /auth/authorization/issue and /auth/userinfo/issue APIs may contain verified_claims (as defined in OpenID Connect for Identity Assurance 1.0). The verified_claims may contain attachments, which is a JSON array of JSON objects. Each element in the attachments array represents either an embedded attachment or an external attachment. A JSON object that represents an external attachment contains a url property pointing to the location of the content of the attachment and may optionally contain an access_token property, which is an access token the client application should use when accessing the URL.

If Embed Automatically is selected, when Authlete finds a JSON object representing an external attachment that does not contain the access_token property, Authlete generates an access token and embeds it in the JSON object as the value of the access_token property. In this case, Authlete also embeds an expires_in property.

See OpenID Connect for Identity Assurance 1.0 for details about external attachments.

Validation Schema Set

Choice of the validation schema set that is used to validate the content of 'verified_claims'.

Since version 2.3, Authlete validates the content of 'verified_claims' based on the JSON schema files that accompany the specification (OpenID Connect for Identity Assurance 1.0). These files are found in the /schema/ folder of the Git repository of the specification.

Usually, Authlete uses the legitimate JSON schema files that conform to the specification. However, it is possible to make Authlete use a different set of JSON schema files by specifying a name of validation schema set through this property (Service.verifiedClaimsValidationSchemaSet).

Authlete recognizes the following names of validation schema sets:

  • null: Same as 'standard'.
  • 'standard': The set of the legitimate JSON schema files.
  • 'standard+id_document': A set of customized JSON schema files that mostly conform to the standard but additionally accept 'id_document' as a valid name of evidence. This is for backward compatibility. Note that 'id_document' was deprecated by Implementer’s Draft 4 (cf. eKYC-IDA PR 152).

Claims

Supported Claims

A list of claims supported by this service. If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the claims_supported property included in the response from the endpoint.

“Supported” here means that this service can provide values of the claims directly or indirectly.

On service creation, 20 standard claims defined in OpenID Connect Core 1.0, 5.1. Standard Claims are set as the initial value.

The names of claims requested by an authorization request are included in a response from Authlete’s /api/auth/authorization API as the value of the claims property. However, claims that are not listed in this configuration item will never be included in the claims. For example, even if the scope parameter of an authorization request includes email and phone (which are expanded to 4 claims: email, email_verified, phone_number, and phone_number_verified), if email_verified and phone_number_verified are not listed in this configuration item, email_verified and phone_number_verified will not appear in the claims property in the response from /api/auth/authorization API.

Supported Claim Locales

A list of claim languages supported by this service. Technically, this is a list of language tags (RFC 5646) which the authorization endpoint recognizes as the value of the claims_locales parameter (OpenID Connect Core 1.0, 3.1.2.1. Authentication Request). If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the claims_locales_supported property included in the response from the endpoint.

A client application may specify languages of claim values that are embedded in an ID token by using the claims_locales request parameter. For example, by including claims_locales=ja in an authorization request, a client application can tell the authorization server that it wishes the value of the family_name claim to be written in Japanese. See OpenID Connect Core 1.0, 5.2. Claims Languages and Scripts for details.

However, it is not assured that the authorization server honors the request parameter and changes the claim language accordingly. Even if the authorization server completely ignores the claims_locales parameter, it is not a spec violation.

The value of the claims_locales parameter in an authorization request is included in a response from Authlete’s /api/auth/authorization API as the value of the claimsLocales property. However, languages that are not listed in this configuration item will never be included in the claimsLocales. For example, even if an authorization request includes claims_locales=ja, if ja is not listed in this configuration item, ja will not appear in the claimsLocales property in the response from /api/auth/authorization API.

If your authorization endpoint implementation ignores the claims_locales request parameter, you can leave this configuration item empty.

Supported Types

Claim types supported by this service. If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the claim_types_supported property included in the response from the endpoint.

NORMAL means that this service (OpenID Provider) itself provides claim values directly. On service creation, this claim type is enabled by default.

AGGREGATED means that providers of claim values exist separately, and this service collects claim values from such providers and returns aggregated information to client applications.

DISTRIBUTED means that providers of claim values exist separately, and this service just returns pointers to the providers to client applications.

See OpenID Connect Core 1.0, 5.6. Claim Types for details about claim types.

Note: If you want to support AGGREGATED and DISTRIBUTED in your service, you have to format information as described in 5.6.2. Aggregated and Distributed Claims and pass it to Authlete’s /api/auth/authorization/issue API. Authlete itself does not support AGGREGATED and DISTRIBUTED directly.

Restrict Shortcut

If the switch is on, claims specified by shortcut scopes (e.g. profile) are included in an ID token only when no access token is issued (only when response_type is id_token). On the other hand, if Restrict Shortcut is not selected, the claims are always included in an ID token regardless of whether an access token is issued or not.

To strictly conform to the description in OpenID Connect Core 1.0 Section 5.4, choose Restrict Shortcut. If backward compatibility with Authlete 2.1 and older versions is important, don’t choose Restrict Shortcut.

From a programmer’s point of view, the choice here affects the following response parameters only:

  • claims in /api/auth/authorization API responses
  • claimNames in /api/backchannel/authentication API responses
  • claimNames in /api/device/authorization API responses

If the implementation of your authorization server ignores the response parameters above, in other words, if the implementation does not change its behavior according to the values of the response parameters, the choice here has no meaning.

Audience Claim Format

This setting allows you to select the type of the aud claim in ID tokens. The options are:

  • Unspecified: When this option is chosen, the type of the aud claim remains the same as before. If backward compatibility is important, this option should be selected. Because examples in standard specifications are inconsistent in terms of the type of the aud claim, Authlete’s implementation is also inconsistent. For example, the aud claim of ID tokens issued by the authorization code flow is an array, whereas the aud claim of ID tokens issued by CIBA flows is a string.

  • Array: When this option is selected, the type of the aud claim in ID tokens always becomes an array. From the viewpoint of the JWT specification (RFC 7519), this behavior is the general case. Section 4.1.3 of the specification states as follows:

    In the general case, the “aud” value is an array of case-sensitive strings, each containing a StringOrURI value. In the special case when the JWT has one audience, the “aud” value MAY be a single case-sensitive string containing a StringOrURI value.

  • String: When this option is selected, the type of the aud claim in ID tokens always becomes a string.

Some Authlete APIs, such as /auth/authorization/issue, have the idTokenAudType request parameter. If the request parameter is given and its value is either array or string, the request parameter takes precedence over this service property (Service.idTokenAudType).

Tokens and Claims: Advanced

DPoP Token

Require Nonce

When this switch is turned on, Authlete will require a nonce in DPoP Proof tokens. If the nonce is missing, the Authlete server will return a use_dpop_nonce error, and the client must repeat the previous request with a nonce claim included. The nonce may be supplied by the Authlete server in the HTTP DPoP-Nonce response header. If not, the client must generate the nonce itself.

Nonce Duration

This setting controls how long a dpop-nonce value can be reused in proof tokens. To ensure proper validation, save the dpop-nonce value from the token response header and refresh it at the specified duration interval.

No Scope Requests

When a request has no scope parameter (or none of the given scopes is valid) and the service’s pre-defined default scope set is empty, the authorization server considers that the request is made with no scope. If the Reject switch is turned on, such requests are rejected.

The last paragraph in RFC 6749 Section 3.3 does not explicitly mention the case where the default scope set is empty. However, if you interpret the state “the default scope set exists but is empty” as “the default scope set does not exist” and want to strictly conform to the requirement in RFC 6749 Section 3.3, turn the Reject switch on.

When the Reject switch is on, it ensures that every access token issued by the authorization server has at least one scope, unless you create access tokens without a scope using the /api/auth/token/create API.

If backward compatibility with Authlete 2.1 and older versions is important, leave the Reject switch off.

Supported Scopes

A list the scopes that this service recognizes. Each scope name must consist of only printable ASCII characters, excluding spaces, double quotation marks, and backslashes (RFC 6749, 3.3. Access Token Scope). Additionally, the length of each scope name must not exceed 200 characters.

OpenID Connect has defined some standard scope names. openid is the most important scope. If the openid scope is not included in a request to the authorization endpoint, the request is not considered an OpenID Connect request (3.1.2.1. Authentication Request). profile, email, address, and phone are scopes that can be used to request specific claims to be included in an ID token (5.4. Requesting Claims using Scope Values). offline_scope is a scope to request that an OAuth 2.0 Refresh Token be issued, which can be used to obtain an Access Token that grants access to the End-User’s UserInfo Endpoint even when the End-User is not present (not logged in) (11. Offline Access).

If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the "scopes_supported" property included in the response from the endpoint.

Values listed here are recognized as valid values for the "scope" parameter in authorization requests. Authlete silently ignores unknown scopes that are not listed here, even if they are included in the "scope" parameter. The reason Authlete does not raise an error for unknown scopes is that OpenID Connect Core 1.0, 3.1.2.1. Authentication Request, states: “Scope values used that are not understood by an implementation SHOULD be ignored.”

Note: if you do not list openid, this service will stop providing OpenID Connect functionalities.

Each scope has configuration items such as name, default entry (boolean), description, and attributes.

  • Scope Name: A string used as the value of the "scope" parameter. Usable characters are printable ASCII characters except space, double quote, and backslash.
  • Default Entry: A boolean flag which is referenced when an authorization request does not include the "scope" parameter. If the "scope" parameter is missing, scopes whose default entry is true are used as if they were specified in the "scope" parameter.
  • Description: Although not required by the specification, Authlete manages this data. Note that descriptions of the standard scopes defined in OpenID Connect Core 1.0 (openid, profile, email, address, phone, and offline_access) cannot be changed.
  • Attributes: Arbitrary key-value pairs. The functionality to attach arbitrary key-value pairs to scopes is a custom mechanism provided by Authlete.

Note that some scope attributes listed below are interpreted in a special way by Authlete.

AttributeName AttributeValue Description
fapi r This means “Financial-grade API Read-Only”. An authorization request that includes at least one scope with this attribute is regarded as a request for an access token for Read-Only API. As a result, Authlete checks whether the authorization request satisfies the constraints imposed by Financial-grade API - Part 1: Read-Only API Security Profile. For example, when the flow of the authorization request is “authorization code flow”, Authlete checks whether the request includes "code_challenge" and "code_challenge_method=S256".
fapi rw This means “Financial-grade API Read-Write”. An authorization request that includes at least one scope with this attribute is regarded as a request for an access token for Read-Write API. As a result, Authlete checks whether the authorization request satisfies the constraints imposed by Financial-grade API - Part 2: Read and Write API Security Profile. For example, Authlete checks whether the request includes either "request" or "request_uri". If both fapi=r and fapi=rw exist in a request, fapi=rw takes precedence.

On service creation, standard scopes defined in OpenID Connect Core 1.0 are set as the initial values.

Scope Name Description
openid The most important scope. If an authorization request does not include this scope, it is not regarded as an OpenID Connect request. Do not remove this scope unless you have a clear reason, as OpenID Connect won’t work without it. See 3.1.2.1. Authentication Request for details.
profile The scope to request claims related to the user’s profile (“name”, etc.) be included in an ID token. See 5.4. Requesting Claims using Scope Values for details.
email The scope to request claims related to email (“email” and “email_verified”) be included in an ID token. See 5.4. Requesting Claims using Scope Values for details.
address The scope to request claims related to the address (“address”) be included in an ID token. See 5.4. Requesting Claims using Scope Values for details.
phone The scope to request claims related to the phone (“phone_number” and “phone_number_verified”) be included in an ID token. See 5.4. Requesting Claims using Scope Values for details.
offline_access The scope to request a refresh token that can be used to obtain an access token that grants permission to access the userinfo endpoint even if the user is not logged in. See 11. Offline Access for details.

There is no fixed rule for the granularity of scopes; it depends on your service’s needs.

If managing many fine-grained scopes is challenging, consider attaching additional metadata to access tokens instead. Authlete allows you to attach arbitrary key-value pairs to access tokens, simplifying scope management. For more information, see the Extra Properties documentation.

Token Exchange

Enable Identifiable Clients Only

If this switch is on, this service rejects token exchange requests that contain no client identifier.

Section 2.1 of RFC 8693 OAuth 2.0 Token Exchange states: “The supported methods of client authentication and whether or not to allow unauthenticated or unidentified clients are deployment decisions that are at the discretion of the authorization server.” Technically, “unidentified” in this context means that a token exchange request contains no identifier of the client that made the request.

Although A.1.1 of RFC 8693 shows an example of a token exchange request that contains no client identifier, it is risky to allow unidentifiable clients (API callers) to make token exchange requests. However, there may be cases where token exchanges by unidentified clients are necessary, and the safety of the operation can be ensured in some way. In such cases, this option can be unchecked.

Enable Confidential Clients Only

If this switch is on, this service rejects token exchange requests from public clients.

Section 2.1 of RFC 8693 OAuth 2.0 Token Exchange states: “The supported methods of client authentication and whether or not to allow unauthenticated or unidentified clients are deployment decisions that are at the discretion of the authorization server.” Technically, “unauthenticated” in this context means that the client making a token exchange request is a public client and therefore client authentication for the client is not required at the token endpoint.

To accept token exchange requests from public clients as well as those from confidential clients, uncheck this option.

Enable Permitted Clients Only

If this switch is on, this service rejects token exchange requests from clients that have no explicit permission for token exchange.

An administrator can grant a client explicit permission to make token exchange requests by checking the checkbox for “Explicit Permission for Token Exchange” in the “Extension” tab of the Web console for client application management.

See RFC 8693 OAuth 2.0 Token Exchange for details about token exchange.

Enable Encrypted JWT

If this switch is on, this service rejects token exchange requests that use encrypted JWTs as input tokens with the token type urn:ietf:params:oauth:token-type:jwt or the token type urn:ietf:params:oauth:token-type:id_token.

If this checkbox is not checked, Authlete skips the remaining validation steps on an input token when it detects that it is an encrypted JWT. This means that your authorization server implementation must verify an encrypted JWT by itself when one is used as an input token.

See RFC 8693 OAuth 2.0 Token Exchange on the Authlete website for details about the validation process performed by Authlete.

Enable Unsigned JWT

If this switch is on, this service rejects token exchange requests that use unsigned JWTs as input tokens with the token type urn:ietf:params:oauth:token-type:jwt or the token type urn:ietf:params:oauth:token-type:id_token.

If this checkbox is not checked, Authlete skips the remaining validation steps on an input token when it detects that it is an unsigned JWT.

See RFC 8693 OAuth 2.0 Token Exchange on the Authlete website for details about the validation process performed by Authlete.

Key Management: HSM

Hardware Security Modules (HSM)

This option enables support for HSM (Hardware Security Modules). When disabled, keys managed in HSMs are not used even if they exist. Additionally, /api/hsk/* APIs reject all requests. Even if enabled, HSM-related features will not function if the configuration of the Authlete server you are using does not support HSM.

Note: Only supported in Dedicated Cloud.

HSK (Hardware Security Keys)

This setting displays details for Hardware-Secured Keys when the HSM feature is enabled and active.

Note: Only supported in Dedicated Cloud.

Key Management: JWK Set

JWK Set Content

Content of the JWK Set document (RFC 7517) of this service.

If this service supports asymmetric algorithms for signing ID tokens, UserInfo Endpoint responses, and authorization responses (JWT Secured Authorization Response Mode for OAuth 2.0 (JARM)) and for encrypting request objects, a JWK Set must be registered. The JWK Set must contain pairs of public and private keys for the algorithms that this service wants to support.

Algorithms that can be used as JWS (RFC 7515) “alg” are listed in 3.1. “alg” (Algorithm) Header Parameter Values for JWS of JWA (RFC 7518). Among them, algorithms whose names start with “RS”, “PS”, or “ES” are asymmetric algorithms.

Algorithms that can be used as JWE (RFC 7516) “alg” are listed in 4.1. “alg” (Algorithm) Header Parameter Values for JWE of JWA (RFC 7518). Among them, algorithms whose names start with “RSA” or “ECDH” are asymmetric algorithms.

FYI: There exists an online service that generates JWK and JWK Set at mkjwk.org. Try it if you are not familiar with JWK.

JWK Set Endpoint URI

An URL of the JWK Set document (RFC 7517) for this service. If this service implements a discovery endpoint using Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the "jwks_uri" property included in the response from the endpoint.

If the configuration item “JWK Set Content” is empty, Authlete attempts to fetch a JWK Set from the URI specified here as needed. However, Authlete will never attempt to fetch an external JWK Set for secret keys of asymmetric algorithms. Therefore, if there are processes that use secret keys of asymmetric algorithms—such as signing ID tokens with asymmetric algorithms—the secret keys for those algorithms need to be registered as part of the “JWK Set Content”.

If this service supports asymmetric algorithms for signing ID tokens, UserInfo Endpoint responses, and authorization responses (JWT Secured Authorization Response Mode for OAuth 2.0 (JARM)), as well as for encrypting request objects, this service must implement a JWK Set endpoint (unless the JWK Set is distributed to client application developers offline).

Authlete’s /api/service/jwks/get API is available to help customers implement their own JWK Set endpoint.

ID Token Signature Key ID

A key ID to identify the JWK (RFC 7517) used for signing ID tokens.

When the algorithm for ID token signature is asymmetric (e.g., RS256), a JWK representing a private key of the algorithm needs to be selected from the registered JWK Set. If there is only one applicable JWK, then there is no issue. However, if there are multiple candidates, a key ID needs to be specified so that the Authlete server can select the correct one.

Even if there are multiple candidate JWKs but this configuration item is left empty, the Authlete server will attempt to choose one. However, there are situations where the Authlete server may fail (e.g., there are multiple candidate JWKs but none of them has a key ID). In such cases, the Authlete server may fail to generate an ID token.

UserInfo Signature Key ID

A key ID to identify the JWK (RFC 7517) used for signing responses from the UserInfo Endpoint.

When the algorithm for signing responses from the UserInfo Endpoint is asymmetric (e.g., RS256), a JWK representing a private key of the algorithm needs to be selected from the registered JWK Set. If there is only one applicable JWK, then there is no issue. However, if there are multiple candidates, a key ID needs to be specified so that the Authlete server can select the correct one.

Even if there are multiple candidate JWKs, but this configuration item is left empty, the Authlete server will attempt to choose one. However, there are situations where the Authlete server may fail (e.g., there are multiple candidate JWKs but none of them has a key ID). In such cases, the Authlete server may fail to generate a response from the UserInfo Endpoint.

Authorization Signature Key ID

A key ID to identify the JWK (RFC 7517) used for signing authorization responses (JWT Secured Authorization Response Mode for OAuth 2.0 (JARM)).

When the algorithm for signing authorization responses is asymmetric (e.g., RS256), a JWK representing a private key of the algorithm needs to be selected from the registered JWK Set. If there is only one applicable JWK, then there is no issue. However, if there are multiple candidates, a key ID needs to be specified so that the Authlete server can select the correct one.

Even if there are multiple candidate JWKs, but this configuration item is left empty, the Authlete server will attempt to choose one. However, there are situations where the Authlete server may fail (e.g., there are multiple candidate JWKs but none of them has a key ID). In such cases, the Authlete server will fail to generate an authorization response JWT, resulting in an error response being returned in the format defined in RFC 6749.

Federation JWK Set Content

A JWK Set containing private keys that are used when this service signs (1) self-signed entity statements and (2) responses from the endpoint that returns this service’s JWK Set in the JWT format; the URI of the endpoint is specified by the signed_jwks_uri server metadata.

If this property is left empty, this service cannot generate a valid self-signed entity statement. Therefore, to make OpenID Connect Federation 1.0 work, this property must be set up properly.

Note that this JWK Set is different from the one used for normal OpenID Connect operations, such as signing ID tokens.

Federation Signed JWK Set URI

An URI of the endpoint that returns this service’s JWK Set in the JWT format. This property corresponds to the signed_jwks_uri server metadata defined in OpenID Connect Federation 1.0.

The JWT returned from the endpoint is signed with a private key in the JWK Set specified in the JWK Set field. Therefore, if the JWK Set field is not set up properly, the endpoint will not be able to return a valid response.

Federation Signature Key ID

A key ID to identify a JWK that should be used to sign the entity configuration and the signed JWK Set.

The entity configuration is a kind of JWT and is published at /.well-known/openid-federation or at a variant location such as /.well-known/openid-federation{path_part_of_issuer}.

The signed JWK Set is also a kind of JWT and is published at the URL designated by the signed_jwks_uri server metadata.

When this property is specified, Authlete will use the JWK with the specified key ID when signing the entity configuration and the signed JWK Set. If this property is omitted, there is no guarantee as to which JWK Authlete will choose.

VCI JWK Set

A JWK Set document containing private keys used to sign verifiable credentials.

Some Authlete APIs, such as the /vci/single/issue and /vci/batch/issue APIs, may issue one or more verifiable credentials. The content of this property is utilized by these APIs.

Authlete APIs that issue verifiable credentials recognize a request parameter that can specify the key ID of a private key for signing. For instance, a request to the /vci/single/issue API includes an order object with a signingKeyId parameter that can specify the key ID of a private key to be used for signing. If no key ID is specified, Authlete will automatically select a private key.

If the JWKs in the JWK Set do not contain the kid property (RFC 7517, Section 4.5) when this credentialJwks property is updated, Authlete will automatically insert the kid property into such JWKs. The JWK thumbprint (RFC 7638) computed with the SHA-256 hash algorithm is used as the value of the kid property.

VCI JWK Set URI

An URL where the JWK Set document of the credential issuer is exposed.

This URL is used as the value of the jwks_uri property in the JWT issuer metadata. The metadata is published at /.well-known/jwt-issuer. For more details about the JWT issuer metadata, refer to the SD-JWT-based Verifiable Credentials (SD-JWT VC) specification.

Metadata

Service Data Policy

An URL of the document describing how the data provided by this service can be used. If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the “op_policy_uri” property included in the response from the endpoint.

Terms of Service

An URL of this service’s Terms Of Service for client application developers. If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the “op_tos_uri” property included in the response from the endpoint.

Service Documentation for Developers

An URL of the documentation about this service for developers. If this service implements a discovery endpoint with Authlete’s /api/service/configuration API, the value of this configuration item is used as the value of the “service_documentation” property included in the response from the endpoint.

Verifiable Credentials

Verifiable Credentials Feature

This flag controls availability of features related to Verifiable Credentials such as support of the OID4VCI specification.

Credential Offer Duration

Duration for credential offers issued by the Credential Issuer. If the Wallet does not specify a duration or specifies a duration of 0 or less (<= 0) in the credential offer request, this default value will be applied.

Transaction Duration

Duration, in seconds, for which transaction IDs remain valid when issued as a result of a credential request or a batch credential request. If this property is set to 0 or a negative value, the default duration configured in this setting will be applied.

Credential Duration

Duration, in seconds, for which verifiable credentials remain valid. This duration applies to credentials issued by Authlete APIs such as the /vci/single/issue and /vci/batch/issue APIs.

A value of 0 indicates that verifiable credentials will not expire, meaning they won’t include an expiration property. For example, JWT-based verifiable credentials will not contain the exp claim (RFC 7519, Section 4.1.4).

Authlete APIs that issue verifiable credentials also support request parameters that can override this default duration. For instance, a request to the /vci/single/issue API includes an order object with a credentialDuration parameter that can specify a different duration.

Credential Nonce Duration (c_nonce)

Duration, in seconds, for which a c_nonce remains valid.

When the token endpoint of the authorization server issues an access token for verifiable credential issuance, it also issues a c_nonce alongside the access token. Additionally, the credential endpoint and batch credential endpoint of the credential issuer will issue a new c_nonce if the presented one has already expired. This property determines the lifetime of these c_nonces.

If this property is set to 0 or a negative value, the default duration configured on the Authlete server will be applied.

Anonymous Access

Indicates whether token requests using the pre-authorized code flow by unidentifiable client applications are allowed.

This property corresponds to the pre-authorized_grant_anonymous_access_supported metadata defined in the OID4VCI specification.

Credential Issuer Identifier

An identifier of the credential issuer when this service acts as a credential issuer. This property corresponds to the credential_issuer metadata defined in the OID4VCI specification.

The value must be a valid URL with the https scheme, and it must not include a query part or fragment. Additionally, Authlete restricts this value to ASCII characters only and enforces a maximum length of 200 characters.

This property must be set for the service to function as a credential issuer.

Authorization Servers

An identifiers of the authorization servers that the credential issuer relies on for authorization when this service acts as a credential issuer. This property corresponds to the authorization_servers metadata defined in the OID4VCI specification.

The values must be HTTP-accessible URLs.

Credential Endpoint

An URL of the credential endpoint when this service acts as a credential issuer. This property corresponds to the credential_endpoint metadata defined in the OID4VCI specification.

The value must be a valid URL with the https scheme and must not include a fragment part. Additionally, Authlete restricts this value to ASCII characters only and enforces a maximum length of 200 characters.

This property must be set for the service to function as a credential issuer.

Batch Credential Endpoint

An URL of the batch credential endpoint when this service acts as a credential issuer. This property corresponds to the batch_credential_endpoint metadata defined in the OID4VCI specification.

The value must be a valid URL with the https scheme and must not include a fragment part. Additionally, Authlete restricts this value to ASCII characters only and enforces a maximum length of 200 characters.

Implementing the batch credential endpoint is optional.

Deferred Credential Endpoint

An URL of the deferred credential endpoint when this service acts as a credential issuer. This property corresponds to the deferred_credential_endpoint metadata defined in the OID4VCI specification.

The value must be a valid URL with the https scheme and must not include a fragment part. Additionally, Authlete restricts this value to ASCII characters only and enforces a maximum length of 200 characters.

If the credential endpoint and/or the batch credential endpoint of your credential issuer may issue transaction IDs, you must implement the deferred credential endpoint.

Supported Credentials

Credentials supported by the credential issuer when this service acts as a credential issuer. This property corresponds to the credential_configurations_supported metadata defined in the OID4VCI specification.

The value must be a JSON object. While non-ASCII characters are allowed, Authlete enforces a maximum length of 16,383 characters.

This property must be set for the service to function as a credential issuer.

For backward compatibility, the name of this property remains credentialsSupported and will not be renamed to credentialConfigurationsSupported.

Credential Response Encryption

If Require is selected, the Credential Issuer mandates additional encryption on top of TLS for every Credential Response. In this case, the Wallet MUST provide encryption keys in the Credential Request. If Require is off, the Wallet may choose whether it provides encryption keys or not.

JWE alg Algorithms

A list of supported JWE encryption algorithms (RFC7516), alg values defined in RFC7518, supported by the Credential and Batch Credential Endpoint to encode the Credential or Batch Credential Response in a JWT. These algorithms are typically used to encrypt the content encryption key (CEK).

JWE enc Algorithms

A list of supported JWE encryption algorithms (RFC7516), enc values defined in RFC7518, used by the Credential Endpoint to encode the Credential Response in a JWT (RFC7519). These algorithms are typically used to encrypt the content.