प्रश्न और परिदृश्य
एक एंटरप्राइज ग्राहक आपके SaaS का उपयोग सर्विस प्रोवाइडर के रूप में करता है, और उसका पहचान प्रदाता उपयोगकर्ता और समूह में परिवर्तन भेजता है। अनुरोध डुप्लिकेट, पुन: व्यवस्थित (reordered), विलंबित या टाइमआउट के बाद पुन: प्रयास किए जा सकते हैं। सेवा को SCIM 2.0 संसाधन और त्रुटि सिमेंटिक्स को संरक्षित करते हुए टेनेंट्स, बाहरी पहचानकर्ताओं, समूह सदस्यता, सॉफ्ट डिलीशन, ऑडिटेबिलिटी और त्वरित निरस्तीकरण का समर्थन करना चाहिए।
साक्षात्कारकर्ता क्या परीक्षण कर रहा है
- क्या उम्मीदवार SCIM User, Group,
schemas, फ़िल्टरिंग और PATCH सिमेंटिक्स को समझता है? - क्या वे बाहरी-संसाधन मैपिंग, इडेम्पोटेंसी कुंजियों, समवर्ती अपडेट (concurrent updates) और पुन: प्रयासों को एक डेटा प्रवाह में जोड़ सकते हैं?
- क्या वे
active=false, डिलीट अनुरोधों और एप्लिकेशन-सत्र निरस्तीकरण के बीच अंतर करते हैं? - क्या वे टेनेंट आइसोलेशन, टोकन स्कोप, ऑडिटिंग, रेट लिमिट्स और संवेदनशील-फ़ील्ड सुरक्षा को लागू कर सकते हैं?
पहले पूछे जाने वाले स्पष्टीकरण प्रश्न
पुष्टि करें कि क्या पहचान प्रदाता प्रोफ़ाइल के लिए आधिकारिक (authoritative) है, क्या समूहों को पुश किया जाता है, क्या हार्ड डिलीशन की अनुमति है, सिंक लेटेंसी लक्ष्य और टेनेंट पैमाना क्या हैं। स्पष्ट करें कि क्या बाहरी userName स्थिर है, क्या ईमेल नाम परिवर्तन (renames) होते हैं, समूह-आकार की सीमाएँ, बल्क समर्थन, और निष्क्रियता के बाद मौजूदा सत्रों को कितनी जल्दी समाप्त होना चाहिए। ईमेल को अपरिवर्तनीय प्राथमिक कुंजी (primary key) के रूप में उपयोग न करें।
30-सेकंड का उत्तर ढांचा
SCIM बाहरी संसाधनों और स्थानीय खातों को टेनेंट-स्कोप वाली मैपिंग में संग्रहीत करें, स्थिर बाहरी पहचानकर्ताओं को आंतरिक ID से अलग रखें। अनुरोध फ़िंगरप्रिंट और संस्करणों के साथ बनाना, अपडेट करना, PATCH, डिलीट करना और क्वेरी करना इडेम्पोटेंट बनाएं; पुराने राइट्स (stale writes) को स्पष्ट रूप से अस्वीकार करें। active=false निष्क्रियता और सत्र निरस्तीकरण को ट्रिगर करता है, जबकि डिलीशन एक टेनेंट प्रतिधारण नीति (retention policy) का पालन करता है। प्रत्येक अनुरोध टेनेंट, टोकन स्कोप और ऑडिट संदर्भ को मान्य करता है, और पुन: प्रयास योग्य अतुल्यकालिक (asynchronous) प्रभावों को दो बार अनुमतियां नहीं देनी चाहिए।
चरण-दर-चरण गहन विश्लेषण
- संसाधन सीमाओं को परिभाषित करें। उन SCIM क्षमताओं को प्रदर्शित करें जिनका आप वास्तव में समर्थन करते हैं, जैसे कि
/Users,/Groups,/ResourceTypes,/Schemas, और/ServiceProviderConfig।schemasको प्रत्येक संसाधन प्रकार के साथ सुसंगत रखें और असमर्थित फ़िल्टर के लिए सामान्यीकृत (normalized) त्रुटियाँ लौटाएँ। - पहचान मैपिंग का निर्माण करें। प्रति टेनेंट, बाहरी संसाधन ID, स्थानीय उपयोगकर्ता ID, स्रोत सिस्टम और वर्तमान संस्करण संग्रहीत करें।
userNameऔर ईमेल जैसे परिवर्तनशील फ़ील्ड लुकअप या प्रदर्शन के लिए हैं, स्थिर मैपिंग को बदलने के लिए नहीं; विरोधों (conflicts) के लिए मूक विलय (silent merges) के बजाय समीक्षा की आवश्यकता होती है। - इडेम्पोटेंसी और समवर्ती नियंत्रण लागू करें। एक दोहराया गया POST मौजूदा संसाधन लौटाता है या अनुरोध फ़िंगरप्रिंट से सुरक्षित रूप से पुन: निष्पादित होता है। PATCH संचालन को व्यक्तिगत रूप से लागू करें और परिणामों को रिकॉर्ड करें। जहाँ समर्थित हो,
ETagया संस्करण शर्त की आवश्यकता रखें ताकि पुराने राइट्स नए डेटा को अधिलेखित (overwrite) न कर सकें। - उपयोगकर्ता और समूह जीवनचक्र को संभालें।
active=falseएप्लिकेशन अनुमतियों को रद्द करता है, नए लॉगिन को ब्लॉक करता है, और वर्तमान सत्रों को समाप्त करता है। हार्ड डिलीशन प्रतिधारण और ऑडिट नियमों का पालन करता है। सेट अंतर (set difference) द्वारा समूह सदस्यता अपडेट करें; आंशिक विफलता को ऐसे प्रत्येक सदस्य को नहीं हटाना चाहिए जिसकी पुष्टि नहीं हुई थी। - अतुल्यकालिक प्रभावों को अलग करें। API द्वारा स्थानीय तथ्य तालिका (fact table) में लिखने के बाद, अनुमति सिंक, स्वागत सूचनाएं और ऑडिट घटनाओं को कतारबद्ध (enqueue) करें। संदेशों में टेनेंट, संसाधन संस्करण और इडेम्पोटेंसी कुंजी होती है; डुप्लिकेट उपभोक्ता दो बार एक्सेस प्रदान नहीं कर सकते हैं या सूचनाएं नहीं भेज सकते हैं।
- सेवा की सुरक्षा और संचालन करें। SCIM टोकन रोटेशन, निरस्तीकरण और समाप्ति के साथ एक टेनेंट और संचालन दायरे तक सीमित हैं। पेजिनेशन, फ़िल्टर और बल्क आकार को सीमित करें। पूर्ण टोकन या संवेदनशील विशेषताओं को लॉग किए बिना सफलता, अस्वीकृति, विरोध, पुन: प्रयास और निष्क्रियता विलंबता को रिकॉर्ड करें।
उच्च-गुणवत्ता वाला नमूना उत्तर
मैं SCIM API को बाहरी पहचान स्रोत से स्थानीय खातों के लिए सिंक्रोनाइज़ेशन सीमा के रूप में मानूँगा। प्रत्येक टेनेंट को अपना स्वयं का टोकन, संसाधन मैपिंग और ऑडिट ट्रेल मिलता है। User और Group संसाधन स्थिर बाहरी और आंतरिक ID को सुरक्षित रखते हैं और SCIM स्कीमा का पालन करते हैं। असमर्थित फ़िल्टर, PATCH संचालन, या वापसी योग्यता (returnability) नियम अनुमान लगाने के बजाय स्पष्ट त्रुटियाँ उत्पन्न करते हैं।
राइट्स पहले एक स्थानीय तथ्य तालिका में दर्ज होते हैं, फिर संसाधन संस्करण द्वारा पुन: प्रयास योग्य अनुमति प्रभावों को कतारबद्ध करते हैं। बाहरी ID, अनुरोध फ़िंगरप्रिंट और सशर्त संस्करण पुन: प्रयासों को इडेम्पोटेंट बनाते हैं; पुराने संस्करण ताज़ा डेटा को अधिलेखित नहीं कर सकते। active=false अनुमतियों को रद्द करता है, नए लॉगिन को रोकता है और सत्रों को समाप्त करता है, जबकि डिलीशन प्रतिधारण का पालन करता है। समूह अपडेट सेट अंतर का उपयोग करते हैं और अपुष्ट सदस्यों को हटाए बिना आंशिक विफलताओं का पुन: प्रयास करते हैं। प्रति-टेनेंट सिंक विलंबता, विरोध, निष्क्रियता-से-सत्र-समाप्ति समय और डेड लेटर्स का निरीक्षण करें। संदर्भों में RFC 7643, RFC 7644 और Okta का SCIM कार्यान्वयन मार्गदर्शन शामिल है।
सामान्य गलतियाँ
/ServiceProviderConfig, फ़िल्टर, PATCH, त्रुटि प्रकार और पेजिनेशन के बिना केवलPOST /Usersको लागू करना।- ईमेल को एकमात्र कुंजी के रूप में उपयोग करना, डुप्लिकेट बनाना या नाम बदलने के बाद गलत खाते को लिंक करना।
- टाइमआउट पुन: प्रयास को एक नए आदेश के रूप में मानना और अनुमतियां देना, सूचनाएं भेजना, या नए फ़ील्ड को दो बार अधिलेखित करना।
- टोकन, अनुमतियों और वर्तमान सत्रों को रद्द किए बिना
active=falseके बाद उपयोगकर्ता को छिपाना। - आंशिक सिंक विफलता के बाद सभी स्थानीय समूह सदस्यों को साफ़ करना, जिससे एक क्षणिक नेटवर्क समस्या व्यापक पहुंच हानि या अत्यधिक अनुमति देने में बदल जाती है।
अनुवर्ती प्रश्न और उत्तर
क्या होगा यदि पहचान प्रदाता वही निर्माण अनुरोध दोहराता है?
टेनेंट और बाहरी संसाधन ID देखें और अनुरोध फ़िंगरप्रिंट या संस्करण बनाए रखें। मौजूदा संसाधन के लिए एक स्थिर प्रतिनिधित्व लौटाएं; यदि पेलोड में विरोध होता है, तो स्थानीय परिवर्तन को चुपचाप अधिलेखित करने के बजाय एक निदान योग्य त्रुटि लौटाएं और उसका ऑडिट करें।
ईमेल का नाम बदलने के बाद आप खाते की निरंतरता कैसे बनाए रखते हैं?
स्थानीय खाता ID मैपिंग के लिए स्थिर बाहरी संसाधन ID का उपयोग करें, जिसमें ईमेल एक परिवर्तनशील विशेषता के रूप में हो। टेनेंट-स्तरीय विशिष्टता की जांच करें, डिस्प्ले और लॉगिन उपनामों को अपडेट करें, और ईमेल द्वारा टेनेंट्स के बीच कभी भी नया खाता न बनाएं या मिलान न करें।
जब निष्क्रियता और लॉगिन एक साथ आते हैं तो आप सुरक्षित कैसे रहते हैं?
प्राधिकरण एक रैखिक करने योग्य (linearizable) खाता स्थिति या निरस्तीकरण संस्करण को पढ़ता है। निष्क्रियता संस्करण को आगे बढ़ाती है और सत्रों को रद्द करती है; लॉगिन क्रेडेंशियल जारी करने से पहले इसे फिर से जांचता है और एक निष्क्रिय खाते को अस्वीकार कर देता है, भले ही कोई पुराना अतुल्यकालिक अनुमति कार्य अभी भी चल रहा हो।