- शिप
- 23 सितंबर 2026 को 2:58 am बजे UTC
- लेखक
- Kamo
- Commit
- 78c4a87
/api/email/oauth/callback and **************** सार्वजनिक और सत्र रहित हैं ( प्रदाता यहां कोई Kamo सत्र के साथ ब्राउज़र को पुनर्निर्देशित करता है, इसलिए `state` एकमात्र स्थान था संगठन से आ सकता है - और यह स्वयं वर्णन करने वाला बेस64 JSON कॉलर बनाया गया था: {"orgId": 1, "nonce": "...", "provider": "GOOGLE WORKSPACE"}। Anyone handcraft एक नामकरण कर सकता है अलग-अलग org और इसे अपने लिए प्राप्त एक प्राधिकरण कोड के खिलाफ फिर से खेलना; "nonce" इसके अंदर उत्पन्न हुआ लेकिन कभी भी किसी चीज के खिलाफ संग्रहीत या जांच नहीं की गई, इसलिए उसने कुछ भी नहीं रोक दिया। The कॉलबैक विश्वसनीय orgId/provider/memberId सीधे उस डिकोड से बाहर और जुड़े सक्रिय जो भी राज्य को नामित करने के लिए प्रदाता है। OAuthStateStore अब एक अपारदर्शी, unguesable token on `issue`, org/member/provider/ यह केवल एक रेडिस रिकॉर्ड में एक 10 मिनट TTL के साथ हल करता है - कभी भी खुद टोकन में नहीं। `peek` उस रिकॉर्ड को बिना खर्च किए पढ़ता है (URI को पुनर्निर्देशित करने के लिए उपयोग किया जाता है और प्रवाह एक से पहले होता है। कॉलबैक एक हैंडलर के लिए प्रतिबद्ध है; `conume` reads और स्थायी रूप से इसे हटा देता है, इसलिए एक कॉलबैक है एकल उपयोग: एक फिर से खेलना या पुन: उपयोग किया गया टोकन कुछ भी नहीं करने के लिए हल करता है, जो कभी-कभी कभी नहीं होता है अस्तित्व में। OAuthFlowService and GroupwareOAuthService — जो कि ब्लब बनाने और डिकोड करने के लिए इस्तेमाल किया स्वतंत्र रूप से, प्रत्येक एक ही तंत्र की अपनी प्रति के साथ - अब मिंट और रीडीम टोकन दोनों इस एक दुकान के माध्यम से, इसलिए वास्तव में एक जगह है जो यह तय करती है कि राज्य टोकन का क्या मतलब है। OAuthStateStoreTest फिक्स के बिना विफल रहता है (एक ही टोकन का दूसरा उपभोग अभी भी वापस कर देता है) नोल के बजाय रिकॉर्ड); OAuthFlowServiceTest, OAuthFlowKindStateTest और GroupwareOAuthServiceTest नए तंत्र के लिए अद्यतन किए गए हैं - वे अब सीधे एक राज्य ब्लोब का निर्माण या डीकोड नहीं करते हैं, क्योंकि डिकोड करने के लिए कुछ भी नहीं छोड़ा है।.
