Skip to main content

Bilko /login silent auth failure — dijagnoza i fix (MC #106849)

Bilko /login silent auth failure — dijagnoza i fix (MC #106849)

Datum: 2026-08-05 · PR: #318 (fix/106849-login-dead-click, commit 3df83cd1) · Status: no active outage; hardening + observability fix

Simptom

Klik na "Prijavite se Microsoft računom" na app.bilko.cloud/login naizgled "ne radi ništa" — korisnik ostane na /login bez ikakve poruke, bez konzolnih grešaka, bez vidljivih network poziva.

Root cause (potvrđeno live forenzikom)

  1. Frontend je bio ISPRAVAN: React onClick → MSAL loginRedirect() → top-level navigacija na ciamlogin.com/.../authorize se uredno izvršavala.
  2. Microsoft CIAM authorize je za sesiju s postojećim kolačićima vraćao HTTP 503 (čist curl bez kolačića: 200) — vrlo vjerovatno throttling zbog desetina automatizovanih pokušaja u kratkom periodu.
  3. Aplikacija je taj neuspjeh tiho gutala: povratak na /login bez poruke (503 prije ikakvog MSAL callbacka ⇒ MSAL nema event koji bi opalio).
  4. Dijagnostička zamka: top-level navigacije se ne vide kao XHR u network alatima i ne ostavljaju konzolne greške; uz to, sintetički klikovi browser-ekstenzije nisu ni stizali do stranice (automation artefakt) — vidi memory technical_extension_clicks_can_be_silent_noops_2026-08-05.

Fix (D3 — error surfacing)

  • AUTH_ATTEMPT_PENDING_KEY sessionStorage marker postavljen neposredno prije loginRedirect().
  • Na sljedećem MSAL init-u: marker prisutan + 0 accounta ⇒ authError (pokriva fail-prije-callbacka); dodatno obrađen EventType.LOGIN_FAILURE.
  • /login renderuje vidljiv alert (data-testid="entra-auth-error") + retry dugme, svih 5 lokala (en/hr/bs/sr-Latn/sr-Cyrl).
  • 7 novih testova u apps/web/test/login-silent-auth-fail-106849.test.tsx (oba puta + negativne kontrole); dokazano padaju na pre-fix kodu.

Regression gate (D4)

azure-pipelines.ymlPromote_Demo sada, odmah poslije curl-only ZAKON PI2 provjere, izvršava real-browser MSAL login smoke (postojeći login-dashboard.spec.ts) protiv demo artefakta (DEMO_WEB_URL=https://app.bilko.cloud). Zatvoren strukturni gap: stage i demo su odvojeni buildovi, a login test je do sada postojao samo za stage.

Verifikacija

  • Nezavisni verifier: 35/35 testova samostalno izvršeno, scope čist, verdikt PASS — transcript: /Users/makinja/system/evidence/106849/verifier-transcript-2026-08-05.md
  • CEO ljudski klik (telefon, čist browser): Microsoft login stranica se uredno otvara.
  • Puna forenzika: /Users/makinja/system/evidence/bilko-login-dead-2026-08-05/repro-evidence.md + MC #106849 komentari.

Lekcije

  • "Mrtav klik" iz automatizacije ≠ mrtav klik: trijaža = instrumentacija stranice → programatski .click() → ljudski klik.
  • curl health check je slijep za auth petlje; login smoke mora gađati artefakt koji korisnici stvarno dobijaju.
  • Tihi auth fail je UX bug prvog reda: svaki neuspjeh prijave mora biti vidljiv korisniku.

Povezani taskovi: MC #106849 (fix), #106834 (automation artefakt), #106850 (anvil incident), #106856 (subagent identity), #106858 (msal-provider minor).