Incompatible changes
Incompatible changes refer to changes that affect existing functionality and migration from a previous release. Before you upgrade, make appropriate changes to your scripts and plugins.
Version | Description | |
---|---|---|
2024.9 |
Zero-valued Prometheus metricsFollowing a performance improvement, the Prometheus output shows many new WebSocket proxy metrics with This could affect existing dashboards and reports. |
|
2024.6 |
Router now checks for directoryThe Router handler now checks
the |
|
ClientRegistration configurationsTo enable OpenID Connect ID token signature validation and the provider uses HMAC-based signatures, ClientRegistration configurations now require settings to access the client secret used for signature validation:
For details, refer to ClientRegistration. The Issuer for AuthorizationCodeOAuth2ClientFilter now uses asymmetric signature validation by default. |
||
Issuer configurationsWhen you enable OpenID Connect ID token signature validation, update these properties of your Issuer configurations:
For details, refer to Issuer. The Issuer for AuthorizationCodeOAuth2ClientFilter now uses asymmetric signature validation by default. |
||
2024.3 |
IG .war fileThe IG .war file is no longer created. It was deprecated in IG 6 and stopped being delivered in IG 2023.2. For information about migration, refer to Migrate from web container mode to standalone mode. |
|
|
||
ScriptsGroovy scripts used in the IG configuration must now use the UTF-8 character set. In previous releases, Groovy files referenced from the IG configuration could rely on default encoding or system properties. |
||
IG Java 17IG no longer supports Java 11. You must upgrade to Java 17. |
||
Vert.xUpgrade to Vert.x 4.5 renames and removes Vert.x options used by WebSocket
connections to AM and accessed through the Learn more about Vert.x changes in 4.5.0 Deprecations and breaking changes. Use the Vert.x options described in VertxOptions. |
||
Handling of failed HTTP responsesIG now fails an HTTP response promise when:
In previous releases, IG completed the response promise but the response was unreadable. |
||
JWT must be signed or encryptedThe following filters must now be configured with a SecretsProvider and signature or encryption: |
||
Improved security for CrossDomainSingleSignOnFilterWhen From this release, if In previous releases, the CrossDomainSingleSignOnFilter accepted unsigned tokens. |
||
IG .zip fileTo prevent confusion during upgrade, PingGateway-2024.9.0.zip now unpacks to a directory
containing the IG version number. For example, this release unpacks to
In previous releases, PingGateway-2024.9.0.zip unpacked to |
||
Treatment of HTTP 500 errorsHTTP 500 errors are no longer computed in Handlers or Filters. Instead, they fail the response promise with the Runtime exception that caused the failure. |
||
Inline objects can’t be referenced from the configurationIn previous releases, other objects in a configuration could refer to an inline
object through its |
||
2023.11 |
Change to host header capitalization for HTTP/2For HTTP/2, PingGateway pseudo-headers and This isn’t a breaking change. RFC 2616, 4.2 Message Headers explains, "Field names are case-insensitive." Some applications expect case-sensitive header names, such as |
|
Safeguard against accidental exposure of private keys with JwkSetHandlerThe new property The property is |
||
2023.9 |
None |
|
2023.6 |
Improved security for scriptsTo improve security, IG now runs scripts only from an absolute path, or from a path relative to the base script directory. Routes that refer to scripts otherwise, such as through a URL, fail to deploy. For more information, refer to the |
|
2023.4 |
None |
|
2023.2 |
The IG .war file is no longer delivered. Learn more in Migrate from web container mode to standalone mode. |
|
7.2 |
ScriptableResourceUriProvider accepts returned values only as a
|
|
AM 5.x.x EOLAM 5.x.x has reached product end of life and is no longer supported.
The default value of the AmService property |
||
|
||
JWT classes relocated to new packagesClasses related to JWT stateless sessions have moved from the
package Classes and functions used to validate a JWT, used with a
JwtValidatorCustomizer in a JwtValidationFilter, have moved from the
package The IG scripting engine has been updated to incorporate the changes automatically. |
||
CDSSO requires session cookies with
|
||
7.1.2 |
Logback upgradeIG has upgraded the version of Logback from 1.2.7 to 1.2.9. For more information, refer to the Logback News for Logback 1.2.8 and Logback 1.2.9. |
|
7.1.1 |
Proxying WebSocket traffic in standalone modeWhen IG is in standalone mode, proxying Websocket traffic can produce errors
where requested subprotocols not supported. To prevent these error, you must now
list the subprotocols that are proxied by IG in the |
|
7.1 |
Name of TimerDecorator in Prometheus outputIn the Prometheus output, information for the default TimerDecorator is always
included as In previous releases, information is included in the Prometheus output as follows:
For more information, see TimerDecorator. |
|
Runtime expressions that consume streamed content written with a #To prevent IG from blocking executing threads, write runtime
expressions that consume streamed content with For IG in standalone mode, when the new For more information, refer to runtime expression. |
||
New methods for asynchronous execution of scripts
APIs that read the entity content have been updated to execute scripts asynchronously. |
||
Username of an AM identity is now
|
||
Secrets from secret stores expire by defaultSecrets from FileSystemSecretStore, HsmSecretStore, KeyStoreSecretStore, and
SystemAndEnvSecretStore, now expire after a default of five minutes, or after
the time specified in the property |
||
Entity.toString() function does not return contentThe To return the entity content as a string, replace |
||
Capture and logging of entityTo faciltate asynchronous processing in this release, when the CaptureDecorator
property In previous releases, when |
||
RSA keys must be at least 2048 bitsFor security, RFC 7518 - Digital Signature with RSASSA-PKCS1-v1_5 requires that RSA keys must be 2048 bits or larger. Smaller keys are now rejected. |
||
Validation of goto parameter in OAuth2ClientFilterTo prevent redirects to malicious web sites, IG now validates the
The goto URL must use the same scheme, host, and port as the original URI, or be a relative URI (just the path). Otherwise, the request fails with an error. To redirect a request to a site that does not meet the goto URL criteria, change the original URI by using a ForwardedRequestFilter. For more information, refer to the reference pages for OAuth2ClientFilter and ForwardedRequestFilter. |
||
7 |
Content-Type is a required header when entity used in StaticResponseHandlerWhen |
|
Java 11 requiredIG 7.0 requires Java 11. Java 8 is not supported. |
||
Connections to DS secure by defaultDS is now secure by default. Connections between IG and DS must therefore be configured for TLS. |
||
Groovy 3.0IG now supports Groovy 3.0. Some Groovy feature may have been deprecated/removed. Refer to the Release notes for Groovy 3.0. |
||
JwtSessionFactory not an alternative type for JwtSessionJwtSessionFactory is no longer an alternative type for JwtSession |
||
Default value of skew allowance in JwtSessionThe default skew allowance in JwtSession has been reduced from 2 minutes to zero. A property to configure the skew allowance has been added in JwtSession. |
||
KeyStore and KeyStoreSecretStore default type based on keystore extensionOracle recommends the use of PKCS12 keystores. From Java 9, Oracle has provided more support for PKCS12. From Java 11, Oracle has changed the default keystore to PKCS12. Following this lead, the default type for KeyStore and KeyStoreSecretStore is now based on the keystore extension. If the keystore extension is not recognized, the default type is PKCS12. In previous releases, the default type was the one used by the platform. To ensure backward-compatibility, where keys are generated using a non-PKCS12 type (for example, JKS), specify type in KeyStore or storeType in KeyStoreSecretStore. |
||
OAuth2ResourceServerFilter doesn’t check access_token expiryIn previous releases, after an access_token resolver validated an access_token, the OAuth2ResourceServerFilter checked that the access_token was not expired. From this release, the OAuth2ResourceServerFilter considers any token returned by an AccessTokenResolver as valid, and checks only that the required scopes are present. |
||
gracefulStop In ScheduledExecutorServiceWhen the ScheduledExecutorService property |
||
Allow listing of audit event fields in logsTo prevent logging of sensitive data for an event, the Common Audit Framework now uses an allow-list to specify which event fields appear in logs. Compared to previous releases, different event fields are included by default in the logs. The AuditService |
||
Identification of OAuth2ClientFilter registrationsIn OAuth2ClientFilter, registrations are now identified by the
ClientRegistration property When a user initiates a login with the OAuth2ClientFilter, the login endpoint
uses the ClientRegistration property
In previous releases, the login endpoint used the ClientRegistration property name:
Similarly, the login endpoint in Nascar pages uses |
||
6.5.4 |
Validation of
|
|
6.5.3 |
SAML 2.0 deployments require additional configurationWhen IG uses AM federation libraries generated from AM 6.5.2 or earlier, add the
following lines to the
|
|
6.5 |
Improved security for authentication cookies in CrossDomainSingleSignOnFilter and JwtSessionBy default, the JwtCookieSession cookie and CrossDomainSingleSignOnFilter
authentication cookie and are now flagged as CrossDomainSingleSignOnFilter has additional properties to set or unset cookie
flags for |
|
Agent credentials mandatory in AmServiceThe This is a breaking change for all filters that use AmService, and for the
following filters where
|
||
Agent session logged out when AmService stoppedWhen a route containing an AmService is reloaded, or when an AmService is stopped, the agent session is logged out. |
||
Disconnection strategy for session cache and PolicyEnforcementFilter cacheWhen the WebSocket notification service is disconnected, by default the session cache and policy enforcement cache is cleared. In previous releases, the caches were not cleared. |
||
DS API change for secure LDAP connectionDS 6.5 has updated its client API for establishing SSL connections. The
This has an impact on existing scripts that are using IG’s LdapClient for connecting to a secure LDAP server. Previously working script:
New API:
|
||
6.1 |
New Features in Freeform StudioNew features have been added to the technology preview of Freeform Studio. Routes created in Freeform Studio in IG 6.0 are automatically transitioned into JSON editor routes. |
|
6 |
Production mode by defaultBy default, after installation IG is now in production (immutable) mode instead of development (mutable) mode. To use Studio and manage routes through Common REST, you must switch to development mode. |
|
Introduction of ReverseProxyHandlerThe chain in routes created in Studio now ends with a ReverseProxyHandler instead of a ClientHandler. |
||
PolicyEnforcementFilter credentials must be registered as Java AgentIt is now mandatory to register an AM Java agent in order to use the PolicyEnforcementFilter. The tokens issued by AM for an agent have an unlimited lifetime (unless configured otherwise), and all appropriate permissions, making them a perfect fit for an application needing to ask for policy decisions. |
||
ClientHandler verifies the hostname for outgoing SSL connectionsBy default, the ClientHandler now verifies the hostname for outgoing SSL connections. By default, in previous releases the hostname was not verified. For more information, refer to the |
||
Route filename, name, and IDThe filename of a route cannot be |
||
Servlet 2.x support removedThis release supports servlet 3.x. Servlet 2.x is no longer supported. |
||
Captured entity size is limitedBy default, when the CaptureDecorator property The CaptureDecorator property |
||
ApiProtectionFilter protects
|
||
Plus (+) not allowed in namesThe plus character (+) is now a reserved character in names. It is no longer allowed in object namrs and route names. |
||
Timestamp in route log files complies with ISO 8601The timestamp in route logs now includes the date, and is compliant with ISO 8601. The following examples show the impact of this change on log parsing:
|
||
5.5 |
Support for Java 7Support for Java 7 has been removed. Before you update to IG 5.5, install the latest version of Java 8. If you are using IG on Tomcat with SSL enabled, use OpenJDK 1.8.0_121 or later versions to prevent mismatch between client side ciphers and server side ciphers. |
|
Default cookie name is IG_SESSIONIDMost web containers use |
||
Configuration of Jetty for HTTPSThe way to configure HTTPS for Jetty has changed in Jetty 9.4. For general information about Jetty and HTTPS, see the Jetty documentation. |
||
Support for "scope" in dynamic client registrationAs required by RFC 7591, OAuth 2.0 Dynamic Client Registration Protocol, the metadata property of OAuth2ClientFilter supports scope. Dynamic client registration with versions of AM earlier than 5.5 must use the
For the option to dynamically register with a wider range of identity providers, you can use both scope and scopes at the same time. |