Customizing the Keycloak login page
To add a new button with a custom redirect link to Keycloak’s login page, you need to modify the template.ftl file in your custom theme.
The steps below provide a detailed guide on how to achieve this.
This guide is based on Keycloak version 21.1.0.
|
Creating a custom theme
-
Directory structure
-
Create a directory structure for your custom theme, as depicted below.
Directory structurekeycloak-theme/ ├── themes/ ├── custom-theme/ ├── login/ ├── template.ftl ├── messages_en.properties ├── theme.properties ├── resources/ ├── css/ ├── img/ ├── js/
-
-
Copying the default theme
-
You can find the default theme files in the Keycloak server distribution under
themes/keycloak/login. -
Copy the default theme files from the Keycloak distribution to your custom theme directory.
-
-
Editing the
template.ftlfile-
Open the
template.ftlfile in thecustom-theme/logindirectory. This file contains the HTML structure of the login page.
-
Modifying template.ftl to add a new button
-
Locating the
socialProviderssection-
Locate the
socialProviderssection of thetemplate.ftlfile where the form is defined.<#nested "socialProviders">
-
-
Adding the new button
-
Add a new button element below the
socialProviderssection. -
Extend the button to contain a redirect link to the JCR fallback login:
http://localhost:8080/magnoliaAuthor/.magnolia/jcrlogin. -
For example, you can add the following code.
<#nested "socialProviders"> <div id="kc-custom-providers" class="${properties.customAdditionalLoginSectionClass!}"> <hr/> <h4>Or login in with</h4> <a id="magnolia-default-login" class="${properties.customAdditionalLoginButtonClass!}" type="button" href="http://localhost:8080/magnoliaAuthor/.magnolia/jcrlogin"> <span>Magnolia ID</span> </a> </div> <#if displayInfo> ...
-
-
Adding new theme properties
-
Add some new properties to the
theme.propertiesfile that are used in the example code above.## Magnolia login customAdditionalLoginSectionClass=kc-social-section kc-social-gray customAdditionalLoginButtonClass=pf-c-button pf-m-control pf-m-block kc-social-item kc-social-gray
-
Configuring Keycloak to use the custom theme
-
Updating the container
-
Log into the container with its container ID.
docker exec -it <CONTAINER_ID> bin/bash -
Create a directory for your theme in the container.
mkdir /opt/keycloak/themes/custom-theme -
Copy the contents of the theme directory from your local machine to the new directory on the running container.
docker cp custom-theme/. <CONTAINER_ID>:/opt/keycloak/themes/custom-theme -
Restart the container.
docker restart <CONTAINER_ID>
-
-
Starting Keycloak
-
Start the Keycloak container with the updated configuration.
-
-
Setting the custom theme
-
Log into the Keycloak admin console.
-
Go to Realm Settings → Themes.
-
For the Login Theme dropdown, select
custom-theme. -
Save the changes.
-
Verifying your changes
If necessary, restart the Keycloak container and navigate to the login page. You should see the new button with your custom redirect link.

| Download the complete source code for the custom-theme. |