Fix #24: Entra-claims uit id_token + UPN-fallback voor ontbrekende e-mailclaim #25
Reference in New Issue
Block a user
Delete Branch "fix/issue-24-missing-email-claim"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #24
Wat dit oplost
Eerste Microsoft-logins faalden met
400 — email: Cannot be blank: Graph's/oidc/userinfogeeft géénemail-claim voor accounts zonder mail-attribuut, terwijlteam_memberseen e-mail vereist (die ook deENTRA_ADMIN_EMAILS-rolmapping voedt). De door Raymond aangeleverde response-body matchte exact de "missing email"-fingerprint uit de analyse (#24).De fix (twee lagen)
userInfoURL: ""in de reconciler + migratie-fast-path). Het id_token bevat áltijdpreferred_username(UPN) enemailwanneer beschikbaar. De #18-reconciler flipt de al-gedeployede Labs-provider automatisch bij de eerstvolgende boot — geen migratie nodig.onRecordAuthWithOAuth2Request: geen e-mailclaim → lowercased UPN als e-mail. Guest-UPN's (ext_user#EXT#@tenant...) worden expliciet uitgesloten —#is RFC-geldig in een e-mail-localpart, dus zowel een naïeve regex als PocketBase's eigen validatie accepteren ze (gevangen door test V5). De hook logt bovendien elke gefaalde OAuth2-poging mét onderliggende fout naar de containerlog.Verificatie (mock-Entra met schakelbare claims, PocketBase v0.30.4)
role=adminvia allow-list#EXT#)Regressie: #22-matrix 9/9 (baseline gepind op
1a1351dnu #23 gemerged is), #18-harness 15/15,npm test112/112.Na de merge/deploy: de smoke-report toont de reconciler-update (
updatedbij eerste boot — userInfoURL flipt), daarna E2E-login door Raymond.🤖 Generated with Claude Code
Live-rollout geslaagd (run #95): deploy-dev groen, PLAY RECAP
failed=0, beide gates gepasseerd. Smoke-report:entra_oidc reconcile (bootstrap): in-sync— en omdat de reconciler-vergelijkinguserInfoURLomvat, bewijst dit dat de live provider nu op het id_token-pad staat (de flip is door de hook-hot-reload + cron al vóór de recreate uitgevoerd).Lokale bewijsmatrix: 8/8 (UPN-fallback, claim-wint, geen duplicaat, guest-UPN nette fout, REST-create dicht, beide loglijnen). Regressie: #22-matrix 9/9, #18-harness 15/15,
npm test112/112.Klaar voor de E2E: Microsoft-login op Labs zou nu moeten slagen — ook voor accounts zónder mail-attribuut (e-mail wordt dan de UPN).
Pull request closed