Passkeys and MFA with Keycloak: going passwordless in your customer portal

Passkeys replace the password with a phishing-resistant login via fingerprint or PIN β€” and Keycloak has supported them officially since version 26.4. This article shows you as a decision-maker how passkeys work, which MFA options Keycloak ships with (OTP, WebAuthn, recovery codes), which tiered model makes sense per user group, and where rollouts stall in practice: fallback, device changes, acceptance.
8 min readMatthias RadscheitMatthias Radscheit
Happycodingen-US

TL;DR

Passkeys replace the password with a phishing-resistant login via fingerprint or PIN β€” and Keycloak has supported them officially since version 26.4. This article shows you as a decision-maker how passkeys work, which MFA options Keycloak ships with (OTP, WebAuthn, recovery codes), which tiered model makes sense per user group, and where rollouts stall in practice: fallback, device changes, acceptance.

  • Passkeys have been officially supported in Keycloak since version 26.4 (September 2025) β€” no longer a preview feature; version 26.7 improved compatibility with common password managers.
  • Passkeys are phishing-resistant: the secret key never leaves the device and only answers the real portal domain β€” phishable codes and passwords disappear.
  • Keycloak ships the full MFA lineup at no extra cost: OTP (TOTP/HOTP), WebAuthn as a second factor, passwordless login, and recovery codes.
  • A tiered model instead of a cutover date: portal customers opt in voluntarily, the back office gets mandatory MFA, admins get device-bound hardware keys plus recovery codes.
  • A rollout is a migration: keep the password as fallback, make recovery-code registration mandatory, measure adoption β€” only then withdraw the password.

Your B2B portal can be built with all the care in the world β€” the passwords of your users are not. The FIDO Alliance attributes around 80 percent of all data breaches to passwords: harvested through phishing mails, reused across dozens of services, tried out at scale via credential stuffing. A customer portal inherits this risk with every single login field.

Add a quiet cost block: the password reset. Gartner has estimated for years that 20 to 50 percent of all helpdesk calls stem from forgotten passwords; Forrester put the cost for large organizations at around 70 US dollars per reset. Even if your numbers are lower: every reset is a customer who, at that moment, is waiting instead of ordering.

And phishing stopped targeting only large corporations long ago: fake portal logins are a standard tool in attacks on mid-sized companies, and stolen B2B credentials are actively traded. A password field in your customer portal remains a permanently open entry point β€” no matter how well the rest of the application is hardened.

For exactly this problem there is now an industry standard: passkeys. If your portal runs on Keycloak, you already own the required technology. This article answers three questions: What are passkeys? What can Keycloak do as of September 2026? And what does a tiered model look like that brings your user groups along instead of overwhelming them?

What are passkeys? The explanation without a crypto lecture

A passkey is a passwordless login: instead of a string of characters someone has to know and keep secret, the user's device holds a cryptographic key. At login, users confirm the same way they unlock their smartphone β€” fingerprint, face recognition, or PIN. Under the hood sit WebAuthn, a W3C standard since 2019, plus the FIDO2 specifications of the FIDO Alliance.

The core difference to a password: there is nothing left for an attacker to steal. The secret key never leaves the device, and it only answers the domain it was created for. A deceptively real phishing copy of your portal runs into a void. That is why passkeys count as phishing-resistant β€” not merely phishing-hindering like an SMS or app code.

One point matters for perspective: a passkey is not just more convenient, it is already multi-factor at its core. The device is the possession factor; unlocking it via biometrics or PIN is the second. Passwordless login does not abolish MFA β€” it folds it into a single gesture.

You should know two variants. Synced passkeys live in the user's keychain (iCloud Keychain, Google Password Manager, 1Password) and travel to new devices automatically. Device-bound passkeys sit in hardware keys such as a YubiKey and never leave them. The former are the convenient choice for portal customers, the latter the hard currency for admin access.

On adoption: in a 2024 FIDO survey, 53 percent of respondents said they had activated passkeys on at least one account. Your portal users know the procedure from Google, PayPal, or their Apple account β€” introducing passkeys at your company does not mean importing an exotic method, it means bringing a familiar convenience into B2B.

