From 0f81254c19a5ed31b049e84c399b426ad722c340 Mon Sep 17 00:00:00 2001 From: Nithin Shekar Kuruba Date: Wed, 8 May 2024 14:52:01 -0700 Subject: [PATCH] feat: initial commit of rhbk-24 --- .github/workflows/publish-image-rhbk-dev.yml | 4 +- docker/kc-cron-job/yarn.lock | 24 +++--- docker/keycloak/Dockerfile-22 | 6 +- .../{Dockerfile-24.0.2 => Dockerfile-24} | 18 ++--- .../{22.0 => 22}/cache-ispn-custom.xml | 0 .../configuration/{22.0 => 22}/keycloak.conf | 0 .../{22.0 => 22}/quarkus.properties | 0 .../keycloak/configuration/24/keycloak.conf | 37 ++++++++++ .../configuration/24/quarkus.properties | 10 +++ .../extensions-24/.vscode/settings.json | 3 + .../pom.xml | 2 +- .../services/pom.xml | 0 .../BrokeredIdentityContext.java | 0 .../ClientLoginAuthenticator.java | 0 .../ClientLoginAuthenticatorFactory.java | 0 .../ClientLoginRoleBinding.java | 0 .../ClientLoginRoleBindingFactory.java | 0 .../CookieStopAuthenticator.java | 0 .../CookieStopAuthenticatorFactory.java | 0 .../IdentityProviderStopAuthenticator.java | 0 ...ntityProviderStopAuthenticatorFactory.java | 0 .../UserAttributeAuthenticator.java | 0 .../UserAttributeAuthenticatorFactory.java | 0 ...IdpDeleteUserIfDuplicateAuthenticator.java | 0 ...teUserIfDuplicateAuthenticatorFactory.java | 0 .../browser/IdentityProviderStopForm.java | 14 ++-- .../IdentityProviderStopFormFactory.java | 0 .../oidc/CustomOIDCIdentityProvider.java | 0 .../CustomOIDCIdentityProviderFactory.java | 0 .../oidc/OverrideOIDCIdentityProvider.java | 0 .../OverrideOIDCIdentityProviderFactory.java | 0 .../oidc/ext/endpoints/LegacyEndpoint.java | 0 .../oidc/mappers/ClaimOmitterMapper.java | 0 .../oidc/mappers/IDPUserinfoMapper.java | 69 ++++++++++++++---- .../saml/mappers/ClientRoleListMapper.java | 0 .../StatementAttributeOmitterMapper.java | 0 .../github/CustomGitHubIdentityProvider.java | 0 .../CustomGitHubIdentityProviderFactory.java | 0 .../CustomGitHubUserAttributeMapper.java | 0 .../META-INF/jboss-deployment-structure.xml | 0 ...ycloak.authentication.AuthenticatorFactory | 0 ...ak.broker.provider.IdentityProviderFactory | 0 ...oak.broker.provider.IdentityProviderMapper | 0 ...roker.social.SocialIdentityProviderFactory | 0 .../org.keycloak.protocol.ProtocolMapper | 0 ...k.protocol.oidc.ext.OIDCExtProviderFactory | 0 .../themes/pom.xml | 0 .../themes/src/assembly/bin.xml | 0 .../resources/META-INF/keycloak-themes.json | 0 ...m-identity-provider-github-custom-ext.html | 0 ...realm-identity-provider-github-custom.html | 0 ...m-identity-provider-keycloak-oidc-ext.html | 0 .../realm-identity-provider-oidc-base.html | 0 ...alm-identity-provider-oidc-custom-ext.html | 0 .../realm-identity-provider-oidc-custom.html | 0 .../realm-identity-provider-oidc-ext.html | 0 .../realm-identity-provider-oidc.html | 0 .../login/theme.properties | 0 .../theme/bcgov-idp-login/login/login.ftl | 0 .../bcgov-idp-login/login/theme.properties | 0 .../login/theme.properties | 0 .../login/login-original.ftl | 0 .../theme/bcgov-idp-stopper/login/login.ftl | 0 .../bcgov-idp-stopper/login/theme.properties | 0 .../bcgov-no-brand/login/theme.properties | 0 .../bcgov/email/html/email-verification.ftl | 0 .../email/messages/messages_en.properties | 0 .../theme/bcgov/email/theme.properties | 0 .../bcgov/login/logout-confirm-original.ftl | 0 .../theme/bcgov/login/logout-confirm.ftl | 0 .../login/messages/messages_en.properties | 0 .../login/resources/css/bcsans-20221128.css | 0 .../login/resources/css/styles-20221128.css | 0 .../login/resources/fonts/bcsans-bold.woff | Bin .../resources/fonts/bcsans-bolditalic.woff | Bin .../login/resources/fonts/bcsans-italic.woff | Bin .../login/resources/fonts/bcsans-regular.woff | Bin .../bcgov/login/resources/img/bcgovlogo.svg | 0 .../theme/bcgov/login/resources/img/logo.svg | 0 .../login/resources/js/script-20221128.js | 0 .../theme/bcgov/login/template-original.ftl | 0 .../resources/theme/bcgov/login/template.ftl | 0 .../theme/bcgov/login/theme.properties | 0 83 files changed, 138 insertions(+), 49 deletions(-) rename docker/keycloak/{Dockerfile-24.0.2 => Dockerfile-24} (50%) rename docker/keycloak/configuration/{22.0 => 22}/cache-ispn-custom.xml (100%) rename docker/keycloak/configuration/{22.0 => 22}/keycloak.conf (100%) rename docker/keycloak/configuration/{22.0 => 22}/quarkus.properties (100%) create mode 100644 docker/keycloak/configuration/24/keycloak.conf create mode 100644 docker/keycloak/configuration/24/quarkus.properties create mode 100644 docker/keycloak/extensions-24/.vscode/settings.json rename docker/keycloak/{extensions-24.0.2 => extensions-24}/pom.xml (95%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/pom.xml (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/authenticators/BrokeredIdentityContext.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginAuthenticator.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginAuthenticatorFactory.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginRoleBinding.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginRoleBindingFactory.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/authenticators/CookieStopAuthenticator.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/authenticators/CookieStopAuthenticatorFactory.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/authenticators/IdentityProviderStopAuthenticator.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/authenticators/IdentityProviderStopAuthenticatorFactory.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/authenticators/UserAttributeAuthenticator.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/authenticators/UserAttributeAuthenticatorFactory.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/authenticators/broker/IdpDeleteUserIfDuplicateAuthenticator.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/authenticators/broker/IdpDeleteUserIfDuplicateAuthenticatorFactory.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/authenticators/browser/IdentityProviderStopForm.java (88%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/authenticators/browser/IdentityProviderStopFormFactory.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/CustomOIDCIdentityProvider.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/CustomOIDCIdentityProviderFactory.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/OverrideOIDCIdentityProvider.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/OverrideOIDCIdentityProviderFactory.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/protocol/oidc/ext/endpoints/LegacyEndpoint.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/protocol/oidc/mappers/ClaimOmitterMapper.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/protocol/oidc/mappers/IDPUserinfoMapper.java (60%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/protocol/saml/mappers/ClientRoleListMapper.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/protocol/saml/mappers/StatementAttributeOmitterMapper.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/social/github/CustomGitHubIdentityProvider.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/social/github/CustomGitHubIdentityProviderFactory.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/java/com/github/bcgov/keycloak/social/github/CustomGitHubUserAttributeMapper.java (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/resources/META-INF/jboss-deployment-structure.xml (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/resources/META-INF/services/org.keycloak.authentication.AuthenticatorFactory (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/resources/META-INF/services/org.keycloak.broker.provider.IdentityProviderFactory (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/resources/META-INF/services/org.keycloak.broker.provider.IdentityProviderMapper (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/resources/META-INF/services/org.keycloak.broker.social.SocialIdentityProviderFactory (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/resources/META-INF/services/org.keycloak.protocol.ProtocolMapper (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/services/src/main/resources/META-INF/services/org.keycloak.protocol.oidc.ext.OIDCExtProviderFactory (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/pom.xml (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/assembly/bin.xml (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/META-INF/keycloak-themes.json (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-github-custom-ext.html (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-github-custom.html (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-keycloak-oidc-ext.html (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-base.html (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-custom-ext.html (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-custom.html (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-ext.html (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc.html (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov-idp-login-no-brand/login/theme.properties (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov-idp-login/login/login.ftl (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov-idp-login/login/theme.properties (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov-idp-stopper-no-header-title/login/theme.properties (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov-idp-stopper/login/login-original.ftl (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov-idp-stopper/login/login.ftl (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov-idp-stopper/login/theme.properties (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov-no-brand/login/theme.properties (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov/email/html/email-verification.ftl (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov/email/messages/messages_en.properties (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov/email/theme.properties (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov/login/logout-confirm-original.ftl (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov/login/logout-confirm.ftl (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov/login/messages/messages_en.properties (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov/login/resources/css/bcsans-20221128.css (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov/login/resources/css/styles-20221128.css (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-bold.woff (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-bolditalic.woff (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-italic.woff (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-regular.woff (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov/login/resources/img/bcgovlogo.svg (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov/login/resources/img/logo.svg (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov/login/resources/js/script-20221128.js (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov/login/template-original.ftl (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov/login/template.ftl (100%) rename docker/keycloak/{extensions-24.0.2 => extensions-24}/themes/src/main/resources/theme/bcgov/login/theme.properties (100%) diff --git a/.github/workflows/publish-image-rhbk-dev.yml b/.github/workflows/publish-image-rhbk-dev.yml index 4f6aeb34..90fb4fba 100644 --- a/.github/workflows/publish-image-rhbk-dev.yml +++ b/.github/workflows/publish-image-rhbk-dev.yml @@ -51,8 +51,8 @@ jobs: with: context: docker/keycloak push: true - tags: ${{ env.GITHUB_REGISTRY }}/${{env.IMAGE_NAME}}:dev-rhbk-22 - file: docker/keycloak/Dockerfile-22 + tags: ${{ env.GITHUB_REGISTRY }}/${{env.IMAGE_NAME}}:dev-rhbk-24 + file: docker/keycloak/Dockerfile-24 cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache-new diff --git a/docker/kc-cron-job/yarn.lock b/docker/kc-cron-job/yarn.lock index a38e5a0e..76899e83 100644 --- a/docker/kc-cron-job/yarn.lock +++ b/docker/kc-cron-job/yarn.lock @@ -1132,9 +1132,9 @@ camelcase@^6.2.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== camelize@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" - integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= + version "1.0.1" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.1.tgz#89b7e16884056331a35d6b5ad064332c91daa6c3" + integrity sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ== caniuse-lite@^1.0.30001541: version "1.0.30001550" @@ -1301,9 +1301,9 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.2: ms "2.1.2" decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== dedent@^1.0.0: version "1.5.1" @@ -1816,7 +1816,7 @@ fill-range@^7.0.1: filter-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" - integrity sha1-mzERErxsYSehbgFsbF1/GeCAXFs= + integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" @@ -1849,9 +1849,9 @@ flatted@^3.2.9: integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== follow-redirects@^1.14.0: - version "1.14.4" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379" - integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g== + version "1.15.6" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" + integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== follow-redirects@^1.15.0: version "1.15.2" @@ -3662,7 +3662,7 @@ stack-utils@^2.0.3: strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= + integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== string-length@^4.0.1: version "4.0.2" @@ -3954,7 +3954,7 @@ url-join@^4.0.0: url-template@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" - integrity sha1-/FZaPMy/93MMd19WQflVV5FDnyE= + integrity sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw== util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" diff --git a/docker/keycloak/Dockerfile-22 b/docker/keycloak/Dockerfile-22 index cf7c0c8e..5b0310ee 100644 --- a/docker/keycloak/Dockerfile-22 +++ b/docker/keycloak/Dockerfile-22 @@ -26,11 +26,11 @@ COPY --from=builder /opt/keycloak/ /opt/keycloak/ # copy the theme directory to `/opt/keycloak/themes/` for now, but we can consider to archive to be deployed later. COPY ./extensions-22/themes/src/main/resources/theme /opt/keycloak/themes -COPY ./configuration/22.0/cache-ispn-custom.xml /opt/keycloak/conf +COPY ./configuration/22/cache-ispn-custom.xml /opt/keycloak/conf -COPY ./configuration/22.0/keycloak.conf /opt/keycloak/conf +COPY ./configuration/22/keycloak.conf /opt/keycloak/conf -COPY ./configuration/22.0/quarkus.properties /opt/keycloak/conf +COPY ./configuration/22/quarkus.properties /opt/keycloak/conf # change these values to point to a running postgres instance ENTRYPOINT ["/opt/keycloak/bin/kc.sh"] diff --git a/docker/keycloak/Dockerfile-24.0.2 b/docker/keycloak/Dockerfile-24 similarity index 50% rename from docker/keycloak/Dockerfile-24.0.2 rename to docker/keycloak/Dockerfile-24 index a10b0b90..47279624 100644 --- a/docker/keycloak/Dockerfile-24.0.2 +++ b/docker/keycloak/Dockerfile-24 @@ -1,10 +1,10 @@ FROM maven:3.8.5-openjdk-17-slim AS extensions-builder -COPY ./extensions-24.0.2 /tmp/ +COPY ./extensions-24 /tmp/ WORKDIR /tmp/ RUN mvn -B clean package --file pom.xml -FROM quay.io/keycloak/keycloak:24.0.2 as builder +FROM registry.redhat.io/rhbk/keycloak-rhel9:24 as builder # Enable health and metrics support ENV KC_HEALTH_ENABLED=true @@ -16,21 +16,21 @@ ENV KC_DB=postgres COPY --from=extensions-builder /tmp/services/target/bcgov-services-1.0.0.jar /opt/keycloak/providers/ WORKDIR /opt/keycloak -# for demonstration purposes only, please make sure to use proper certificates in production instead -RUN keytool -genkeypair -storepass password -storetype PKCS12 -keyalg RSA -keysize 2048 -dname "CN=server" -alias server -ext "SAN:c=DNS:localhost,IP:127.0.0.1" -keystore conf/server.keystore + RUN /opt/keycloak/bin/kc.sh build -FROM quay.io/keycloak/keycloak:24.0.2 +FROM registry.redhat.io/rhbk/keycloak-rhel9:24 + COPY --from=builder /opt/keycloak/ /opt/keycloak/ # copy the theme directory to `/opt/keycloak/themes/` for now, but we can consider to archive to be deployed later. -COPY ./extensions-24.0.2/themes/src/main/resources/theme /opt/keycloak/themes +COPY ./extensions-24/themes/src/main/resources/theme /opt/keycloak/themes -# COPY ./configuration/cache-ispn-custom.xml /opt/keycloak/conf +COPY ./configuration/24/cache-ispn-custom.xml /opt/keycloak/conf -COPY ./configuration/keycloak.conf /opt/keycloak/conf +COPY ./configuration/24/keycloak.conf /opt/keycloak/conf -COPY ./configuration/quarkus.properties /opt/keycloak/conf +COPY ./configuration/24/quarkus.properties /opt/keycloak/conf # change these values to point to a running postgres instance ENTRYPOINT ["/opt/keycloak/bin/kc.sh"] diff --git a/docker/keycloak/configuration/22.0/cache-ispn-custom.xml b/docker/keycloak/configuration/22/cache-ispn-custom.xml similarity index 100% rename from docker/keycloak/configuration/22.0/cache-ispn-custom.xml rename to docker/keycloak/configuration/22/cache-ispn-custom.xml diff --git a/docker/keycloak/configuration/22.0/keycloak.conf b/docker/keycloak/configuration/22/keycloak.conf similarity index 100% rename from docker/keycloak/configuration/22.0/keycloak.conf rename to docker/keycloak/configuration/22/keycloak.conf diff --git a/docker/keycloak/configuration/22.0/quarkus.properties b/docker/keycloak/configuration/22/quarkus.properties similarity index 100% rename from docker/keycloak/configuration/22.0/quarkus.properties rename to docker/keycloak/configuration/22/quarkus.properties diff --git a/docker/keycloak/configuration/24/keycloak.conf b/docker/keycloak/configuration/24/keycloak.conf new file mode 100644 index 00000000..1df1ba32 --- /dev/null +++ b/docker/keycloak/configuration/24/keycloak.conf @@ -0,0 +1,37 @@ +health-enabled=true +metrics-enabled=true + +# database +db-pool-min-size=5 +db-pool-max-size=20 + +# theme +spi-theme-static-max-age=2592000 +spi-theme-cache-themes=true +spi-theme-cache-templates=true + +# logging +log=console,file +log-console-color=false +log-file=/var/log/eap/${HOSTNAME}.log + +# root-logger-level:INFO +log-level=info,com.arjuna:warn,io.jaegertracing.Configuration:warn,org.jboss.as.config:debug,org.keycloak.events:debug,sun.rmi:warn +log-console-output=json +log-file-output=json + +# SPIs +spi-login-protocol-openid-connect-legacy-logout-redirect-uri=true + +# cache +cache=ispn +# DNS_PING is particularly useful in environments like Kubernetes and Red Hat OpenShift where UDP multicast, a different cluster discovery method, might not be available. This is because DNS is a standard service that's always available, making DNS_PING a reliable way for Infinispan nodes to discover each other. +# The below option requires passing -Djgroups.dns.query=sso-keycloak-ping..svc.cluster.local to start command +cache-stack=kubernetes +#cache-config-file=cache-ispn-custom.xml + +# tls +# https-key-store-file=server.keystore +# https-key-store-password=password + +proxy-headers=forwarded|xforwarded diff --git a/docker/keycloak/configuration/24/quarkus.properties b/docker/keycloak/configuration/24/quarkus.properties new file mode 100644 index 00000000..f27a0b14 --- /dev/null +++ b/docker/keycloak/configuration/24/quarkus.properties @@ -0,0 +1,10 @@ +quarkus.log.console.json.exception-output-type=formatted +quarkus.log.console.json.key-overrides=timestamp=@timestamp +quarkus.log.console.json.additional-field."@version".value=1 +quarkus.log.file.json.exception-output-type=formatted +quarkus.log.file.json.key-overrides=timestamp=@timestamp +quarkus.log.file.json.additional-field."@version".value=1 +quarkus.log.file.rotation.file-suffix=.yyyy-MM-dd +# Optional: Disable rotation by size (adjust value as needed) +quarkus.log.handler.file.rotation.max-file-size="10000M" +quarkus.log.handler.file.rotation.max-backup-index="100" diff --git a/docker/keycloak/extensions-24/.vscode/settings.json b/docker/keycloak/extensions-24/.vscode/settings.json new file mode 100644 index 00000000..385f27a2 --- /dev/null +++ b/docker/keycloak/extensions-24/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "interactive" +} diff --git a/docker/keycloak/extensions-24.0.2/pom.xml b/docker/keycloak/extensions-24/pom.xml similarity index 95% rename from docker/keycloak/extensions-24.0.2/pom.xml rename to docker/keycloak/extensions-24/pom.xml index de7db07b..a7894c02 100644 --- a/docker/keycloak/extensions-24.0.2/pom.xml +++ b/docker/keycloak/extensions-24/pom.xml @@ -11,7 +11,7 @@ 17 17 UTF-8 - 22.0.0 + 24.0.3 diff --git a/docker/keycloak/extensions-24.0.2/services/pom.xml b/docker/keycloak/extensions-24/services/pom.xml similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/pom.xml rename to docker/keycloak/extensions-24/services/pom.xml diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/BrokeredIdentityContext.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/BrokeredIdentityContext.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/BrokeredIdentityContext.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/BrokeredIdentityContext.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginAuthenticator.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginAuthenticator.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginAuthenticator.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginAuthenticator.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginAuthenticatorFactory.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginAuthenticatorFactory.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginAuthenticatorFactory.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginAuthenticatorFactory.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginRoleBinding.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginRoleBinding.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginRoleBinding.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginRoleBinding.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginRoleBindingFactory.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginRoleBindingFactory.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginRoleBindingFactory.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/ClientLoginRoleBindingFactory.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/CookieStopAuthenticator.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/CookieStopAuthenticator.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/CookieStopAuthenticator.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/CookieStopAuthenticator.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/CookieStopAuthenticatorFactory.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/CookieStopAuthenticatorFactory.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/CookieStopAuthenticatorFactory.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/CookieStopAuthenticatorFactory.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/IdentityProviderStopAuthenticator.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/IdentityProviderStopAuthenticator.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/IdentityProviderStopAuthenticator.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/IdentityProviderStopAuthenticator.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/IdentityProviderStopAuthenticatorFactory.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/IdentityProviderStopAuthenticatorFactory.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/IdentityProviderStopAuthenticatorFactory.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/IdentityProviderStopAuthenticatorFactory.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/UserAttributeAuthenticator.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/UserAttributeAuthenticator.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/UserAttributeAuthenticator.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/UserAttributeAuthenticator.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/UserAttributeAuthenticatorFactory.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/UserAttributeAuthenticatorFactory.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/UserAttributeAuthenticatorFactory.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/UserAttributeAuthenticatorFactory.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/broker/IdpDeleteUserIfDuplicateAuthenticator.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/broker/IdpDeleteUserIfDuplicateAuthenticator.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/broker/IdpDeleteUserIfDuplicateAuthenticator.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/broker/IdpDeleteUserIfDuplicateAuthenticator.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/broker/IdpDeleteUserIfDuplicateAuthenticatorFactory.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/broker/IdpDeleteUserIfDuplicateAuthenticatorFactory.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/broker/IdpDeleteUserIfDuplicateAuthenticatorFactory.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/broker/IdpDeleteUserIfDuplicateAuthenticatorFactory.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/browser/IdentityProviderStopForm.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/browser/IdentityProviderStopForm.java similarity index 88% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/browser/IdentityProviderStopForm.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/browser/IdentityProviderStopForm.java index 06ccd333..22f38178 100644 --- a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/browser/IdentityProviderStopForm.java +++ b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/browser/IdentityProviderStopForm.java @@ -2,9 +2,10 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; + +import jakarta.ws.rs.core.MultivaluedHashMap; import jakarta.ws.rs.core.MultivaluedMap; import jakarta.ws.rs.core.Response; -import org.jboss.resteasy.specimpl.MultivaluedMapImpl; import org.keycloak.authentication.AuthenticationFlowContext; import org.keycloak.authentication.authenticators.browser.AbstractUsernameFormAuthenticator; import org.keycloak.forms.login.LoginFormsProvider; @@ -28,8 +29,7 @@ public void action(AuthenticationFlowContext context) { @Override public void authenticate(AuthenticationFlowContext context) { List realmIdps = context.getRealm().getIdentityProvidersStream().toList(); - Map scopes = - context.getAuthenticationSession().getClient().getClientScopes(true); + Map scopes = context.getAuthenticationSession().getClient().getClientScopes(true); Map> idpContext = new HashMap<>(); @@ -50,7 +50,7 @@ public void authenticate(AuthenticationFlowContext context) { } } - MultivaluedMap formData = new MultivaluedMapImpl<>(); + MultivaluedMap formData = new MultivaluedHashMap<>(); ObjectMapper objectMapper = new ObjectMapper(); try { @@ -75,7 +75,8 @@ protected Response challenge( AuthenticationFlowContext context, MultivaluedMap formData) { LoginFormsProvider forms = context.form(); - if (formData.size() > 0) forms.setFormData(formData); + if (formData.size() > 0) + forms.setFormData(formData); return forms.createLoginUsernamePassword(); } @@ -92,5 +93,6 @@ public void setRequiredActions(KeycloakSession session, RealmModel realm, UserMo } @Override - public void close() { /* This is ok */ } + public void close() { + /* This is ok */ } } diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/browser/IdentityProviderStopFormFactory.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/browser/IdentityProviderStopFormFactory.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/authenticators/browser/IdentityProviderStopFormFactory.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/authenticators/browser/IdentityProviderStopFormFactory.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/CustomOIDCIdentityProvider.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/CustomOIDCIdentityProvider.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/CustomOIDCIdentityProvider.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/CustomOIDCIdentityProvider.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/CustomOIDCIdentityProviderFactory.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/CustomOIDCIdentityProviderFactory.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/CustomOIDCIdentityProviderFactory.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/CustomOIDCIdentityProviderFactory.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/OverrideOIDCIdentityProvider.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/OverrideOIDCIdentityProvider.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/OverrideOIDCIdentityProvider.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/OverrideOIDCIdentityProvider.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/OverrideOIDCIdentityProviderFactory.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/OverrideOIDCIdentityProviderFactory.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/OverrideOIDCIdentityProviderFactory.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/broker/oidc/OverrideOIDCIdentityProviderFactory.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/protocol/oidc/ext/endpoints/LegacyEndpoint.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/protocol/oidc/ext/endpoints/LegacyEndpoint.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/protocol/oidc/ext/endpoints/LegacyEndpoint.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/protocol/oidc/ext/endpoints/LegacyEndpoint.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/protocol/oidc/mappers/ClaimOmitterMapper.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/protocol/oidc/mappers/ClaimOmitterMapper.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/protocol/oidc/mappers/ClaimOmitterMapper.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/protocol/oidc/mappers/ClaimOmitterMapper.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/protocol/oidc/mappers/IDPUserinfoMapper.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/protocol/oidc/mappers/IDPUserinfoMapper.java similarity index 60% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/protocol/oidc/mappers/IDPUserinfoMapper.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/protocol/oidc/mappers/IDPUserinfoMapper.java index c4967adf..a2dad9e7 100644 --- a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/protocol/oidc/mappers/IDPUserinfoMapper.java +++ b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/protocol/oidc/mappers/IDPUserinfoMapper.java @@ -16,6 +16,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Base64; /** @author Junmin Ahn */ public class IDPUserinfoMapper extends AbstractOIDCProtocolMapper @@ -23,11 +24,22 @@ public class IDPUserinfoMapper extends AbstractOIDCProtocolMapper private static final Logger logger = Logger.getLogger(IDPUserinfoMapper.class); - private static final List configProperties = new ArrayList<>(); + private static final String BEARER = "Bearer"; + + private static final List configProperties = new ArrayList(); public static final String CLAIM_VALUE = "claim.value"; + public static final String USER_ATTRIBUTE = "userAttribute"; + + public static final String DECODE_USERINFO_RESPONSE = "decodeUserInfoResponse"; + static { + configProperties.add(new ProviderConfigProperty(DECODE_USERINFO_RESPONSE, "Decode UserInfo Response", + "Decode response returned from IDP userinfo endpoint", ProviderConfigProperty.BOOLEAN_TYPE, false)); + configProperties.add(new ProviderConfigProperty(USER_ATTRIBUTE, "User Attribute", + "User Attribute returned from IDP userinfo endpoint", ProviderConfigProperty.STRING_TYPE, null)); + OIDCAttributeMapperHelper.addTokenClaimNameConfig(configProperties); OIDCAttributeMapperHelper.addIncludeInTokensConfig(configProperties, IDPUserinfoMapper.class); } @@ -74,6 +86,17 @@ private static JsonNode parseJson(String json) { } } + private static String decodeUserInfoResponse(String token) { + try { + String[] tokenParts = token.split("\\."); + Base64.Decoder decoder = Base64.getUrlDecoder(); + String payload = new String(decoder.decode(tokenParts[1])); + return payload; + } catch (Exception e) { + return null; + } + } + @Override protected void setClaim( IDToken token, @@ -91,22 +114,34 @@ protected void setClaim( String userInfoUrl = identityProviderModel.getConfig().get("userInfoUrl"); if (userInfoUrl != null) { - FederatedIdentityModel identity = - keycloakSession.users().getFederatedIdentity(realm, userSession.getUser(), idp); + FederatedIdentityModel identity = keycloakSession.users().getFederatedIdentity(realm, userSession.getUser(), + idp); String brokerToken = identity.getToken(); AccessTokenResponse brokerAccessToken = parseTokenString(brokerToken); Client httpClient = ClientBuilder.newClient(); - String userinfoString = - httpClient - .target(userInfoUrl) - .request() - .header("Authorization", "Bearer " + brokerAccessToken.getToken()) - .get(String.class); - - JsonNode jsonNode = parseJson(userinfoString); - Map otherClaims = token.getOtherClaims(); - otherClaims.put( - mappingModel.getConfig().get(OIDCAttributeMapperHelper.TOKEN_CLAIM_NAME), jsonNode); + String userinfoString = httpClient + .target(userInfoUrl) + .request() + .header("Authorization", "Bearer " + brokerAccessToken.getToken()) + .get(String.class); + boolean decode = Boolean.parseBoolean(mappingModel.getConfig().get(DECODE_USERINFO_RESPONSE)); + if (decode) { + userinfoString = decodeUserInfoResponse(userinfoString); + } + try { + JsonNode jsonNode = parseJson(userinfoString); + if (jsonNode == null) { + logger.error("null response returned from [" + idp + "] userinfo URL"); + } + Map otherClaims = token.getOtherClaims(); + otherClaims.put( + mappingModel.getConfig().get(OIDCAttributeMapperHelper.TOKEN_CLAIM_NAME), + jsonNode.get(mappingModel.getConfig().get(OIDCAttributeMapperHelper.TOKEN_CLAIM_NAME))); + } catch (NullPointerException e) { + logger.errorf("'%s' returned invalid response", idp); + } catch (Exception e) { + logger.errorf("unable to fetch attributes from userinfo endpoint '%s'", userInfoUrl); + } } else { logger.error("Identity Provider [" + idp + "] does not have userinfo URL."); } @@ -123,8 +158,10 @@ public static ProtocolMapperModel create( mapper.setProtocol(OIDCLoginProtocol.LOGIN_PROTOCOL); Map config = new HashMap<>(); config.put(OIDCAttributeMapperHelper.TOKEN_CLAIM_NAME, tokenClaimName); - if (accessToken) config.put(OIDCAttributeMapperHelper.INCLUDE_IN_ACCESS_TOKEN, "true"); - if (idToken) config.put(OIDCAttributeMapperHelper.INCLUDE_IN_ID_TOKEN, "true"); + if (accessToken) + config.put(OIDCAttributeMapperHelper.INCLUDE_IN_ACCESS_TOKEN, "true"); + if (idToken) + config.put(OIDCAttributeMapperHelper.INCLUDE_IN_ID_TOKEN, "true"); mapper.setConfig(config); return mapper; } diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/protocol/saml/mappers/ClientRoleListMapper.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/protocol/saml/mappers/ClientRoleListMapper.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/protocol/saml/mappers/ClientRoleListMapper.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/protocol/saml/mappers/ClientRoleListMapper.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/protocol/saml/mappers/StatementAttributeOmitterMapper.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/protocol/saml/mappers/StatementAttributeOmitterMapper.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/protocol/saml/mappers/StatementAttributeOmitterMapper.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/protocol/saml/mappers/StatementAttributeOmitterMapper.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/social/github/CustomGitHubIdentityProvider.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/social/github/CustomGitHubIdentityProvider.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/social/github/CustomGitHubIdentityProvider.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/social/github/CustomGitHubIdentityProvider.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/social/github/CustomGitHubIdentityProviderFactory.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/social/github/CustomGitHubIdentityProviderFactory.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/social/github/CustomGitHubIdentityProviderFactory.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/social/github/CustomGitHubIdentityProviderFactory.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/social/github/CustomGitHubUserAttributeMapper.java b/docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/social/github/CustomGitHubUserAttributeMapper.java similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/java/com/github/bcgov/keycloak/social/github/CustomGitHubUserAttributeMapper.java rename to docker/keycloak/extensions-24/services/src/main/java/com/github/bcgov/keycloak/social/github/CustomGitHubUserAttributeMapper.java diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/resources/META-INF/jboss-deployment-structure.xml b/docker/keycloak/extensions-24/services/src/main/resources/META-INF/jboss-deployment-structure.xml similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/resources/META-INF/jboss-deployment-structure.xml rename to docker/keycloak/extensions-24/services/src/main/resources/META-INF/jboss-deployment-structure.xml diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/resources/META-INF/services/org.keycloak.authentication.AuthenticatorFactory b/docker/keycloak/extensions-24/services/src/main/resources/META-INF/services/org.keycloak.authentication.AuthenticatorFactory similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/resources/META-INF/services/org.keycloak.authentication.AuthenticatorFactory rename to docker/keycloak/extensions-24/services/src/main/resources/META-INF/services/org.keycloak.authentication.AuthenticatorFactory diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/resources/META-INF/services/org.keycloak.broker.provider.IdentityProviderFactory b/docker/keycloak/extensions-24/services/src/main/resources/META-INF/services/org.keycloak.broker.provider.IdentityProviderFactory similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/resources/META-INF/services/org.keycloak.broker.provider.IdentityProviderFactory rename to docker/keycloak/extensions-24/services/src/main/resources/META-INF/services/org.keycloak.broker.provider.IdentityProviderFactory diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/resources/META-INF/services/org.keycloak.broker.provider.IdentityProviderMapper b/docker/keycloak/extensions-24/services/src/main/resources/META-INF/services/org.keycloak.broker.provider.IdentityProviderMapper similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/resources/META-INF/services/org.keycloak.broker.provider.IdentityProviderMapper rename to docker/keycloak/extensions-24/services/src/main/resources/META-INF/services/org.keycloak.broker.provider.IdentityProviderMapper diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/resources/META-INF/services/org.keycloak.broker.social.SocialIdentityProviderFactory b/docker/keycloak/extensions-24/services/src/main/resources/META-INF/services/org.keycloak.broker.social.SocialIdentityProviderFactory similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/resources/META-INF/services/org.keycloak.broker.social.SocialIdentityProviderFactory rename to docker/keycloak/extensions-24/services/src/main/resources/META-INF/services/org.keycloak.broker.social.SocialIdentityProviderFactory diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/resources/META-INF/services/org.keycloak.protocol.ProtocolMapper b/docker/keycloak/extensions-24/services/src/main/resources/META-INF/services/org.keycloak.protocol.ProtocolMapper similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/resources/META-INF/services/org.keycloak.protocol.ProtocolMapper rename to docker/keycloak/extensions-24/services/src/main/resources/META-INF/services/org.keycloak.protocol.ProtocolMapper diff --git a/docker/keycloak/extensions-24.0.2/services/src/main/resources/META-INF/services/org.keycloak.protocol.oidc.ext.OIDCExtProviderFactory b/docker/keycloak/extensions-24/services/src/main/resources/META-INF/services/org.keycloak.protocol.oidc.ext.OIDCExtProviderFactory similarity index 100% rename from docker/keycloak/extensions-24.0.2/services/src/main/resources/META-INF/services/org.keycloak.protocol.oidc.ext.OIDCExtProviderFactory rename to docker/keycloak/extensions-24/services/src/main/resources/META-INF/services/org.keycloak.protocol.oidc.ext.OIDCExtProviderFactory diff --git a/docker/keycloak/extensions-24.0.2/themes/pom.xml b/docker/keycloak/extensions-24/themes/pom.xml similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/pom.xml rename to docker/keycloak/extensions-24/themes/pom.xml diff --git a/docker/keycloak/extensions-24.0.2/themes/src/assembly/bin.xml b/docker/keycloak/extensions-24/themes/src/assembly/bin.xml similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/assembly/bin.xml rename to docker/keycloak/extensions-24/themes/src/assembly/bin.xml diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/META-INF/keycloak-themes.json b/docker/keycloak/extensions-24/themes/src/main/resources/META-INF/keycloak-themes.json similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/META-INF/keycloak-themes.json rename to docker/keycloak/extensions-24/themes/src/main/resources/META-INF/keycloak-themes.json diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-github-custom-ext.html b/docker/keycloak/extensions-24/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-github-custom-ext.html similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-github-custom-ext.html rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-github-custom-ext.html diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-github-custom.html b/docker/keycloak/extensions-24/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-github-custom.html similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-github-custom.html rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-github-custom.html diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-keycloak-oidc-ext.html b/docker/keycloak/extensions-24/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-keycloak-oidc-ext.html similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-keycloak-oidc-ext.html rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-keycloak-oidc-ext.html diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-base.html b/docker/keycloak/extensions-24/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-base.html similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-base.html rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-base.html diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-custom-ext.html b/docker/keycloak/extensions-24/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-custom-ext.html similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-custom-ext.html rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-custom-ext.html diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-custom.html b/docker/keycloak/extensions-24/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-custom.html similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-custom.html rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-custom.html diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-ext.html b/docker/keycloak/extensions-24/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-ext.html similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-ext.html rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc-ext.html diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc.html b/docker/keycloak/extensions-24/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc.html similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc.html rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/base/admin/resources/partials/realm-identity-provider-oidc.html diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov-idp-login-no-brand/login/theme.properties b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov-idp-login-no-brand/login/theme.properties similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov-idp-login-no-brand/login/theme.properties rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov-idp-login-no-brand/login/theme.properties diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov-idp-login/login/login.ftl b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov-idp-login/login/login.ftl similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov-idp-login/login/login.ftl rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov-idp-login/login/login.ftl diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov-idp-login/login/theme.properties b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov-idp-login/login/theme.properties similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov-idp-login/login/theme.properties rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov-idp-login/login/theme.properties diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov-idp-stopper-no-header-title/login/theme.properties b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov-idp-stopper-no-header-title/login/theme.properties similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov-idp-stopper-no-header-title/login/theme.properties rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov-idp-stopper-no-header-title/login/theme.properties diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov-idp-stopper/login/login-original.ftl b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov-idp-stopper/login/login-original.ftl similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov-idp-stopper/login/login-original.ftl rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov-idp-stopper/login/login-original.ftl diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov-idp-stopper/login/login.ftl b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov-idp-stopper/login/login.ftl similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov-idp-stopper/login/login.ftl rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov-idp-stopper/login/login.ftl diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov-idp-stopper/login/theme.properties b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov-idp-stopper/login/theme.properties similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov-idp-stopper/login/theme.properties rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov-idp-stopper/login/theme.properties diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov-no-brand/login/theme.properties b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov-no-brand/login/theme.properties similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov-no-brand/login/theme.properties rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov-no-brand/login/theme.properties diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/email/html/email-verification.ftl b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/email/html/email-verification.ftl similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/email/html/email-verification.ftl rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/email/html/email-verification.ftl diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/email/messages/messages_en.properties b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/email/messages/messages_en.properties similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/email/messages/messages_en.properties rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/email/messages/messages_en.properties diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/email/theme.properties b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/email/theme.properties similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/email/theme.properties rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/email/theme.properties diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/logout-confirm-original.ftl b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/logout-confirm-original.ftl similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/logout-confirm-original.ftl rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/logout-confirm-original.ftl diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/logout-confirm.ftl b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/logout-confirm.ftl similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/logout-confirm.ftl rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/logout-confirm.ftl diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/messages/messages_en.properties b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/messages/messages_en.properties similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/messages/messages_en.properties rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/messages/messages_en.properties diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/resources/css/bcsans-20221128.css b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/resources/css/bcsans-20221128.css similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/resources/css/bcsans-20221128.css rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/resources/css/bcsans-20221128.css diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/resources/css/styles-20221128.css b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/resources/css/styles-20221128.css similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/resources/css/styles-20221128.css rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/resources/css/styles-20221128.css diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-bold.woff b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-bold.woff similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-bold.woff rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-bold.woff diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-bolditalic.woff b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-bolditalic.woff similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-bolditalic.woff rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-bolditalic.woff diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-italic.woff b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-italic.woff similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-italic.woff rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-italic.woff diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-regular.woff b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-regular.woff similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-regular.woff rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/resources/fonts/bcsans-regular.woff diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/resources/img/bcgovlogo.svg b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/resources/img/bcgovlogo.svg similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/resources/img/bcgovlogo.svg rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/resources/img/bcgovlogo.svg diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/resources/img/logo.svg b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/resources/img/logo.svg similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/resources/img/logo.svg rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/resources/img/logo.svg diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/resources/js/script-20221128.js b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/resources/js/script-20221128.js similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/resources/js/script-20221128.js rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/resources/js/script-20221128.js diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/template-original.ftl b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/template-original.ftl similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/template-original.ftl rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/template-original.ftl diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/template.ftl b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/template.ftl similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/template.ftl rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/template.ftl diff --git a/docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/theme.properties b/docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/theme.properties similarity index 100% rename from docker/keycloak/extensions-24.0.2/themes/src/main/resources/theme/bcgov/login/theme.properties rename to docker/keycloak/extensions-24/themes/src/main/resources/theme/bcgov/login/theme.properties