Connect2id server 19.7
Connect2id server release 19.7 ships an update to consent prompts to enable IdPs easy access to previous decisions and other saved context. The web session bootstrap flow security is strengthened with revocation-aware ID tokens. Deployments can also turn on new JVM and HTTP metrics.
Authorisation record data in consent prompts
The consent prompt
is now able to pull the custom data object from a previous persisted
authorisation.
This enables IdPs to to make consent prompts aware of previous decisions and
other saved context.
Example consent prompt that records a timestamp of the last scope consent. This can be used to enforce custom expiration of consent for selected scopes and claims.
{
"type" : "consent",
"sid" : "cAjH3ZAonDVFs9u8XZtvuA.L-WFBXv5ompD96ztw0Rr4w",
"display" : "popup",
"sub_session" : { "sid" : "WYqFXK7Q4HFnJv0hiT3Fgw.-oVkvSXgalUuMQDfEsh1lw",
"sub" : "alice",
"auth_time" : 12345678,
"creation_time" : 1234567,
"max_life" : 20160,
"auth_life" : 1440,
"max_idle" : 15 },
"client" : { "client_id" : "8cc2043",
"client_type" : "confidential",
"application_type" : "web" },
"scope" : { "new" : [ ],
"consented" : [ "openid", "email" ] },
"claims" : { "new" : { "essential" : [ ],
"voluntary" : [ ] },
"consented" : { "essential" : [ ],
"voluntary" : [ "email", "email_verified" ] } },
"record_data" : { "last_email_consent_ts" : 1771187764 }
}
To include the record_data in consent prompts enable
op.authz.includeRecordDataInPrompt,
together with op.authz.alwaysPromptForConsent
so that the previous authorisation data can also be checked when there is
existing consent for all requested scope values (in which case the consent
prompt would be skipped).
Revocation-aware ID tokens for web session bootstrap
The web session bootstrap flow for native apps, introduced in Connect2id server 19.6, adds an extra check to ensure that once a subject or client has been revoked — for example due to account changes or security events - previously issued ID tokens can no longer be used to establish new web sessions. This prevents stale authentication artefacts from being reused after a revocation event.
The revocation check is performed at the token exchange step.
New JVM and HTTP endpoint metrics
The monitoring endpoint is receives new optional JVM and HTTP metrics. They can help improve operational visibility, by exposing detailed runtime, memory, threading, and request-level indicators.
Detailed information about the new release can be found in the notes below.
Download 19.7
For the signature validation: Public GPG key
Standard Connect2id server edition
Apache Tomcat package with Connect2id server 19.7: Connect2id-server.zip
GPG signature: Connect2id-server.zip.asc
SHA-256: 9f85b6f03e545ffaf52353522f487c5d6945770632bffa521b5fa49aa3dcbe61
Connect2id server 19.7 WAR package: c2id.war
GPG signature: c2id.war.asc
SHA-256: 592977998ede36b93c716288f034986917097e94b838725a62e218573170dcf1
Multi-tenant edition
Apache Tomcat package with Connect2id server 19.7: Connect2id-server-mt.zip
GPG signature: Connect2id-server-mt.zip.asc
SHA-256: c34b90e897d3a7e8d44e95cb5d32652183f043b06f25c7cc6a0688573a27f8f4
Connect2id server 19.7 WAR package: c2id-mt.war
GPG signature: c2id-mt.war.asc
SHA-256: 85cc0f4ee604d2534fb65ff3abfa2e7c4646173c372ffc90bb63de60e5fb6f0f
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
19.7 (2026-02-15)
Summary
-
The consent prompt in authorisation sessions supports inclusion of
authorisation recorddatafor a returning subject (end-user) and client. This enables deployments to present richer, customised consent experiences, and to implement custom expiration of previously consented scopes and claims. -
The web session bootstrap token exchange profile is updated to prevent stale ID tokens from being used after a revocation event for the subject or client, for example due to logout, account changes, or other security events.
-
New optional JVM and HTTP metrics are introduced to improve operational visibility. The runtime, memory, threading, and request-level indicators provide operators with clearer insight into deployment health and traffic
behaviour.
Configuration
-
/WEB-INF/oidcProvider.properties
op.authz.includeRecordDataInPrompt– New optional boolean configuration property that controls the inclusion of therecord_dataJSON object in consent prompts, provided an authorisation record is found for the subject (end-user) and the requesting client. The default value isfalse.
-
/WEB-INF/monitor.properties
-
monitor.includeJVM– New optional boolean configuration property that controls whether the new JVM metrics (jvm.*) are included. The default value isfalse. -
monitor.includeHTTP– New optional boolean configuration property that controls whether the new HTTP metrics (http.*) are included. The default value isfalse.
-
Web API
-
/authz-sessions/rest/v3/
- The consent prompt receives a new optional
record_dataJSON object parameter. Its inclusion is controlled by the newop.authz.includeRecordDataInPromptconfiguration property. Therecord_dataobject contains the authorization record data for the authenticated subject (end-user) and the requesting client, provided a record is found (from a previous authorisation that was flagged for persistence with the consentlong_livedparameter settrue).
- The consent prompt receives a new optional
-
/token
- The token exchange (RFC 8693) profile to issue access tokens for the web
session bootstrap endpoint (
/web-session-bootstrap/rest/v1) returns aninvalid_granterror if theiat(issued-at) claim of the ID token is followed by a revocation event for the subject (end-user) and / or client.
- The token exchange (RFC 8693) profile to issue access tokens for the web
session bootstrap endpoint (
-
/monitor/v1/metrics
-
jvm.gc.G1-Young-Generation.count– New gauge of young generation (minor) GC cycles since JVM start. Available whenmonitor.includeJVMis enabled. Note: GC names depend on the JVM and garbage collector in use. TheG1-*names are typical for the G1 GC. -
jvm.gc.G1-Young-Generation.time– New gauge of total time spent in young generation (minor) garbage collection since JVM start (milliseconds). Available whenmonitor.includeJVMis enabled. -
jvm.gc.G1-Old-Generation.count– New gauge of old generation (major or mixed) GC cycles since JVM start. Available whenmonitor.includeJVMis enabled. -
jvm.gc.G1-Old-Generation.time– New gauge of total time spent in old generation (major or mixed) garbage collection since JVM start (milliseconds). Available whenmonitor.includeJVMis enabled. -
jvm.memory.heap.init– New gauge of the initial heap size allocated at JVM startup. Available whenmonitor.includeJVMis enabled. -
jvm.memory.heap.used– New gauge of the currently used heap memory. Available whenmonitor.includeJVMis enabled. -
jvm.memory.heap.committed– New gauge of the heap memory committed (guaranteed to be available to the JVM). Available whenmonitor.includeJVMis enabled. -
jvm.memory.heap.max– New gauge of the maximum heap memory the JVM may use (the-Xmxlimit). Available whenmonitor.includeJVMis enabled. -
jvm.memory.heap.usage– New gauge of the heap usage ratio (used / max). Available whenmonitor.includeJVMis enabled. -
jvm.memory.non-heap.init– New gauge of the initial non-heap memory size (e.g. Metaspace, CodeCache) at JVM startup. Available whenmonitor.includeJVMis enabled. -
jvm.memory.non-heap.used– New gauge of the currently used non-heap memory. Available whenmonitor.includeJVMis enabled. -
jvm.memory.non-heap.committed– New gauge of the committed non-heap memory. Available whenmonitor.includeJVMis enabled. -
jvm.memory.non-heap.max– New gauge of the maximum non-heap memory available (may be undefined depending on the JVM). Available whenmonitor.includeJVMis enabled. -
jvm.memory.non-heap.usage– New gauge of the non-heap usage ratio (used / max, where defined). Available whenmonitor.includeJVMis enabled. -
jvm.threads.count– New gauge of the current live thread count (includes daemon and non-daemon threads). Available whenmonitor.includeJVMis enabled. -
jvm.threads.daemon.count– New gauge of the current daemon thread count. Available whenmonitor.includeJVMis enabled. -
jvm.threads.peak.count– New gauge of the peak live thread count since JVM start. Available whenmonitor.includeJVMis enabled. -
jvm.threads.total_started.count– New counter of the total number of threads started since JVM start. Available whenmonitor.includeJVMis enabled. -
jvm.threads.new.count– New gauge of threads in the NEW state (created but not yet started). Available whenmonitor.includeJVMis enabled. -
jvm.threads.blocked.count– New gauge of threads currently BLOCKED waiting to enter a synchronized block or monitor. Available whenmonitor.includeJVMis enabled. -
jvm.threads.runnable.count– New gauge of threads in the RUNNABLE state (running or ready to run). Available whenmonitor.includeJVMis enabled. -
jvm.threads.timed_waiting.count– New gauge of threads in the TIMED_WAITING state (e.g. sleep, wait with timeout). Available whenmonitor.includeJVMis enabled. -
jvm.threads.waiting.count– New gauge of threads in the WAITING state (waiting indefinitely). Available whenmonitor.includeJVMis enabled. -
jvm.threads.terminated.count– New gauge of threads in the TERMINATED state. Available whenmonitor.includeJVMis enabled. -
jvm.threads.deadlock.count– New gauge of the number of threads currently involved in a detected deadlock. Available whenmonitor.includeJVMis enabled. -
jvm.threads.deadlocks– New diagnostic gauge listing the thread IDs currently involved in a detected deadlock. Available whenmonitor.includeJVMis enabled. -
jvm.fd.ratio– New gauge of the ratio of open file descriptors to the maximum allowed (open / max). Available on Unix-like systems whenmonitor.includeJVMis enabled. -
http.requests– New timer of all HTTP requests processed by the server. Provides total request count, minimum, maximum, mean and standard deviation of request duration, as well as latency percentiles. Also exposes 1-, 5- and 15-minute moving average request rates and overall mean rate. Available whenmonitor.includeHTTPis enabled. -
http.activeRequests– New counter of currently active (in-flight) HTTP requests being processed by the server. Available whenmonitor.includeHTTPis enabled. -
http.errors– New meter of uncaught exceptions and internal request processing errors. Provides total count and 1-, 5- and 15-minute moving average rates. Available whenmonitor.includeHTTPis enabled. -
http.timeouts– New meter of HTTP request timeouts. Provides total count and 1-, 5- and 15-minute moving average rates. Available whenmonitor.includeHTTPis enabled. -
http.responseCodes.ok– New meter of HTTP 200 (OK) responses. Provides total count and 1-, 5- and 15-minute moving average rates. Available whenmonitor.includeHTTPis enabled. -
http.responseCodes.created– New meter of HTTP 201 (Created) responses. Provides total count and 1-, 5- and 15-minute moving average rates. Available whenmonitor.includeHTTPis enabled. -
http.responseCodes.noContent– New meter of HTTP 204 (No Content) responses. Provides total count and 1-, 5- and 15-minute moving average rates. Available whenmonitor.includeHTTPis enabled. -
http.responseCodes.badRequest– New meter of HTTP 400 (Bad Request) responses. Provides total count and 1-, 5- and 15-minute moving average rates. Available whenmonitor.includeHTTPis enabled. -
http.responseCodes.notFound– New meter of HTTP 404 (Not Found) responses. Provides total count and 1-, 5- and 15-minute moving average rates. Available whenmonitor.includeHTTPis enabled. -
http.responseCodes.serverError– New meter of HTTP 5xx (Server Error) responses. Provides total count and 1-, 5- and 15-minute moving average rates. Available whenmonitor.includeHTTPis enabled. -
http.responseCodes.other– New meter of all other HTTP response codes not explicitly categorised above. Provides total count and 1-, 5- and 15-minute moving average rates. Available whenmonitor.includeHTTPis enabled.
-
Dependency changes
-
Upgrades to com.nimbusds:oauth2-authz-store:28.12
-
Updates to com.nimbusds:commons:3.9
-
Updates to io.dropwizard.metrics:*.4.2.38
-
Adds io.dropwizard.metrics:metrics-jvm:4.2.38
-
Adds io.dropwizard.metrics:metrics-jakarta-servlet:4.2.38