Connect2id server 18.0 supports CIBA, native IdP apps and session binding via UA fingerprints and DPoP
We are excited to announce the release of CIBA support in the Connect2id server 18.0, enabling cross-device login and authorisation with a wide range of applications.
Banks and fintechs can utilise a decoupled flow of CIBA to authorise transactions, step-up authentication and approve logins in the bank’s mobile app. Mobile network operators can use the flow for SIM-based login into services, their own or of subscribed partners. In healthcare, to approve access to medical records and to authenticate remotely for telehealth examinations and procedures.
The cross-device capability of the CIBA flow opens up new opportunities, but also a new, different set of risks that aren’t present in the typical same-device OAuth 2.0 flow. These risks arise from the “gap” between client device and user device (where a CIBA request is authorised, typically in a mobile app). Securing the “gap” requires measures forced by the practical reality of the application context and how much of that context can be cryprographically or otherwise bound.
Features | Challenges |
---|---|
|
|
Connect2id spent time to devise a hardened CIBA flow, which the user must
pre-authorise in their IdP app, and utilises a one-time use, cryptographically
secured login_hint_token
to authenticate the channel between the client
device and the IdP app. The token size is deliberately kept small, for
efficient presentation as QR-code, or transmission over NFC.

The back-channel authorisation flow supported by the Connect2id server follows the core CIBA specification and the FAPI 1.0 CIBA profile. It incorporates security measures, some recommended by the OAuth WG, others devised by Connect2id, from analysing usage patterns and attacks reported by early CIBA adopters over the course of 3 years. We wish to thank Pieter Kasselman, who initiated and led the effort at the OAuth WG to collect and classify reported CIBA attacks, together with measures to effectively address them.
To support native IdP apps, which play a key role in CIBA, the session
store of the Connect2id
server was updated. Native IdP apps can now have their own, properly isolated
user sessions, alongside the web sessions for the IdP web domain and the
sessions for the native client groups (for OpenID Connect native
SSO). The session ID serves to determine the
IdP app instance(s) of the resolved login_hint_token
, id_token_hint
or
login_hint
subject in CIBA requests, and then together with a callback token,
to submit
the authorisation to the Connect2id server. For extra assurance the user
sessions of native IdP apps can be bound via
DPoP to a non-extractable
private key in the Android Keystore or iOS Keychain.
The server documentation was expanded to cover the new standard CIBA
endpoint and the plugin
SPIs to resolve login_hint
s and
invoke a native IdP app where the user authentication and consent take place.
Examples how to register clients for the CIBA grant can be found
here. A
general CIBA Connect2id server guide for architects and developers is being
prepared. If you need help in devising a secure and well-integrated CIBA
solution for your business you are welcome to talk to us. The
lead time for such consulting work is currently at 45 to 60 days.
The work on CIBA has not completed with this release. On the contrary, there is a substantial roadmap ahead.
Besides CIBA, another notable new feature of Connect2id server 18.0 is the ability to bind the user sessions for the IdP web domain to a fingerprint of the user agent (browser), and make this a factor in the SSO decision-making.
Connect2id server 17.x deployments can upgrade to this new release seamlessly, by letting the server on startup automatically create the requisite tables, and add new columns where required:
-
On startup, a Connect2id server with an SQL database is going to automatically create a new
login_hint_tokens
table, and new CIBA and DPoP related columns (see release notes below), unless the default value of the dataSource.createTableIfMissing property is overridden and set tofalse
, in which case database schema must be updated manually by a database administrator. -
Similarly, a Connect2id server with a DynamoDB database is automatically going to create a new
login_hint_tokens
table, unless the table has already been created.
There are no breaking configuration changes, save for the native
SSO configuration, where the property
names were replaced from op.sso.device.*
to op.sso.nativeClientGroup.*
,
necessitated by the addition of native IdP app session support, and the need to
be clearly differentiate between these sessions and native client group (NCG)
sessions.
The use of a general token for the STS web API is deprecated. Consider configuring a separate token for each template, for example op.sts.privateKeyJWT.apiAccessTokenSHA256.
If you are upgrading from a Connect2id server version 16.x or earlier, check the 17.0 release announcement and notes first.
As always, you find more information about this Connect2id server release in the notes below.
Note that the signing key for the Connect2id server artifacts was rotated at the start of 2025. The old key remains at its original URL.
Download 18.0
For the signature validation: Public GPG key
Standard Connect2id server edition
Apache Tomcat package with Connect2id server 18.0: Connect2id-server.zip
GPG signature: Connect2id-server.zip.asc
SHA-256: 71211b7d35f5f2536ffeccf2e963b4a370f07acfb8927c29664f1324627c5b57
Connect2id server 18.0 WAR package: c2id.war
GPG signature: c2id.war.asc
SHA-256: d2337514795ca3775cf8f7ad2c0bb8f41446546684054487f9d6a2e343959ac4
Multi-tenant edition
Apache Tomcat package with Connect2id server 18.0: Connect2id-server-mt.zip
GPG signature: Connect2id-server-mt.zip.asc
SHA-256: a8f11a84556659df68024d7c289427d989893040e6f56d4a18cc32560241d102
Connect2id server 18.0 WAR package: c2id-mt.war
GPG signature: c2id-mt.war.asc
SHA-256: 8856c75289aaec8b6af798fd98615e879a4da8032d2234c25ff1d35761aed9f3
Questions?
For technical questions about this new release contact Connect2id support. To purchase a production license for the Connect2id server, renew or upgrade your support and updates subscription, email our sales.
Release notes
18.0 (2024-04-02)
Summary
-
Implements support for OpenID Connect Client-Initiated Backchannel Authentication (CIBA) Flow - Core 1.0.
The CIBA
poll
mode for token delivery is supported. Theping
andpush
modes may be implemented in a future release.All three login hint types are supported:
login_hint_token
,id_token_hint
andlogin_hint
. A Connect2id server deployment can be configured to accept only those login hint types that are allowed by policy and required by the use cases of client applications.To support CIBA login hint tokens the STS endpoint of the Connect2id server is given the capability to issue them. To mint a
login_hint_token
the STS endpoint requires the presence of a native IdP app session for the subject (end-user). The token is single-use, cryptographically secured and has a length and encoding optimised for presentation in QR codes on user devices.The CIBA
id_token_hint
support is identical to that for regular OpenID authentication requests.To support CIBA
login_hint
the Connect2id server receives a newLoginHintResolver
SPI to resolve login hints to subject identifiers. A plugin that delegates the resolution to a web endpoint (webhook) is provided.Signed CIBA requests are supported.
The CIBA
binding_message
request parameter is supported. Deployments can configure a regular expression to enforce compliance of the message to a given pattern. The default pattern allows combinations of four to sixteen alphanumeric and space characters.The CIBA
user_code
request parameter is supported, however its use is discouraged. Alogin_hint_token
should be used to pre-authorise a CIBA request from a native IdP app.CIBA requests that are authenticated and pass initial validation are directed to a
CIBARequestHandler
SPI to perform the end-user authentication and authorisation. A handler would typically message the native IdP app instance(s) for the subject (end-user) resolved from thelogin_hint_token
,id_token_hint
orlogin_hint
. If end-user is successfully authenticated and consent was obtained the handler submits the authorisation to a CIBA authorisation sessions API, to continue the flow. If the end-user couldn’t be authenticated or consent was not given the CIBA request is left to time out, according to theexpires_in
parameter of the authentication request acknowledgement return the client. -
Adds support for subject (end-user) sessions for native IdP apps. An OpenID provider may utilise a native app to provide a user authentication factor during sign-in, to authorise CIBA requests and for other purposes. Such subject sessions have a
ctx
(context) valueNIA
(native IdP app), to differentiate them forweb
andNCG
(native client group) sessions. -
Subject (end-user) sessions receive a new optional
jkt
(JWK thumbprint) field to enable a session to be bound to a private JWK. The thumbprint is a BASE64URL-safe encoded SHA-256 hash. For web sessions the private key may be a non-extractable Web Crypto API key. For native app sessions the private key may be a non-extractable Android Keystore or iOS Keychain key. A future Connect2id server release will incorporate changes to support DPoP-style binding of subject sessions in the authorisation session API, in the CIBA flow and in the OpenID Connect SSO for native apps flow. -
Enables binding of subject (end-user) sessions to a fingerprint of the web browser or native app used to establish the session. The thumbprint is a BASE64URL-safe encoded SHA-256 hash. The authorisation session (login) web API is updated to automatically check the current user agent fingerprint against the value stored when the session was created. If the fingerprint values don’t match the subject session is ended, triggering an authentication prompt.
The user agent fingerprint binding of subject sessions can replace plugins that use the
WebSSOEligibilityChecker
SPI to add a custom user agent fingerprint check after the regular Connect2id server checks that determine whether a web-based OpenID authentication request or an OAuth 2.0 authorisation request is eligible for single sign-on (SSO). -
The subject (end-user) sessions of OpenID relying parties using OpenID Connect SSO for Native Apps 1.0 will now bear the context value
NCG
(native client group), replacing the valuenative
. Theop.sso.device.*
configuration properties are replaced byop.sso.nativeClientGroup.*
. This breaking change is made to differentiate the sessions for native client groups and those for a native IdP app. -
Adds support for the optional
dpop_bound_access_tokens
client metadata parameter, specified in RFC 9449, section 5.2. When a client is registered with a value oftrue
it must always use DPoP. The default value isfalse
.
Configuration
-
/WEB-INF/oidcProvider.properties
-
op.ciba.enable
– New optional configuration property to enable / disable CIBA support. Disabled by default. -
op.ciba.tokenDeliveryModes
– New optional configuration property listing the enabled CIBA token delivery modes. Only thepoll
mode is supported. The default value is all supported. -
op.ciba.hintTypes
– New optional configuration property listing the enabled CIBA hint types. Supported hint types:login_hint_token
,
id_token_hint
andlogin_hint
. The default value is all supported. -
op.ciba.requestJWSAlgs
– New optional configuration property listing the enabled JWS algorithms for signed CIBA requests. Supported JWS algorithms:RS256
,RS384
,RS512
,PS256
,PS384
,PS512
,ES256
,ES256K
,ES384
andES512
. The default value is all supported. -
op.ciba.bindingMessagePattern
– New optional configuration property for a regular expression pattern for matching legal CIBA binding messages. Messages that don’t match the pattern will be rejected with aninvalid_binding_message
error. The pattern must be BASE64 encoded to prevent character escaping issues. The default unencoded pattern is[\w ]{4,16}
, allowing combinations of four to sixteen alphanumeric and space characters. -
op.ciba.supportUserCode
– New optional configuration property to enable / disable support for the CIBAuser_code
parameter. The default value istrue
. -
op.ciba.defaultRequestLifetime
– New optional configuration property for the default lifetime of CIBA requests (auth_req_id
), in seconds. Applied when a CIBA request doesn’t specify arequested_expiry
parameter. Must not be shorter than 60 seconds. The default value is 600 seconds (10 minutes). -
op.ciba.maxRequestLifetime
– New optional configuration property for the maximum allowed lifetime of the requested_expiry parameter of CIBA requests (auth_req_id
), in seconds. Must not be shorter than the default lifetime of CIBA requests. The default value is the default request lifetime. -
op.sts.jar.apiAccessTokenSHA256.*
– New optional configuration property, specifying an access token for the STS web API to mint OAuth 2.0 JWT-secured Authorisation Requests (JAR), also called request objects in OpenID Connect. The value of the configuration property is the SHA-256 hash (in hexadecimal format) of the token. The hashed storage is intended to prevent accidental leakage of the token through configuration files, logs, etc. The token is of type Bearer, non-expiring and must contain at least 32 random alphanumeric characters to make brute force guessing impractical. If not specified minting of JARs by the STS web API is disabled.Additional access tokens, to facilitate token roll-over or for other needs, can be configured by appending a dot (.) with a unique label to the property name, e.g. as
op.sts.jar.apiAccessTokenSHA256.1=abc...
.Replaces the deprecated general purpose
op.sts.apiAccessTokenSHA256
STS web API access token configuration. -
op.sts.privateKeyJWT.apiAccessTokenSHA256.*
– New optional configuration property, specifying an access token for the STS web API to mint private key JWTs (private_key_jwt
) for client authentication. The value of the configuration property is the SHA-256 hash (in hexadecimal format) of the token. The hashed storage is intended to prevent accidental leakage of the token through configuration files, logs, etc. The token is of type Bearer, non-expiring and must contain at least 32 random alphanumeric characters to make brute force guessing impractical. If not specified minting of private key JWTs by the STS web API is disabled.Additional access tokens, to facilitate token roll-over or for other needs, can be configured by appending a dot (.) with a unique label to the property name, e.g. as
op.sts.privateKeyJWT.apiAccessTokenSHA256.1=abc...
.Replaces the deprecated general purpose
op.sts.apiAccessTokenSHA256
STS web API access token configuration. -
op.sts.loginHintToken.apiAccessTokenSHA256.*
– New optional configuration property, specifying an access token for the STS web API to mint login hint tokens (login_hint_token
) for CIBA. The value of the configuration property is the SHA-256 hash (in hexadecimal format) of the token. The hashed storage is intended to prevent accidental leakage of the token through configuration files, logs, etc. The token is of type Bearer, non-expiring and must contain at least 32 random alphanumeric characters to make brute force guessing impractical. If not specified minting of login hint tokens by the STS web API is disabled.Additional access tokens, to facilitate token roll-over or for other needs, can be configured by appending a dot (.) with a unique label to the property name, e.g. as
op.sts.loginHintToken.apiAccessTokenSHA256.1=abc...
. -
op.sts.loginHintToken.allowDirectIssue
– New optional configuration property to allow direct issue of login hint tokens (login_hint_token
) for CIBA, bypassing the requirement for an access token (op.sts.loginHintToken.apiAccessTokenSHA256.*
). Iftrue
a valid native IdP app session ID (sub_sid
) is sufficient to authorise the issue. The default value isfalse
. -
op.sts.apiAccessTokenSHA256
– The general master access token for the STS web API is deprecated for removal. Configure purpose specificop.sts.*.apiAccessTokenSHA256.*
tokens instead. -
op.sso.nativeClientGroup.enable
– Replaces the optionalop.sso.device.enable
configuration property for OpenID Connect SSO for Native Apps 1.0 introduced in Connect2id server 16.0 (breaking change). -
op.sso.nativeClientGroup.sessionMaxLifetime
– Replaces the optionalop.sso.device.sessionMaxLifetime
configuration property for OpenID Connect SSO for Native Apps 1.0 introduced in Connect2id server 16.0 (breaking change). -
op.sso.nativeClientGroup.sessionAuthLifetime
– Replaces the optionalop.sso.device.sessionAuthLifetime
configuration property for OpenID Connect SSO for Native Apps 1.0 introduced in Connect2id server 16.0 (breaking change). -
op.sso.nativeClientGroup.sessionMaxIdleTime
– Replaces the optionalop.sso.device.sessionMaxIdleTime
configuration property for OpenID Connect SSO for Native Apps 1.0 introduced in Connect2id server 16.0 (breaking change).
-
-
/WEB-INF/sessionStore.properties
sessionStore.nativeIdPAppQuotaPerSubject
– New optional configuration property for the maximum number of concurrent native IdP app sessions a subject (end-user) may have. Must not exceed 5 concurrent sessions. Zero disables native IdP app sessions. The default value is 1.
-
/WEB-INF/infinispan-*.xml
- Adds a new
login_hint_tokens
table. In existing Connect2id server deployments with an SQL RDBMS or DynamoDB the server will automatically create the table on startup. For SQL databases the automatic table creation is enabled by default and can be turned off by setting thedataSource.createTableIfMissing
Java system property tofalse
.
- Adds a new
-
/WEB-INF/infinispan-*-{mysql|postgres95|sqlserver|oracle|h2}.xml
- Adds new
dpop_bound_access_tokens
,backchannel_token_delivery_mode
,backchannel_client_notification_endpoint
,backchannel_authentication_request_signing_alg
andbackchannel_user_code_parameter
columns to theclients
table. Adds newjkt
andfpt
column to thesubject_sessions
table. In existing Connect2id server deployments with an SQL RDBMS the server will automatically add the news column (with an appropriate default value) on startup. For SQL databases the automatic column addition is enabled by default and can be turned off by setting thedataSource.createTableIfMissing
Java system property tofalse
.
- Adds new
-
/WEB-INF/infinispan-multitenant-stateless-redis-sentinel3-mysql.xml
- Removes the deprecated multi-tenant stateless Redis sentinel / MySQL configuration.
-
/WEB-INF/loginHintResolverWebAPI.properties – New properties file specifying the default configuration of the web-based resolver (webhook) for CIBA login hints (
login_hint
) (implements theLoginHintResolver
SPI). Can be overridden with Java system properties.-
op.loginHintResolver.webAPI.enable
– New optional configuration property, enables / disables the login hint resolver. Disabled (false
) by default. -
op.loginHintResolver.webAPI.url
– New configuration property for the endpoint URL of the web-based resolver. Required when the resolver is enabled. -
op.loginHintResolver.webAPI.apiAccessToken
– New configuration property for the access token of type Bearer for the login hint resolver. Required when the resolver is enabled. -
op.loginHintResolver.webAPI.connectTimeout
– New optional configuration property for the HTTP connect timeout, in milliseconds. The default value is zero, implies none or determined by the underlying HTTP client. -
op.loginHintResolver.webAPI.readTimeout
– New optional configuration property for the HTTP response read timeout, in milliseconds. The default value is zero, implies none or determined by the underlying HTTP client.
-
Web API
-
/.well-known/openid-configuration
-
backchannel_token_delivery_modes_supported
– New optional metadata field listing the supported CIBA token delivery modes. Omitted if CIBA is disabled. -
backchannel_authentication_endpoint
– New optional metadata field for the CIBA request endpoint URL. Omitted if CIBA is disabled. -
backchannel_authentication_request_signing_alg_values_supported
– New optional metadata field listings the supported JWS algorithms for signed CIBA requests. Empty if none. Omitted if CIBA is disabled. -
backchannel_user_code_parameter_supported
– New optional metadata field indicating the support for the CIBAuser_code
request parameter. Omitted if CIBA is disabled.
-
-
/clients
-
Supports registration of clients with the optional
dpop_bound_access_tokens
metadata field to require a DPoP proof JWT at the token endpoint (RFC 9449). -
Supports registration of clients with the optional
backchannel_token_delivery_mode
,backchannel_authentication_request_signing_alg
andbackchannel_user_code_parameter
metadata fields for CIBA use.
-
-
/ciba
- New endpoint to receive back-channel authentication requests (CIBA).
Supports signed CIBA requests. Supports all three CIBA hint types:
login_hint_token
,id_token_hint
andlogin_hint
. Supports the optionalbinding_message
,user_code
andrequested_expiry
parameters.
- New endpoint to receive back-channel authentication requests (CIBA).
Supports signed CIBA requests. Supports all three CIBA hint types:
-
/token
-
Requires clients to submit a DPoP proof JWT when registered with a
dpop_bound_access_tokens
client metadata valuetrue
(RFC 9449). -
Adds CIBA grant support using the
poll
mode (polling with immediate response).
-
-
/authz-sessions/rest/v3/
-
The authorisation session start request object receives a new optional
fpt
(user agent fingerprint) parameter, as a BASE64URL-safe encoded SHA-256 hash. When the authorisation session is started with a fingerprint for the user agent and there is a current subject (end-user) session with afpt
value that doesn’t match, the Connect2id server ends the current subject session and returns an authentication prompt. In all other cases the authorisation session proceeds as usual.The subject session
fpt
may be set when the session is created. After that thefpt
value cannot be modified, i.e. it remains immutable until the session is ended or expires.
-
-
/sts/rest/v1/
- New
login_hint_token
template for the STS (Secure Token Service) endpoint to issue login hint tokens for CIBA requests. Intended for end-users to securely pre-authorise a CIBA request from their native IdP app. The issued login hint token is single-use, opaque and bound to the subject session that the native IdP app has with the Connect2id server. The STS API allows setting of the login hint token lifetime and inclusion of custom data as a JSON Object, for example to specify the application context of the login hint token.
- New
-
/ciba-sessions/rest/v1
-
New integration endpoint for handling CIBA requests.
-
/ciba-sessions/rest/v1/authorize – Protected resource for authorising pending CIBA requests (
auth_req_id
) after successful end-user authentication and consent, typically performed by a native IdP app. The resource is accessed by a callback token issued by theCIBARequestHandler
SPI.
-
-
/authz-store/rest/v3/auth-req-ids
- New protected resource, the GET method returns the current CIBA
auth_req_id
s for which an end-user authorisation was received and its tokens have not been requested by the client yet.
- New protected resource, the GET method returns the current CIBA
-
/authz-store/rest/v3/inspection
- New optional
auth_req_id
form parameter, inspects the pending authorisation for the specified CIBA request ID. Returns404
if the request ID is invalid / expired. Must not be used together with another form parameter.
- New optional
-
/session-store/rest/v2
-
The subject session object receives a new optional
jkt
(JWK thumbprint) field to bind the session to a private JWK. The thumbprint is a BASE64URL-safe encoded SHA-256 JSON Web Key (JWK) hash (RFC 7638). -
The subject session object receives a new optional
fpt
(web browser or native app fingerprint) field to bind the session to a fingerprint of the user agent. The thumbprint is a BASE64URL-safe encoded SHA-256 hash. -
Introduces new subject session object
ctx
(context) valuesNCG
(native client group) andNIA
(native IdP app). Thedevice
value introduced in Connect2id server 16.0 is deprecated and replaced byNCG
.
-
-
/monitor/v1/metrics
-
cibaEndpoint.successfulRequests
– New meter of successful CIBA requests. -
cibaEndpoint.invalidRequests
– New meter of CIBA requests failed with aninvalid_request
,unknown_user_id
,invalid_binding_message
ormissing_user_code
error. -
cibaEndpoint.invalidClientErrors
– New meter CIBA requests failed with aninvalid_client
error. -
cibaEndpoint.unauthorizedClientErrors
– New meter of CIBA requests failed with anunauthorized_client
error. -
cibaEndpoint.serverErrors
– New meter of CIBA requests failed with aserver_error
error. -
tokenEndpoint.ciba.successfulRequests
,tokenEndpoint.ciba.invalidClientErrors
,tokenEndpoint.ciba.unauthorizedClientErrors
,tokenEndpoint.ciba.invalidGrantErrors
,tokenEndpoint.ciba.invalidScopeErrors
,tokenEndpoint.ciba.serverErrors
– New token endpoint meters for the CIBA grant. The CIBA-specificauthorization_pending
,expired_token
andaccess_denied
errors count asinvalid_grant
errors. -
tokenEndpoint.ciba.handlerTimer
– New token endpoint timer for handling CIBA grants. -
authzStore.authRequestIDIssues
– New meter for the issue of CIBA authentication request IDs. -
authzStore.numGenericCodes
– New gauge for the number of currently active OAuth 2.0 authorisation codes and CIBA authentication request IDs. Replaces the deprecatedauthzStore.numAuthzCodes
gauge. -
authzStore.numAuthzCodes
– Deprecates the gauge, which will now mirror the newauthzStore.numGenericCodes
gauge. -
authzStore.cibaExchanges
– New meter for the successful CIBA authentication request ID for token exchanges. -
loginHintTokenStore.numTokens
– New gauge for the number of stored login hint tokens.
-
SPI
-
Upgrades the Connect2id server SDK to com.nimbusds:c2id-server-sdk:5.11
-
LoginHintResolver
– New SPI to resolve alogin_hint
request parameter to a subject identifier at the OpenID provider. -
CIBARequestHandler
– New SPI to handle the end-user authentication and consent for validated CIBA requests.
-
Resolved issues
-
Replaces the Connect2id server integration web APIs
expired_client_secret
error code with aclient_metadata_conflict
code (issue server/1061). -
Restores the HTTP POST entity body size checking at the token endpoint, limits the maximum size to 50 thousand characters (issue server/1062).
-
Adds HTTP POST entity body size checking at the PAR endpoint, limits the maximum size to 50 thousand characters (issue server/1068).
-
The logs of SPI implementation loading must record the canonical (full) class name, not the simple name (issue server/1063).
-
The Connect2id server must load and initialise all available
AuthorizationRequestValidator
SPI implementations. The rule that at most one may be configured as enabled is not affected (issue server/1065). -
The Connect2id server must load and initialise all available
PARValidator
SPI implementations. The rule that at most one may be configured as enabled is not affected (issue server/1066). -
The Connect2id server must load and initialise all available
CustomTokenResponseComposer
SPI implementations. The rule that at most one may be configured as enabled is not affected (issue server/1064). -
The Connect2id server must load and initialise all available
TokenIntrospectionResponseComposer
SPI implementations. The rule that at most one may be configured as enabled is not affected (issue server/1067).
Dependency changes
-
Upgrades to com.nimbusds:c2id-server-sdk:5.11
-
Upgrades to com.nimbusds:oauth2-authz-store:28.8
-
Upgrades to com.nimbusds:session-store:22.1
-
Upgrades to com.nimbusds:common:3.7
-
Upgrades to com.thetransactioncompany:java-property-utils:2.1
-
Updates to com.nimbusds:oauth2-grant-handlers:1.4