Keycloak and passkeys: where things stand in September 2026

First, some orientation: what Keycloak delivers as an open-source IAM in general is covered in our overview What is Keycloak?. Here we focus on a single question: how mature is passwordless login there? The short answer: mature.

From preview to official support

Keycloak has handled WebAuthn as a two-factor and passwordless method for years. Passkeys in today's sense shipped as a preview feature from version 23 (late 2023). The step to production readiness is documented in the Keycloak 26.4 announcement from September 2025: since then, the passkey integration is officially supported.

Development continues: version 26.7 from July 2026 brought the discoverable-credential setting per the current WebAuthn specification and improved compatibility with iCloud Keychain, Google Password Manager, and 1Password. As of today (Keycloak 26.7), passkeys, WebAuthn, and recovery codes are supported features that are active by default.

Conditional UI: login like with a password manager

The most important new feature for customers is called Conditional UI: the browser suggests the passkey right in the login field, just as a password manager offers saved credentials β€” one tap, done. The Modal UI remains alongside it: the classic dialog window that mainly serves hardware keys with a PIN or biometric prompt.

The rebuild is pleasantly unspectacular: you do not have to touch the standard browser flow. You enable passkeys in the realm's WebAuthn passwordless policy and offer registration as a required action. A new conditional authenticator also skips the second-factor prompt when a user has already signed in via passkey β€” double security without a double hurdle.

For your buying decision this means: passkey capability in Keycloak is not a paid extra and not an add-on tier, but part of the standard equipment β€” including Conditional UI, policies, and admin tooling. The question is no longer whether the technology is ready, but how you roll it out.

MFA in Keycloak: OTP, WebAuthn, and recovery codes

Passkeys are the target state, but no portal jumps there in a day. In between sits classic multi-factor authentication β€” and Keycloak covers the full range:

MethodWhat is behind itWhat it is good for
OTP (TOTP/HOTP)One-time codes from apps such as FreeOTP or Google AuthenticatorBaseline MFA for all user groups, no extra hardware
WebAuthn as second factorA security key or device confirms after the passwordPhishing-resistant mandatory MFA for privileged roles
WebAuthn passwordless (passkeys)Login without any passwordConvenience and security in the customer login
Recovery codesOne-time emergency codes, generated at setupSelf-service after device loss instead of a support ticket

On top come brute-force protection, session policies, and step-up authentication: Keycloak can demand a stronger login for critical actions than for normal portal access β€” say, a passkey confirmation before releasing a large order. Which protocols carry all this toward your applications is sorted out in SAML vs. OIDC.

A tiered model per user group

Treating all users the same would be convenient, but wrong: a buyer who orders once a month has a different risk profile than the admin of your realm. Here is a tiered model that has proven itself in our portal projects β€” explicitly an assessment, not dogma:

Portal customers: the password stays for now, and the passkey is actively offered after login. OTP remains open to security-conscious customers on a voluntary basis. The goal is added convenience, not re-education.

Back office and employees: mandatory MFA from day one β€” OTP as the minimum, the passkey as the more convenient alternative that, in our experience, wins on its own.

Admins and key roles: device-bound hardware keys plus recovery codes in the safe. Cloud sync is deliberately unwanted here: the key to your identity system does not belong in a shared keychain.

The lever for implementation is called required actions: per group, you define whether passkey registration is offered, recommended, or mandatory. Your security policy becomes a configurable process instead of a project per change.

Technically, you model these tiers with authentication flows and conditions β€” per role, per client, per context. How the portal behind it hooks into ERP and inventory management via SSO is a topic of its own: we cover it in a separate article on customer portal SSO with ERP integration.

Rollout reality: fallback, device changes, acceptance

So much for the technology. Success or frustration is decided by the rollout β€” and here we speak from project experience, not from the datasheet. Three points where passkey introductions get stuck in practice:

Fallback: the password dies last

