Table of Contents
Over the years, Authlete has implemented a large number of standard specifications. Among them, there have been several occasions where changes to Authlete’s implementation were necessary due to overlooked details, misinterpretations, or breaking changes in the specifications themselves. This article shares various flags created from these challenges.
Service flags in Authlete provide essential configuration flexibility that allows developers to fine-tune the behavior of their OAuth 2.0 and OpenID Connect implementations. These boolean switches and configuration parameters enable organizations to balance strict specification compliance with practical deployment considerations.
Service flags serve multiple crucial purposes:
The table below shows an overview of the Authlete service flags:
Flag | Type | Description | Default Value |
---|---|---|---|
Service.missingClientIdAllowed | Boolean | When set to true or enabled in the console, the client is identified from the authorization code when the client_id request parameter is missing. |
False |
Service.claimShortcutRestrictive | Boolean | Ensures strict adherence to the OpenID Connect specification regarding claim embedding. When set to true or enabled in the console, it ensures that claims requested by the profile, email, address, and phone scope values are only included in the ID Token if no Access Token is issued. |
True |
Service.dcrDuplicateSoftwareIdBlocked | Boolean | When set to True , Authlete rejects dynamic client registration requests containing a registered software_id |
False |
Service.dcrScopeUsedAsRequestable | Boolean | Limits the range of scopes that the client application can request. When set to True , follows RFC 7591 standard by treating scopes specified during dynamic client registration as requestable scopes. |
False |
Service.frontChannelRequestObjectEncryptionRequired | Boolean | When sending a request object via the front channel, it must be encrypted. | False |
Service.idTokenAudType | Array, String, or Null | Addresses the JWT specification flexibility where the aud claim can be either an array or a single string , causing inconsistency in how receiving systems must process tokens. It can also be overridden at runtime using the idTokenAudType parameter in Authlete APIs that issue ID tokens (such as /auth/authorization/issue ). |
Null |
Service.idTokenReissuable | Boolean | controls whether the /auth/token API returns ID_TOKEN_REISSUABLE . When set to True , the /auth/token API returns "action": "ID_TOKEN_REISSUABLE" if the conditions are all met. |
False |
Service.issSuppressed | Boolean | When set to True , does not include iss response parameter in the authorization response. |
False |
Service.loopbackRedirectionUriVariable | Boolean | Controls how the authorization server handles port numbers in loopback IP address redirection URIs during OAuth 2.0 flows. When set to True , Treats the port number as variable when the host part of the redirection URI is a loopback IP address, following RFC 8252 Section 7.3 |
False |
Service.nbfOptional | Boolean | When set to True , the authorization server does not enforce the request object lifespan check, even in scenarios where FAPI 1.0 Part 2 compliance would normally require it. In other words, the nbf claim is treated as optional rather than mandatory. |
False |
Service.refreshTokenIdempotent | Boolean | When set to True or enabled in the console, ensures consistent results for duplicate token refresh requests within a 60-second window, preventing issues when the same refresh token is used multiple times. |
False |
Service.refreshTokenKept | Boolean | Controls the behavior of refresh token rotation. When set to True , refresh token rotation will not occur. |
True |
Service.requestObjectEncryptionAlgMatchRequired | Boolean | The algorithm specified in the alg parameter of the encrypted request object must be a specific value. | False |
Service.requestObjectEncryptionEncMatchRequired | Boolean | The algorithm specified in the enc parameter of the encrypted request object must be a specific value. |
False |
Service.scopeRequired | Boolean | Controls how authorization requests without a scope parameter are handled. When set to True , Authorization requests without a scope parameter will either use configured default scopes or be rejected with an invalid scope error if no defaults exist. |
False |
Service.traditionalRequestObjectProcessingApplied | Boolean | Allows switching between processing request objects using the OIDC Core method (for backward compatibility) or the RFC 9101 method. | False |
Service.unauthorizedOnClientConfigSupported | Boolean | When this flag is set to true, Authlete will return UNAUTHORIZED where applicable. When false, for backward compatibility, Authlete will return BAD_REQUEST instead (even though this does not strictly follow RFC 7592). |
False |
Starting with Authlete 3.0, flags have been introduced in the management console to enforce strict requirements to meet OAuth/OIDC specifications.
The following sections demonstrate configuring service setting flags in the Authlete Management Console:
To Configure the Service.missingClientIdAllowed
flag in the management console:
“Client ID Omission"
option.To Configure the Service.claimShortcutRestrictive
flag in the management console:
“Restrict Shortcut”
option.To Configure the Service.dcrDuplicateSoftwareIdBlocked
flag in the management console:
“DCR with Duplicate Software ID”
and toggle the Accept
option.To Configure the Service.dcrScopeUsedAsRequestable
flag in the management console:
"DCR's Scope Parameter"
and toggle the Enable
option.To Configure the Service.frontChannelRequestObjectEncryptionRequired
flag in the management console:
"Encryption in Front Channel"
and toggle the Require
option.To Configure the Service.idTokenAudType
flag in the management console:
“Choose Audience Claim Format”
menu and select an option.To Configure the Service.idTokenReissuable
flag in the management console:
ID Tokens
section, toggle the "Enable Reissuable”
option.To Configure the Service.issSuppressed
flag in the management console:
"Issuer Identification Response Parameter"
, toggle the Suppress iss Response Parameter
option.To configure the Service.loopbackRedirectionUriVariable
flag in the management console:
"Loopback Redirection URI"
and toggle the Loopback Redirection URI
option.To configure the Service.nbfOptional
flag in the management console:
"nbf claim""
and toggle the "Require"
option.To configure the Service.refreshTokenIdempotent
flag in the management console:
Refresh Token Rotation
, toggle the Enable Idempotency
option.To configure the Service.refreshTokenKept
flag in the management console:
Refresh Token Rotation
, toggle the "Enable Token Rotation"
option. By default Enable Token Rotation
is enabled.To configure the Service.requestObjectEncryptionAlgMatchRequired
flag in the management console:
"Encryption Algorithm Match"
option, toggle Require
.To configure the Service.requestObjectEncryptionEncMatchRequired
flag in the management console:
"Encryption Encoding Algorithm Match"
and toggle Require
.To configure the Service.scopeRequired
flag in the management console:
"Requests Without Scope Parameter"
and toggle Reject
.To configure the Service.traditionalRequestObjectProcessingApplied
flag in the management console:
"Request Object Processing"
and toggle the Enable JAR Compatibility
option.To configure the Service.unauthorizedOnClientConfigSupported
flag in the management console:
"Client Configuration Error Behavior"
option and toggle Return UNAUTHORIZED
.Service Configurations for Service.setUnauthorizedOnClientConfigSupported
flag. The following example uses a POST request /api/{serviceId}/service/update.
unauthorizedOnClientConfigSupported
flag to true
.
curl -v -X POST https://us.authlete.com/api/21653835348762/service/update \
-H 'Content-Type:application/json' \
-H 'Authorization: Bearer V5a40R6dWvw2gMkCOBFdZcM95q4HC0Z-T0YKD9-nR6F' \
-d '{
"unauthorizedOnClientConfigSupported": true
}'
Make sure to replace the following credentials in the actual request:
YOUR_SERVICE_ID
andAccess Token
with your actual service credentials