- Spegnimento
- 23 settembre 2026 alle ore 02:58 UTC
- Autore
- Kamo
- Impegno
- 78c4a87
* api/email/oauth/callback and************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** provider reindirizza il browser qui senza sessione Kamo), quindi `state` era l'unico posto l'organizzazione potrebbe provenire da — ed era autodescrivibile base64 JSON il CALLER costruito: {"orgId": 1, "nonce": "...", "provider": "GOOGLE WORKSPACE"}. Chiunque puo' fare un mestiere. diversi org e ripetilo contro un codice di autorizzazione che hanno ottenuto per loro; il "nonce" all'interno è stato generato, ma mai memorizzato o controllato contro qualcosa, quindi non ha fermato nulla. The callback attendibile orgId/provider/memberId direttamente da quel decode e attivato il collegato fornitore per qualsiasi org lo stato chiamato. OAuthStateStore ora mints un token opaco, inguesable su `problem`, mantenendo l'org/member/provider/ il flusso si risolve solo in un Redis record con un TTL di 10 minuti — mai nel token stesso. `peek` legge quel record senza spenderlo (usato per scegliere l'URI redirect e il flusso prima di un callback si impegna a un handler); `consume` legge e cancella definitivamente, quindi un callback è single-use: un token riprodotto o riutilizzato non si risolve a nulla, indistinguibile da uno che mai esisteva. OAuthFlowService e GroupwareOAuthService — che usavano costruire e decodificare quel blob indipendentemente, ciascuno con la propria copia dello stesso meccanismo — ora sia la menta che i gettoni redeem attraverso questo unico negozio, quindi c'è esattamente un posto che decide cosa significa un token di stato. OAuthStateStoreTest non riesce senza la correzione (un secondo consumo dello stesso token restituisce ancora il record invece di null); OAuthFlowServiceTest, OAuthFlowKindStateTest e GroupwareOAuthServiceTest sono aggiornati per il nuovo meccanismo — non costruiscono più o decodificano uno stato blob direttamente, dal momento che non c'è più nulla da decodificare.
