From 988bf9cb0b8a8d1ef7989bfd93ab55f2d9e8dd38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20=C5=81askawiec?= Date: Mon, 18 Aug 2025 17:31:26 +0200 Subject: [PATCH] WelcomeResource do not create temporary admins (#41416) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Sebastian Ɓaskawiec --- .../images/initial-welcome-page.png | Bin 31327 -> 23565 bytes .../topics/changes/changes-26_4_0.adoc | 5 +++++ .../ui-customization/welcome-theme.adoc | 2 +- .../jaxrs/QuarkusKeycloakApplication.java | 2 +- .../org/keycloak/services/ServicesLogger.java | 4 ++++ .../services/managers/ApplianceBootstrap.java | 19 +++++++++++------- .../services/resources/WelcomeResource.java | 7 ++++--- .../tests/welcomepage/WelcomePageTest.java | 6 +++--- .../undertow/KeycloakOnUndertow.java | 2 +- .../testsuite/auth/page/WelcomePage.java | 5 ++--- .../keycloak/testsuite/KeycloakServer.java | 2 +- .../theme/keycloak/welcome/index.ftl | 8 ++++---- 12 files changed, 38 insertions(+), 24 deletions(-) diff --git a/docs/documentation/server_admin/images/initial-welcome-page.png b/docs/documentation/server_admin/images/initial-welcome-page.png index 5338f5a7c9c747be4e8e6ece6a403a9ac22109f0..c9881bc728ec45625f3fdee7ac05647a268829c4 100644 GIT binary patch literal 23565 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 literal 31327 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 diff --git a/docs/documentation/upgrading/topics/changes/changes-26_4_0.adoc b/docs/documentation/upgrading/topics/changes/changes-26_4_0.adoc index cc9abe69ac9..8b8940ba67c 100644 --- a/docs/documentation/upgrading/topics/changes/changes-26_4_0.adoc +++ b/docs/documentation/upgrading/topics/changes/changes-26_4_0.adoc @@ -177,6 +177,11 @@ Configuration of the default cache configurations in `conf/cache-ispn.xml`, or i In a future major release, the start-up will fail if default cache configurations are stated in those files and the option is not specified. + +=== Welcome Page changes + +The Welcome Page creates regular Admin users instead of temporary ones. + // ------------------------ Removed features ------------------------ // == Removed features diff --git a/docs/guides/ui-customization/welcome-theme.adoc b/docs/guides/ui-customization/welcome-theme.adoc index 473fddfe6c2..7226dc3f25e 100644 --- a/docs/guides/ui-customization/welcome-theme.adoc +++ b/docs/guides/ui-customization/welcome-theme.adoc @@ -8,7 +8,7 @@ summary="Learn how to customize the welcome theme."> The welcome theme is the web page that is served when you request the default page from the {project_name} server. For instance, if your server is deployed on your local machine at port 8080, http://localhost:8080 serves the welcome theme. -By default, the welcome theme is only used to create the initial temporary admin user. Once that user is created, whenever users navigate to the welcome theme, they are redirected to the Admin Console. However, this behavior can be changed and the welcome theme can be completely customized or replaced. +By default, the welcome theme is only used during the initial setup to create the first admin user. Once an initial admin exists, navigating to the welcome page redirects to the Admin Console. However, this behavior can be changed and the welcome theme can be completely customized or replaced. Since the welcome theme is not associated with a realm, it cannot be selected in the admin console like other themes. diff --git a/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/integration/jaxrs/QuarkusKeycloakApplication.java b/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/integration/jaxrs/QuarkusKeycloakApplication.java index 85d6a296f8d..dff9f7e2a07 100644 --- a/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/integration/jaxrs/QuarkusKeycloakApplication.java +++ b/quarkus/runtime/src/main/java/org/keycloak/quarkus/runtime/integration/jaxrs/QuarkusKeycloakApplication.java @@ -103,7 +103,7 @@ public class QuarkusKeycloakApplication extends KeycloakApplication { } public boolean createTemporaryMasterRealmAdminUser(String adminUserName, String adminPassword, /*Integer adminExpiration,*/ KeycloakSession session) { - return new ApplianceBootstrap(session).createTemporaryMasterRealmAdminUser(adminUserName, adminPassword /*, adminExpiration*/, false); + return new ApplianceBootstrap(session).createMasterRealmAdminUser(adminUserName, adminPassword, true /*, adminExpiration*/, false); } public boolean createTemporaryMasterRealmAdminService(String clientId, String clientSecret, /*Integer adminExpiration,*/ KeycloakSession session) { diff --git a/services/src/main/java/org/keycloak/services/ServicesLogger.java b/services/src/main/java/org/keycloak/services/ServicesLogger.java index f4cc2260c16..e6a47b6f3a6 100644 --- a/services/src/main/java/org/keycloak/services/ServicesLogger.java +++ b/services/src/main/java/org/keycloak/services/ServicesLogger.java @@ -469,4 +469,8 @@ public interface ServicesLogger extends BasicLogger { @Message(id=110, value="Environment variable '%s' is deprecated, use '%s' instead") void usingDeprecatedEnvironmentVariable(String deprecated, String supported); + @LogMessage(level = INFO) + @Message(id=111, value="Created initial admin user with username %s") + void createdInitialAdminUser(String userName); + } diff --git a/services/src/main/java/org/keycloak/services/managers/ApplianceBootstrap.java b/services/src/main/java/org/keycloak/services/managers/ApplianceBootstrap.java index 3bab2d2c745..7b920319ca0 100755 --- a/services/src/main/java/org/keycloak/services/managers/ApplianceBootstrap.java +++ b/services/src/main/java/org/keycloak/services/managers/ApplianceBootstrap.java @@ -121,7 +121,7 @@ public class ApplianceBootstrap { * @param initialUser if true only create the user if no other users exist * @return false if the user could not be created */ - public boolean createTemporaryMasterRealmAdminUser(String username, String password, /*Integer expriationMinutes,*/ boolean initialUser) { + public boolean createMasterRealmAdminUser(String username, String password, boolean isTemporary, /*Integer expriationMinutes,*/ boolean initialUser) { RealmModel realm = session.realms().getRealmByName(Config.getAdminRealm()); session.getContext().setRealm(realm); @@ -136,8 +136,10 @@ public class ApplianceBootstrap { try { UserModel adminUser = session.users().addUser(realm, username); adminUser.setEnabled(true); - adminUser.setSingleAttribute(IS_TEMP_ADMIN_ATTR_NAME, Boolean.TRUE.toString()); - // also set the expiration - could be relative to a creation timestamp, or computed + if (isTemporary) { + adminUser.setSingleAttribute(IS_TEMP_ADMIN_ATTR_NAME, Boolean.TRUE.toString()); + // also set the expiration - could be relative to a creation timestamp, or computed + } UserCredentialModel usrCredModel = UserCredentialModel.password(password); adminUser.credentialManager().updateCredential(usrCredModel); @@ -145,7 +147,10 @@ public class ApplianceBootstrap { RoleModel adminRole = realm.getRole(AdminRoles.ADMIN); adminUser.grantRole(adminRole); - ServicesLogger.LOGGER.createdTemporaryAdminUser(username); + if (isTemporary) + ServicesLogger.LOGGER.createdTemporaryAdminUser(username); + else + ServicesLogger.LOGGER.createdInitialAdminUser(username); } catch (ModelDuplicateException e) { ServicesLogger.LOGGER.addUserFailedUserExists(username, Config.getAdminRealm()); return false; @@ -155,7 +160,7 @@ public class ApplianceBootstrap { /** * Create a temporary admin service account - * @param clientId the client ID + * @param clientId the client ID * @param clientSecret the client secret * @return false if the service account could not be created */ @@ -194,8 +199,8 @@ public class ApplianceBootstrap { return true; } - public void createMasterRealmUser(String username, String password) { - createTemporaryMasterRealmAdminUser(username, password, true); + public void createMasterRealmUser(String username, String password, boolean isTemporary) { + createMasterRealmAdminUser(username, password, isTemporary, true); } } diff --git a/services/src/main/java/org/keycloak/services/resources/WelcomeResource.java b/services/src/main/java/org/keycloak/services/resources/WelcomeResource.java index 1cf1d128834..681a85757db 100755 --- a/services/src/main/java/org/keycloak/services/resources/WelcomeResource.java +++ b/services/src/main/java/org/keycloak/services/resources/WelcomeResource.java @@ -39,6 +39,8 @@ import org.keycloak.common.Version; import org.keycloak.common.util.Base64Url; import org.keycloak.common.util.MimeTypeUtil; import org.keycloak.common.util.SecretGenerator; +import org.keycloak.common.util.SystemEnvProperties; +import org.keycloak.config.BootstrapAdminOptions; import org.keycloak.cookie.CookieProvider; import org.keycloak.cookie.CookieType; import org.keycloak.http.HttpRequest; @@ -133,9 +135,10 @@ public class WelcomeResource { return createWelcomePage(null, "Password and confirmation doesn't match"); } + try { ApplianceBootstrap applianceBootstrap = new ApplianceBootstrap(session); - applianceBootstrap.createMasterRealmUser(username, password); + applianceBootstrap.createMasterRealmUser(username, password, false); } catch (ModelException e) { session.getTransactionManager().rollback(); logger.error("Error creating the administrative user", e); @@ -145,7 +148,6 @@ public class WelcomeResource { expireCsrfCookie(); shouldBootstrap.set(false); - ServicesLogger.LOGGER.createdTemporaryAdminUser(username); return createWelcomePage("User created", null); } } @@ -301,5 +303,4 @@ public class WelcomeResource { throw new ForbiddenException(); } } - } diff --git a/tests/base/src/test/java/org/keycloak/tests/welcomepage/WelcomePageTest.java b/tests/base/src/test/java/org/keycloak/tests/welcomepage/WelcomePageTest.java index b215a427f8a..fce7e2c2934 100644 --- a/tests/base/src/test/java/org/keycloak/tests/welcomepage/WelcomePageTest.java +++ b/tests/base/src/test/java/org/keycloak/tests/welcomepage/WelcomePageTest.java @@ -53,8 +53,8 @@ public class WelcomePageTest { welcomePage.navigateTo(); - Assertions.assertEquals("Create a temporary administrative user", welcomePage.getWelcomeMessage()); - Assertions.assertTrue(welcomePage.getWelcomeDescription().startsWith("To get started with Keycloak, you first create a temporary administrative user")); + Assertions.assertEquals("Create an administrative user", welcomePage.getWelcomeMessage()); + Assertions.assertTrue(welcomePage.getWelcomeDescription().startsWith("To get started with Keycloak, you first create an administrative user")); Assertions.assertTrue(driver.getPageSource().contains("form")); } @@ -64,7 +64,7 @@ public class WelcomePageTest { driver.get(getPublicServerUrl().toString()); Assertions.assertEquals("Local access required", welcomePage.getWelcomeMessage()); - Assertions.assertTrue(welcomePage.getWelcomeDescription().startsWith("You will need local access to create the temporary administrative user.")); + Assertions.assertTrue(welcomePage.getWelcomeDescription().startsWith("You will need local access to create the administrative user.")); Assertions.assertFalse(driver.getPageSource().contains("form")); } diff --git a/testsuite/integration-arquillian/servers/auth-server/undertow/src/main/java/org/keycloak/testsuite/arquillian/undertow/KeycloakOnUndertow.java b/testsuite/integration-arquillian/servers/auth-server/undertow/src/main/java/org/keycloak/testsuite/arquillian/undertow/KeycloakOnUndertow.java index 0eadcec74e9..b3c11258675 100644 --- a/testsuite/integration-arquillian/servers/auth-server/undertow/src/main/java/org/keycloak/testsuite/arquillian/undertow/KeycloakOnUndertow.java +++ b/testsuite/integration-arquillian/servers/auth-server/undertow/src/main/java/org/keycloak/testsuite/arquillian/undertow/KeycloakOnUndertow.java @@ -226,7 +226,7 @@ public class KeycloakOnUndertow implements DeployableContainer <#else> -

To create the temporary administrative user, access the Administration Console over localhost, or use a bootstrap-admin command.

+

To create the administrative user, access the Administration Console over localhost, or use a bootstrap-admin command.