Keycloak Passkey Autofill
Learn how to add passkey autofill using Authsignal with Keycloak.
Overview
Passkey autofill provides an incredibly seamless and secure way for users to sign-in using their passkey.
In the previous guide, we demonstrated how to allow users to enroll a passkey using the pre-built UI.
In this guide, we will show you how to add passkey autofill to your Keycloak sign-in flow using Authsignal. Users will be able to sign-in by simply clicking the input and authenticating with the passkey that they enrolled with the prebuilt UI.
Passkey autofill.
Code example
If you haven’t already added our provider to your Keycloak instance, see our guide on adding the Authsignal Keycloak provider for instructions.
You can find the Keycloak provider code example referenced in this guide on GitHub. For advanced situations, you can modify the provider to meet your specific requirements. However, this provider will work for most use cases.
Authsignal configuration
Setup a custom domain
In the previous guide, we setup a custom domain on Authsignal. If you haven’t done this already, see our guide on setting up a custom domain for instructions.
Local development
To make things easy, we will make a few simple changes to your local development setup so that you can simulate a production environment, locally.
We will use mkcert
to create a local SSL certificate and local-ssl-proxy
to proxy requests to your local Keycloak server.
1. SSL Certificate Setup
brew install mkcert
mkcert -install
mkcert local.your_custom_domain
(e.g. mkcert local.keycloak-demo.authsignallabs.com
)
Take note of the path to the .pem
files that are created as you’ll need them in the next steps.
2. Custom Domain to Local IP Address Mapping
Map your custom domain to your local IP address on your machine by adding the following line to to your hosts
file ( i.e. sudo vim /etc/hosts
)
your_local_ip your_custom_domain
(e.g.0.0.0.0 keycloak-demo.authsignallabs.com
)
This will allow your browser to resolve your custom domain to your local IP address.
3. Run the proxy server
Run the proxy server using local-ssl-proxy which is a tool that enables HTTPS for your local development environment by using SSL certificates. We need to do this, because passkeys only work on https when localhost
is not the host.
4. Run your Keycloak server
In another terminal, run your Keycloak server, specifying the hostname, SSL certificate and SSL certificate key. Learn more about the Keycloak server configuration options.
5. Sign in to your Keycloak server
Open your browser and navigate to https://0.0.0.0:8443
which will redirect you to the admin sign-in page on your proxied https Keycloak server.
Opening the Keycloak admin sign-in page
Changes to your Keycloak configuration
In your Keycloak admin UI, navigate to the Authentication
section and click on your custom flow. Delete the default username and password flow.
Delete the default username and password flow
Click on the Authsignal Authenticator settings and toggle on Enable Passkey Autofill
.
Enable Passkey Autofill
Enable Passkey Autofill
Sign-in UI configuration
We need to add some custom code to the Keycloak sign-in page so that it can use Authsignal’s Browser SDK to handle passkey autofill.
Start by creating a new theme for your Keycloak instance, at the following path: themes/mytheme/login/login.ftl
You can call the theme whatever you want, but for this example, we will call it mytheme
.
Add the following code to the login.ftl
file. This code will allow autofill to work when the user clicks the input.
Create a Javascript file at themes/mytheme/login/resources/js/script.js
and add the following code. This code is also required to allow autofill to work when the user clicks the input.
When you restart your Keycloak server, you will see the new theme in the list of themes. Do this by navigating to the Realm settings
section in the Keycloak admin UI and clicking Themes
.
On the Login theme
line, select mytheme
and click Save
.
Opening the Keycloak admin sign-in page
You can style your theme by adding your own CSS to the themes/mytheme/login/resources/css/styles.css
file.
Navigate back to your sign-in page and you should see the new theme. Passkeys that have been enrolled on your custom domain using the Authsignal prebuilt UI will be available for autofill, provided that the prebuilt UI is running on the same domain.
Passkey autofill.
Conclusion
That’s it! You’ve successfully added passkey autofill to your Keycloak sign-in flow using Authsignal.
Was this page helpful?