I1203 — Jeden tok obsluhuje každého providera a odmítá vše, co nezahájil
Implementovat tok s autorizačním kódem a PKCE jednou, nad typovaným modelem provideru: startovací trasa, která vydá state a nonce a přesměruje na autorizační endpoint provideru, a callback trasa, která odmítne state, který nevydala nebo jehož platnost vypršela, vymění kód, ověří vydavatele, publikum, expiraci a nonce vráceného identity tokenu a stabilní subjekt určí z tvrzení, které objekt pojmenovává.
BLOKOVÁNO vlna 2 · p0 · profil implementation · běží samostatně
Součást web-sign-in — Nasazené povrchy vědí, kdo se ptá, a poskytovatelé identit jsou data.
Blokováno. Tento úkol nemůže začít, dokud není hotovo I1202. Stav je z toho odvozen, ne deklarován.
Cíl
Implementovat tok s autorizačním kódem a PKCE jednou, nad typovaným modelem provideru: startovací trasa, která vydá state a nonce a přesměruje na autorizační endpoint provideru, a callback trasa, která odmítne state, který nevydala nebo jehož platnost vypršela, vymění kód, ověří vydavatele, publikum, expiraci a nonce vráceného identity tokenu a stabilní subjekt určí z tvrzení, které objekt pojmenovává.
Proč
Dva toky specifické pro poskytovatele jsou dvě místa, kde lze zapomenout na validaci. Rozdíly mezi poskytovateli, s nimiž tento milník začíná, jsou zápisy endpointů, které objekty už nesou.
Aktuální stav
I1202 udává poskytovatele; neexistuje tok, trasa ani ověření.
Cílový stav
Přihlášení kterýmkoli deklarovaným poskytovatelem funguje od začátku do konce proti skutečnému poskytovateli a každá cesta odmítnutí — neznámý stav, přehraný stav, expirovaný stav, nesouhlasící nonce, špatný vydavatel, chybějící přihlašovací údaje — je pokryta testem.
Rozsah
- apps/majordomus-cli/src/identity
- apps/majordomus-cli/src/http
- apps/majordomus-cli/tests
- test/cases
Mimo rozsah
- Ukládání čehokoli o čtenáři nad rámec relace z I1204
- Větev specifická pro providera kdekoli v toku
Závislosti
Co na tom čeká
Kritéria přijetí
- State a nonce jsou jednorázové, vyprší a jsou vázány na poskytovatele, pro kterého byly vydány
- Identitní token se ověří na vydavatele, publikum, expiraci a nonce dřív, než existuje jakákoli relace
- Callback, jehož state tento server nevydal, se odmítne bez relace a bez přesměrování, které by prozradilo parametry
- Cíl přesměrování po přihlášení se ověřuje proti vlastnímu originu povrchu místo převzetí z požadavku
- Každá cesta odmítnutí má test a testy běží bez kontaktování kteréhokoli providera
Validace
- cargo test --workspace --all-features
- bash test/run.sh
Požadované důkazy
- flow_single_implementation
- refusals_tested
- token_verified
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Riziko
Open redirect a nevalidovaný state jsou dva klasické defekty tohoto toku. Oba se testují jako odmítnutí, ne předpokládají.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Kanonický záznam: .ai/repo/project/issues/I1203.yaml. Načtěte jej zpět pomocí majordomus plan show I1203.