Frontend fork of Zitadel
  • TypeScript 94.7%
  • Go 2.4%
  • JavaScript 2.2%
  • Shell 0.5%
  • SCSS 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Maël Gramain d101958f68
All checks were successful
ci/woodpecker/push/docker Pipeline was successful
fix: match session cookie login names case-insensitively
Passkey login on idp.gnous.eu failed with `[failed_precondition] Session
sans challenge WebAuthN (COMMAND-Ioqu5)` whenever the login name was typed
with different casing than the stored one -- `mael@gnous.Eu` against a
canonical `mael@gnous.eu` was enough.

The `GnousEU` org has `ignoreUnknownUsernames` enabled. sendLoginname
therefore does two things: it skips creating a session, and it forwards the
string the user typed into the next step's URL rather than the account's
preferredLoginName. Both are deliberate -- echoing the canonical name back
would leak whether the account exists.

So the /passkey page carries the typed name, and the two requests that make
up a passkey login resolve their session through it:

  challenge request -> no cookie yet -> creates session A, stores the cookie
                       under the canonical name ZITADEL returned
  verify request    -> looks A up by the *typed* name -> `===` misses ->
                       creates session B, which has no WebAuthN challenge

Confirmed in the eventstore -- two sessions, same user and fingerprint, two
seconds apart, only the first carrying `session.webAuthN.challenged`:

  391709887156977667  session.added + session.webAuthN.challenged  06:48:06
  391709890260762627  session.added (no challenge)                 06:48:08

ZITADEL treats login names case-insensitively, so these lookups must too.
Password login hid the defect: its check carries no cross-request state, so
a freshly forked session verifies just fine. Passkeys are the only flow that
needs the challenge to still be on the session found by the next request.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-21 09:43:41 +02:00
.woodpecker fix ci 2026-05-03 14:47:21 +02:00
acceptance rebase login app onto latest upstream, fix ci install and build 2026-07-25 12:55:31 -04:00
constants first commit 2026-05-02 22:55:44 +02:00
dockerized rebase login app onto latest upstream, fix ci install and build 2026-07-25 12:55:31 -04:00
locales rebase login app onto latest upstream, fix ci install and build 2026-07-25 12:55:31 -04:00
public first commit 2026-05-02 22:55:44 +02:00
screenshots first commit 2026-05-02 22:55:44 +02:00
scripts first commit 2026-05-02 22:55:44 +02:00
src fix: match session cookie login names case-insensitively 2026-09-21 09:43:41 +02:00
test-mocks first commit 2026-05-02 22:55:44 +02:00
.gitignore Fix performance 2026-07-25 14:07:20 -04:00
AGENTS.md rebase login app onto latest upstream, fix ci install and build 2026-07-25 12:55:31 -04:00
CLAUDE.md rebase login app onto latest upstream, fix ci install and build 2026-07-25 12:55:31 -04:00
Dockerfile rebase login app onto latest upstream, fix ci install and build 2026-07-25 12:55:31 -04:00
eslint.config.mjs rebase login app onto latest upstream, fix ci install and build 2026-07-25 12:55:31 -04:00
LICENSE first commit 2026-05-02 22:55:44 +02:00
next-env-vars.d.ts rebase login app onto latest upstream, fix ci install and build 2026-07-25 12:55:31 -04:00
next-env.d.ts first commit 2026-05-02 22:55:44 +02:00
next.config.mjs rebase login app onto latest upstream, fix ci install and build 2026-07-25 12:55:31 -04:00
package.json rebase login app onto latest upstream, fix ci install and build 2026-07-25 12:55:31 -04:00
postcss.config.cjs first commit 2026-05-02 22:55:44 +02:00
prettier.config.mjs first commit 2026-05-02 22:55:44 +02:00
project.json first commit 2026-05-02 22:55:44 +02:00
tailwind.config.mjs rebase login app onto latest upstream, fix ci install and build 2026-07-25 12:55:31 -04:00
test-setup.ts first commit 2026-05-02 22:55:44 +02:00
test-theme.js rebase login app onto latest upstream, fix ci install and build 2026-07-25 12:55:31 -04:00
THEME_ARCHITECTURE.md rebase login app onto latest upstream, fix ci install and build 2026-07-25 12:55:31 -04:00
THEME_CUSTOMIZATION.md first commit 2026-05-02 22:55:44 +02:00
tsconfig.json first commit 2026-05-02 22:55:44 +02:00
vercel.json rebase login app onto latest upstream, fix ci install and build 2026-07-25 12:55:31 -04:00
vitest.config.dockerized.ts first commit 2026-05-02 22:55:44 +02:00
vitest.config.ts rebase login app onto latest upstream, fix ci install and build 2026-07-25 12:55:31 -04:00