KamoCRM

Un jeton d'état OAuth est un enregistrement côté serveur, pas un blob le navigateur à la main

FixEmailService
Expédié
23 septembre 2026 à 02:58 UTC
Auteur
Kamo
Commite
78c4a87

/api/email/oauth/callback et z sont publics et sans session (le le fournisseur redirige le navigateur ici sans session de Kamo), donc "état" était le seul endroit L'organisation pourrait venir de - et c'était la base auto-décrivant64 JSON le CALLER a construit: "orgId": 1, "nonce": "...", "fournisseur": "GOOGLE-WORKSPACE" N'importe qui pourrait fabriquer un artisanal en nommant un Ensemble différent et le rejouer par rapport à un code d'autorisation qu'ils ont obtenu pour eux-mêmes; la "nonce" à l'intérieur, il a été généré mais n'a jamais été stocké ou contrôlé contre quoi que ce soit, donc il n'a rien arrêté. Le callback trusted orgId/provider/memberId tout droit hors de ce décodage et activé le connecté le fournisseur, quel que soit l'exemple désigné. OAuthStateStore ment maintenant un jeton opaque et insouciant sur « Problème », en conservant l'orge/un membre/fournisseur/ il ne se résout que dans un enregistrement Redis avec un TTL de 10 minutes - jamais dans le jeton lui-même. «peek» dit que l'enregistrement sans le dépenser (utilisé pour choisir l'URI de redirection et le flux avant un callback s'engage auprès d'un gestionnaire); "consum" le lit et le supprime définitivement, donc un rappel est à usage unique: un jeton rejoué ou réutilisé ne résout qu'il n'y a rien, indiscernable de celui qui ne jamais existait. OAuthFlowService et GroupwareOAuthService, qui manipulaient et décodissaient ce blob indépendamment, chacun avec sa propre copie du même mécanisme - maintenant à la fois les jetons de menthe et de rachitage par l'intermédiaire de ce magasin, donc il y a exactement un endroit qui décide ce que signifie un jeton d'état. OAuthStateStoreTest échoue sans le correctif (une deuxième consommation du même jeton retourne toujours le enregistrement au lieu de nuls); OAuthFlowServiceTest, OAuthFlowKindStateTest et GroupwareOAuthServiceTest sont mises à jour pour le nouveau mécanisme - ils ne construisent plus ou ne décodent plus directement un blob d'état, puisque Il ne reste plus rien à décoder.

Tous les changements

Comme ce que tu vois expédier ?

Tout cela arrive dans votre espace de travail par lui-même. Commencez sur le plan gratuit et relisez cette page dans un mois.

Commencez gratuitement pour toujoursPrix de visualisation