हम अपने ही एडमिन कंसोल में अपने ही SAML से लॉग इन करते हैं। इसने जो पकड़ा वह यहाँ है।
डॉगफ़ूडिंग का एक रूप वह है जो एक नारा भर है, और एक रूप वह है जहाँ आपके अपने कर्मचारी तब तक कोड शिप नहीं कर सकते जब तक बग ठीक न हो जाए। हम दूसरी क़िस्म चलाते हैं। Authagonal स्टाफ़ कंसोल, वही जिससे हम हर टेनेंट को मैनेज करते हैं, खुद Authagonal के ज़रिए ऑथेंटिकेट करता है: हमारी Entra डायरेक्टरी से SAML सिंगल साइन-ऑन, जिसमें SCIM यह तय करता है कि किसे अंदर आने मिलेगा और वह क्या कर सकता है। कोई अलग एडमिन पासवर्ड टेबल नहीं है। हमने उसे डिलीट कर दिया। अगर हमारा अपना SAML टूटता है, तो हम अपने ही प्रोडक्ट से बाहर बंद हो जाते हैं।
यह ठीक उसी उपयोगी तरीके से असहज है। यह "SSO एक एंटरप्राइज़ फ़ीचर है जिसे हम सपोर्ट करते हैं" को "SSO ही अकेला तरीका है जिससे इसे बनाने वाले लोग आज काम कर पाते हैं" में बदल देता है। अपना ही ग्राहक होने ने जो पकड़ा वह यहाँ है।
एक ट्रिम्ड बिल्ड जिसने सिग्नेचर वेरिफ़िकेशन को तोड़ दिया
हम ऑथ सर्वर को ट्रिम करके पब्लिश करते हैं, ताकि इमेज छोटी रहे। ट्रिमिंग आक्रामक रूप से उस कोड को डिलीट कर देती है जिसके इस्तेमाल को वह साबित नहीं कर सकती, और रिफ़्लेक्शन उससे इस्तेमाल को छिपा देता है। .NET अपने XML-साइनिंग क्रिप्टो एल्गोरिदम को नाम से, रिफ़्लेक्टिवली, CryptoConfig के ज़रिए रिज़ॉल्व करता है। ट्रिमर यह नहीं देख सका कि उन टाइप्स की ज़रूरत थी, उन्हें हटा दिया, और SignedXml चुपचाप एल्गोरिदम बनाने में असमर्थ होकर वापस आ गया। SAML सिग्नेचर वेरिफ़िकेशन, वह चरण जो साबित करता है कि लॉगिन असली है, रनटाइम पर एक नल रेफ़रेंस फेंक गया।
यूनिट टेस्ट पास हुए, क्योंकि वे अन-ट्रिम्ड बिल्ड के विरुद्ध चले जहाँ टाइप्स अब भी मौजूद थे। सिर्फ़ ट्रिम्ड प्रोडक्शन आर्टिफ़ैक्ट विफल हुआ, और वह ठीक उसी पल विफल हुआ जब एक इंसान ने साइन इन करने की कोशिश की। अब हम ऑथ सर्वर को अन-ट्रिम्ड शिप करते हैं, रिफ़्लेक्शन-आधारित क्रिप्टो के पास किसी भी चीज़ को ट्रिम करने के प्रति एक स्वस्थ अविश्वास के साथ। अगर हम SAML पर जीने के बजाय सिर्फ़ उसे सपोर्ट करते, तो यह हमारे बजाय किसी ग्राहक की इन्सिडेंट रिपोर्ट होती।
प्रोविज़निंग ही असली लॉगिन है
किसी यूज़र को ऑथेंटिकेट करना SSO का आसान आधा हिस्सा है। कठिन आधा हिस्सा यह तय करना है कि उसे क्या करने की अनुमति है और लोगों के आने-जाने के साथ इसे सिंक में रखना है। हम इसे SCIM से चलाते हैं: Entra ग्रुप मेंबरशिप रोल्स से मैप होती है, जो टोकन जारी होने के पल पर रिज़ॉल्व होती है, अकाउंट बनने के समय एक बार कॉपी नहीं की जाती। किसी को सही ग्रुप में जोड़ें और उसके अगले साइन-इन पर उसके पास एक्सेस होगा; उसे हटाएँ और वह चला गया। हमारी अपनी एक्सेस लिस्ट उसी ग्रुप-टू-रोल मैपिंग को डॉगफ़ूड करती है जिसे हम शिप करते हैं।
वह वायरिंग एक ऐसी क़िस्म का बग सामने लाती है जो तभी मौजूद होता है जब ऑथेंटिकेशन और ऑथराइज़ेशन दो अलग सिस्टम में रहते हैं: एक अभी-अभी प्रोविज़न हुआ एडमिन अपने रोल के पूरी तरह आने से पहले ऑथेंटिकेट कर सकता था, जिससे पहला साइन-इन एक मान्य-पर-अनधिकृत स्थिति में रह जाता था। ठीक करना प्रोविज़निंग के क्रम में है, लॉगिन में नहीं, और इसे आप सिर्फ़ पहली बार साइन इन करते नए एडमिन बनकर ही पाते हैं।
एक 500 जो 403 होना चाहिए था
सबसे छोटा बग सबसे शर्मनाक था। जब कोई ऑथेंटिकेटेड यूज़र किसी ऐसी चीज़ तक पहुँचता था जिसकी उसे अनुमति नहीं थी, तो API एक स्वच्छ 403 के बजाय एक 500 लौटाता था, क्योंकि "फ़ॉरबिडन" रिस्पॉन्स जारी करने वाला कोड पाथ एक ऐसी सर्विस पर निर्भर था जो उस होस्ट में वायर्ड नहीं थी। एक अस्वीकृत अनुरोध एक शांत, अपेक्षित परिणाम होना चाहिए, न कि एक सर्वर एरर। तब तक अदृश्य जब तक आप ही वह न हों जिसे अस्वीकार किया जा रहा है।
वह सीमा जिसकी हमें सबसे ज़्यादा परवाह है
इन सबके नीचे वह एक नियम है जिसे एक मल्टी-टेनेंट आइडेंटिटी प्लेटफ़ॉर्म ग़लत नहीं कर सकता: एक टेनेंट को कभी भी हमारा एडमिन नहीं बनना चाहिए। हम किसी अकेले चेक पर भरोसा नहीं करते। प्लेटफ़ॉर्म अपना ख़ुद का इश्यूअर है और एक टेनेंट उसका स्लग दावा नहीं कर सकता; प्लेटफ़ॉर्म साइनिंग की हर टेनेंट से अलग है, इसलिए किसी टेनेंट के लिए साइन किया गया टोकन प्लेटफ़ॉर्म टोकन के रूप में रीप्ले नहीं किया जा सकता; और प्लेटफ़ॉर्म स्टोर स्वतंत्र रूप से प्लेटफ़ॉर्म रोल्स लागू करता है। तीन ताले, क्योंकि किसी एक के खुला रह जाने की क़ीमत पूरा प्रोडक्ट है।
बात यह है
इनमें से कोई भी किसी चतुर टेस्ट से नहीं पकड़ा गया। ये एक ऐसे इंसान से पकड़े गए जो अपना काम करने की कोशिश कर रहा था और कर नहीं पा रहा था। अपने प्रोडक्ट को उस गहराई पर इस्तेमाल करने के पक्ष में यही तर्क है जहाँ वह आपको चोट पहुँचा सकता है: यह सिस्टम के बीच की दरारों में छिपे बगों को उन बगों में बदल देता है जिन्हें आप नाश्ते से पहले ठीक कर देते हैं, क्योंकि जब तक आप ऐसा न कर लें, आप शिप नहीं कर सकते।
हमारा कंसोल जिस हर चीज़ पर टिका है (SSO, SAML, SCIM, MFA, ऑडिट लॉग) वह हर Authagonal प्लान में शामिल है, किसी टियर के पीछे बंद या प्रति कनेक्शन मीटर्ड नहीं। देखें क्या-क्या शामिल है।