Never start with a hard password ban. The realistic path is coexistence: the passkey as the promoted default option, the password as fallback, recovery codes as the emergency anchor. Only once a user group measurably signs in passwordless most of the time do you withdraw the password there. Keycloak allows exactly this gradual pace β€” per flow, per group, without an all-or-nothing decision.

Device changes: the underestimated support question

What happens when the smartphone stays behind in a taxi? With synced passkeys the answer is relaxed: the new device brings the keys along via the keychain. It gets critical with device-bound keys and with users on unmanaged devices β€” there, recovery codes belong to registration as a mandatory step. Otherwise you merely trade password-reset tickets for passkey-reset tickets.

One B2B peculiarity remains: at the front desk or in the workshop, several people sometimes share one account. Such shared logins do not mix with biometrics on a personal device. Clarify before the rollout where they exist β€” and whether they are not a case for separate accounts anyway.

Acceptance: promote instead of enforce

Our experience: coercion creates tickets, a good moment creates adoption. The best time to offer the passkey: right after a successful login, ideally after a password reset β€” the pain is fresh, and the argument β€œnever forget a password again” lands.

Internal users move faster: there, in our assessment, the passkey wins within a few weeks, as soon as the first colleagues show off the quicker login. With portal customers, plan in months, not weeks, and measure progress: share of passwordless logins, reset tickets per month, abandoned registrations. The rule of thumb: passwordless is a migration, not a switch.

Next steps

If your portal already runs on Keycloak, the entry point is small: activate the policy, define a pilot group, promote registration β€” an effort of days, not months. If the portal is still ahead of you, plan the identity layer in from day one: building customer portals with Keycloak, SSO, and ERP integration is exactly what we do.

Want to know which tiered model fits your user groups, or whether your existing setup is passkey-ready? Then book a free consultation call: 30 minutes, a concrete assessment, no slide theater.

Frequently asked questions

Since which Keycloak version are passkeys officially supported?
As a preview, passkeys shipped from Keycloak 23 (late 2023). The integration has been officially supported since Keycloak 26.4 from September 2025 β€” with Conditional UI and Modal UI. Version 26.7 (July 2026) improved compatibility with password managers such as iCloud Keychain, Google Password Manager, and 1Password. In current versions the feature is active by default; you enable the passkey login itself in your realm's WebAuthn passwordless policy.
Are passkeys more secure than a password plus an OTP code?
Yes. OTP codes can be phished in real time: the user types the code on a fake page, and the attacker relays it immediately. A passkey, by contrast, only answers the real domain and never reveals its secret key β€” the fake page simply receives no valid response. That is why passkeys count as phishing-resistant, while OTP merely makes phishing harder.
What happens when a device is changed or lost?
Synced passkeys live in the provider's keychain (Apple, Google, 1Password) and are automatically available on the new device. With device-bound keys, only precaution helps: enforce recovery codes at registration or register a second factor as a way back. Without that precaution, the reset problem merely shifts from the password to the passkey.
Can we introduce passkeys for specific user groups only?
Yes, and that is the recommended path: Keycloak controls authentication requirements through flows and conditions per role, group, or client. A typical split: customers get the passkey as a voluntary offer, the back office gets mandatory MFA, and admins work with hardware keys. The changeover then runs as a staged migration instead of a cutover date.
Do our applications need changes for passkeys?
Usually no. The login happens on the Keycloak login page; your applications keep speaking OIDC or SAML and receive their tokens as before. Introducing passkeys means configuration in the Keycloak realm, not rebuilding every single application. Changes are only needed for heavily customized login screens that bypass the standard flows.
How long does the rollout take in an existing Keycloak setup?
The technical activation is done in days: configure the policy, offer registration as a required action, check the login theme. The real work is adoption: pilot group, communication, measuring passwordless logins. Plan months rather than weeks per user group for that β€” with no operational risk, since password and passkey coexist during the migration.

Sources

Related articles

Open for select projects

Let's talk about your project

Book a no-obligation call, send us an email, or use the form – we'd love to hear from you.

150+
Completed projects
15
Years of experience
8
Senior‑level team members