- SAML (Single Assertion Markup Language) एक मानक है जो XML फ़ॉर्मैट में सुरक्षा-संबंधी संदेशों के आदान-प्रदान के नियम परिभाषित करता है
- इसका उपयोग मुख्य रूप से 3 या उससे अधिक स्वतंत्र entities के बीच संदेशों के आदान-प्रदान में होता है
- एक सामान्य scenario वह होता है जहाँ अलग-अलग कंपनियों द्वारा बनाए गए दो software systems और एक user शामिल होते हैं
- दोनों systems को user के बारे में जानकारी का आदान-प्रदान करना होता है
- custom integration भी किया जा सकता है, लेकिन उसका maintenance कठिन होता है
- SAML systems के बीच एक जैसे नियमों का पालन सुनिश्चित करके जटिल integration कार्य को सरल बनाता है
SAML संदेश फ़ॉर्मैट
- SAML संदेश XML फ़ॉर्मैट में होते हैं
- यह message syntax को परिभाषित करता है और बताता है कि message content को सुरक्षित रूप से कैसे process करना है
- जैसे, अगर
<Response> tag मिले तो <Assertion> tag खोजना चाहिए, यह समझा जा सकता है
- यह इस बारे में भी guidance देता है कि digital signature कैसी दिखती है और security issues से बचने के लिए messages को कैसे handle करना चाहिए
SAML की flexibility
- SAML को flexibility पर ज़ोर देकर design किया गया था। सिद्धांत रूप में SAML से बहुत कुछ किया जा सकता है, लेकिन यही flexibility complexity में बदल जाती है
- SAML specification में बहुत सारे exceptions हैं, और कई if तथा उदाहरण दिए गए हैं, जिससे edge cases बढ़ जाते हैं
- SAML पुराना है, इसलिए कुछ लोग इसकी flexibility का उपयोग करते हैं
- real-world production environments, खासकर legacy systems में, SAML कभी-कभी असामान्य व्यवहार करता है
- ज़्यादातर मामलों में SAML के एक छोटे subset पर ध्यान देने से काम आसान हो जाता है
SAML का वास्तविक उपयोग
- SAML का उपयोग मुख्य रूप से Single Sign-On (SSO) के लिए किया जाता है
- SAML कुछ अजीब तरह के SSO types को परिभाषित करता है, लेकिन आम तौर पर Web Browser SSO Profile का उपयोग होता है
- end user पहले एक centralized system में authenticate करता है और उसके बाद अपनी इच्छित software application तक पहुँचता है
- user application में सीधे authenticate नहीं करता
- उदाहरण के लिए, अगर आपने कभी Okta का उपयोग करके email access किया है, तो आपने Web Browser SSO Profile का उपयोग किया है
SSO से संबंधित entities
- SSO में 3 मुख्य पक्ष शामिल होते हैं:
- user: वह व्यक्ति जो application का उपयोग करना चाहता है
- service provider (SP): स्वयं application
- identity provider (IDP): वह centralized service जिसका उपयोग user authentication के लिए करता है
- हर customer के IDP को एक database की तरह समझा जा सकता है। यह लोगों से संबंधित data को track करता है
- कंपनियाँ अक्सर identity provider का उपयोग कर्मचारियों को departments में assign करने और अलग-अलग permissions देने के लिए करती हैं
- SAML के माध्यम से हर बार user login होने पर IDP से जानकारी लेनी होती है। SSO में मुख्य रूप से IDP से user ID की पुष्टि करने को कहा जाता है
- IDP के साथ pre-configured trust relationship आवश्यक होती है
- SAML SSO का उपयोग करने वाले हर customer के लिए application में अलग setup चाहिए
- लेकिन IDP के साथ सीधे messages का आदान-प्रदान नहीं होता। SAML SSO में service provider और identity provider user के browser के माध्यम से communicate करते हैं
SAML entities के बीच interaction कैसे होता है
- एक सामान्य SAML SSO process:
- user web browser में application के किसी हिस्से तक पहुँचने की कोशिश करता है
- जाँचा जाता है कि user के पास valid security context है या नहीं
- user के पास valid security context नहीं है, इसलिए login page दिखाया जाता है
- user कुछ जानकारी (जैसे email address) दर्ज करता है, जिसका उपयोग सही login method तय करने में होता है
- user को IDP के web address पर redirect किया जाता है और user के browser के माध्यम से SAML message IDP तक भेजा जाता है
- IDP user से credentials माँगने वाला prompt दिखाता है। user सफलतापूर्वक authenticate हो जाता है
- IDP user को application पर वापस redirect करता है, साथ में एक SAML message भी भेजता है जो user authentication की जानकारी देता है
- SAML message को process किया जाता है और यह तय किया जाता है कि user के लिए security context सेट करना चाहिए
- user को application के इच्छित हिस्से तक access दे दिया जाता है
- SAML SSO process को identity provider की ओर से भी शुरू किया जा सकता है
- इस स्थिति में authentication request भेजे बिना authentication response प्राप्त होता है
- SAML SSO support implement करते समय IDP-initiated SSO के लिए तैयार रहना चाहिए
SAML में आदान-प्रदान होने वाले संदेश
- SAML SSO में मुख्य रूप से 2 तरह के messages महत्वपूर्ण होते हैं
- service provider से IDP तक जाने वाले message को SAML request कहा जाता है
- IDP से service provider के पास वापस आने वाले message को SAML response कहा जाता है
- SAML request वास्तव में बहुत जटिल नहीं होती। XML को HTTP redirect के माध्यम से भेजना पर्याप्त होता है
<AuthnRequest> tag में ID शामिल की जाती है ताकि IDP मूल request से जुड़ा <Response> साझा कर सके
<Issuer> tag में लिपटा data भी IDP को भेजा जाता है ताकि उसे पता चल सके कि आप कौन हैं
- SAML response अधिक पेचीदा होती है। इसे आम तौर पर POST के माध्यम से भेजा जाता है
<Response> वैचारिक रूप से कुछ <Assertion> tags को wrap करता है
<Assertion> user के बारे में claims को wrap करता है (वह कौन है, उसने IDP के जरिए कैसे authenticate किया, आदि)
- Assertion को process करके यह तय किया जाता है कि user को login कराना है या नहीं
सावधानियाँ
- यहाँ कई details, खासकर security के लिहाज़ से महत्वपूर्ण बातें, छोड़ दी गई हैं
- यदि आपको व्यक्तिगत रुचि से या पेशेवर कारणों से SAML की गहराई में जाने की ज़रूरत नहीं है, तो SAML-आधारित login को खुद implement करने की सलाह नहीं दी जाती। यह समय की बर्बादी है
- अगर आप SAML को जितनी जल्दी हो सके configure करना चाहते हैं, तो हम open source SSOReady प्रदान करते हैं, जो SAML को abstract करता है। यह आपका बहुत समय और परेशानी बचा सकता है
अभी कोई टिप्पणी नहीं है.