Repository navigation
|
Keycloak version: 26.6 (quay.io/keycloak/keycloak:26.6) Goal: Authenticate via either Passkey (passwordless) OR Username+Password+OTP — mutually exclusive, not both required. Flow structure: Steps to reproduce:
Expected: Successful Passkey authentication should satisfy the Actual: After successful Passkey authentication, the user is additionally prompted for an OTP code. Isolation test: Setting Suspicion: Since the test user has an OTP credential registered, it's possible the OTP Form step is being evaluated/executed independently of the subflow's ALTERNATIVE status because Keycloak detects a configured OTP credential for the user, rather than the execution being skipped once a sibling ALTERNATIVE subflow has already succeeded. Question: Is this expected behavior given how REQUIRED executions are evaluated within ALTERNATIVE subflows, or is this a bug in subflow short-circuiting logic? Is there a recommended flow structure in 26.x to achieve a clean either/or between Passkey and Password+OTP, or should this rely on Happy to provide full flow export (JSON) or server logs if useful. |
Replies: 1 comment 3 replies
|
I'm not sure if the authentication flow goes through the passkey subflow, as you have set it up there. In the docs it seems like for that authentication step to work, it should be configured after a username form - https://www.keycloak.org/docs/latest/server_admin/index.html#creating-a-password-less-browser-login-flow (note that it may simply be an old setup and the team forgot to update the documentation in this particular case). Version 26.3.0 appears to have integrated If you look at the (current) default browser flow (e.g., create a new test realm and look at the default flow inside it), you will see that theres a I think that in your case authentication skips the passwordless subflow altogether and it goes to the other subflow, where the passkey is used in the (now) hybridized username/password + passkey form, and OTP is a required step afterwards. |
I'm not sure if the authentication flow goes through the passkey subflow, as you have set it up there. In the docs it seems like for that authentication step to work, it should be configured after a username form - https://www.keycloak.org/docs/latest/server_admin/index.html#creating-a-password-less-browser-login-flow (note that it may simply be an old setup and the team forgot to update the documentation in this particular case).
Version 26.3.0 appears to have integrated
webauthn-passwordlessauthentication in the username/password form, as mentioned in the release notes https://github.com/keycloak/keycloak/releases/tag/26.3.0 and (somewhat, though it may need to be more clear) in the up…