How upgrades are handled
One of the key of security, is to keep the software up-to-date to avoid exploit of known issues. The team is responsible for keeping the underlying infrastructure secured and up to date.
Cloud-IAM follows the Keycloak release cycle and keeps your deployments up-to-date. Every time Keycloak releases a new version, our QA team check that the new version is fully functional with all our processes. Once ready, the new version is available to our customer.
As minor versions are usually bug or security fixes, minor version upgrades without impact are applied without notice by the Cloud-IAM support team. Those upgrades are seamless in the end-user point of view.
To help the diagnosis in case an upgrade introduced an issue with your deployment, the deployment can only be upgraded one major version at a time.
How are planned the upgrades
Little Lemur plans (Free)
For freemium, the instance is shared across multiple deployments. The servers are upgraded without notice.
For dedicated plans, the upgrade are always planned with the customer. Most of the time, the version upgrades are seamless, thanks to our deployment process 👌.
However, Keycloak versions are not always backward compatible. In such cases, there is no other solution than stopping completely the cluster for a very few minutes. The usual downtime is less than 5 minutes between the last node has been stopped, and the first has restarted.
Of course, the customers are noticed about theses impacts so the Cloud-IAM Ops team can schedule the migration at the best maintenance window.
Keycloak upgrade process
To let the customers plan the upgrade and some internal qualification or development, the Cloud team publishes a schedule of the next versions deprecation.
|Version||Release date||Deprecation at Cloud-IAM||Release note|
|Keycloak 15.x Wildfly||August 2021||end of January 2023||link|
|Keycloak 16.x Wildfly||December 2021||end of February 2023||link|
|Keycloak 17.x Wildfly||February 2022||end of February 2023||link|
|Keycloak 18.x Wildfly||April 2022||end of March 2023||link|
|Keycloak 18.x Quarkus 2.x||April 2022||end of June 2023||link|
|Keycloak 19.x Quarkus 2.x||August 2022||end of September 2023||link|
|Keycloak 20.x Quarkus 2.x||November 2022||end of November 2023||link|
|Keycloak 21.x Quarkus 2.x||April 2023||end of April 2024||link|
|Keycloak 22.x Quarkus 3.x||July 2023||end of July 2024||link|
Customer are welcomed to ask the Cloud-IAM support team to upgrade to the latest versions without waiting for the deprecation deadline
Migrating to 16.x Wildfly
This version is mostly related to Wildfly upgrade. Nothing is related to the change of SPI in this version.
Migrating to 17.x Wildfly
This version is mostly related to the introduction of Quarkus. Nothing is related to the change of SPI in this version.
Migrating to 18.x Wildfly
upload-script feature was removed. This feature was deprecated for a long time and has finally been removed.
If you are using any of these capabilities:
- OpenID Connect Script Mapper
- Script Authenticator (Authentication Execution)
Then you should read this document to migrate the feature: https://www.keycloak.org/docs/latest/server_development/#_script_providers
The OpenID Connect Logout has also been reviewed and do not support anymore the
redirect_uri parameter. Checkout the documentation to understand the new behavior.
Migrating to 18.x Quarkus
The core of Keycloak remain exactly the same between the Wildfly and the Quarkus version. However, prior to Quarkus, it was possible to package custom extensions as
war and to upload them into Keycloak. From this version, only
jar can be uploaded and will deploy.
Cloud-IAM sets the
KC_HTTP_RELATIVE_PATH=/auth environment variable to remain compatible with existing configuration
Migrating to 19.x
Several changes in the Keycloak SPI have been made. Check the changes described here. The methods are deprecated but are meant to remain compatible for this version.
We encourage testing the extensions in a Keycloak v19.x Quarkus before upgrading to this version.
There has been a change with the
/auth/realms//protocol/openid-connect/userinfo endpoint to comply with RFC (changelog) The error handling has been remodeled and, the most notable change is that if the token does not have the
openid scope, the endpoint will return a 403.
HTTP/1.1 403 Forbidden ... WWW-Authenticate: Bearer realm="my-realm", error="insufficient_scope", error_description="Missing openid scope" ...
Check if the applications are using this endpoint and ensure the scope of the tokens are properly configured.
Migrating to 20.x
Deprecated methods from the models were removed. Checkout the list of updated interfaces.
We encourage testing the extensions in a Keycloak v20.x Quarkus before upgrading to this version.
Migrating to 21.x
The old admin console is removed and could not be restored. Therefore, admin theme based on the old console won't work anymore.
Keycloak changed the metric collection library to micrometer. This has an impact on the Cloud-IAM metrics reported by deployment. The change is not backward compatible because the metrics have be renamed according to the micrometer naming conventions.
Also note that the underlying libraries used to synchronize the Keycloak caches are not compatible. Therefore, the user sessions are lost during the upgrade and this implies the user have to reconnect after the migration.
From this version, the custom extensions can be compiled against Java 17.
Migrating to 22.x
This version of Keycloak transitions from Java EE to Jakarta EE. Custom extensions depending on classes
javax.* must be updated and depends on the same classes but from package
This has no effect on the custom extension implementation but they must be re-packaged and updated on the deployment.
Note that some dependencies have been removed from Keycloak release (
kotlin-stdlib). If your extension relies on one or more of these libraries in a transitive manner, you'll have to add them explicitly in your package framework.
Because of the new feature user session note mapper, note that mappers that uses a claim with a dot in the name must be adapted to escape the
dot that has become a special character.
From this version, the custom extensions must be compiled against Java 17.