SAML बनाम फेडरेटेड लॉगिन OAuth के साथ


100

SAMA और फेडरेटेड लॉगिन OAuth में क्या अंतर है? कौन सा समाधान अधिक समझ में आता है, अगर कोई कंपनी तीसरे पक्ष के वेबएप का उपयोग करना चाहती है, और वह एकल साइन-ऑन भी चाहती है और प्रमाणीकरण प्राधिकरण है?

जवाबों:


128

वे विभिन्न समस्याओं का समाधान करते हैं।

एसएएमएल मानकों का एक समूह है जो एक उपयोगकर्ता कौन है, उसकी विशेषताओं के बारे में जानकारी साझा करने के लिए परिभाषित किया गया है, और आपको किसी चीज़ को एक्सेस करने या यहां तक ​​कि प्रमाणीकरण का अनुरोध करने के लिए अनुदान देने / इनकार करने का एक तरीका है।

OAuth किसी चीज़ तक पहुंच को दर्शाने के बारे में अधिक है। आप मूल रूप से किसी को आप के रूप में "कार्य" करने की अनुमति दे रहे हैं। इसका सबसे अधिक उपयोग पहुँच एपीआई प्रदान करने के लिए किया जाता है जो आपकी ओर से कुछ कर सकता है।

वे दो पूरी तरह से अलग चीजें हैं।


कुछ उदाहरण जो मदद कर सकते हैं।

OAuth एक ट्विटर के बारे में सोचते हैं। कहते हैं कि आप Google Buzz और Twitter का उपयोग कर रहे हैं , और आप एक ऐप लिखना चाहते हैं जो दो को सिंक्रोनाइज़ करने में सक्षम हो। आप मूल रूप से अपने ऐप और ट्विटर के बीच विश्वास स्थापित कर सकते हैं। पहली बार जब आप ऐप को ट्विटर से लिंक करने के लिए जाते हैं, तो आप ट्विटर पर लॉग इन करने के लिए क्लासिक प्रॉम्प्ट करते हैं, और फिर वह पुष्टिकरण बॉक्स पॉप अप करता है और पूछता है "क्या आप" अपने ऐप का नाम »तक पहुंच प्रदान करना चाहेंगे?" एक बार जब आप "हां" पर क्लिक करते हैं, तो विश्वास स्थापित हो गया है, और अब आपका ऐप ट्विटर पर आपकी तरह काम कर सकता है। यह आपके पोस्ट पढ़ सकता है, साथ ही नए भी बना सकता है।

एसएएमएल - एसएएमएल के लिए दो असंबंधित सदस्यता प्रणालियों के बीच कुछ प्रकार के "समझौते" के बारे में सोचते हैं। हमारे मामले में हम यूएस एयरवेज और हर्ट्ज का उपयोग कर सकते हैं। क्रेडेंशियल्स का कोई साझा सेट नहीं है जो आपको एक साइट से दूसरी साइट पर ले जा सकता है, लेकिन आपको बता दें कि हर्ट्ज यूएस एयरवेज को एक "सौदा" पेश करना चाहता है। (मुझे पता है कि यह एक चरम उदाहरण है, लेकिन मेरे साथ सहन करना)। एक उड़ान खरीदने के बाद, वे अपने अध्यक्ष सदस्यों को एक मुफ्त किराये की कार प्रदान करेंगे। यूएस एयरवेज और हर्ट्ज़ ट्रस्ट के कुछ रूप को स्थापित करेंगे, और उपयोगकर्ता को पहचानने का कोई तरीका। हमारे मामले में हमारी "फ़ेडरेटेड आईडी" ईमेल पता होगी, और यह एक तरह से ट्रस्ट हर्ट्ज़ ट्रस्ट का एक सेट होगा जो यूएस एयरवेज के पहचान प्रदाता एक टोकन वितरित करेगा जो सटीक और सुरक्षित तरीके से हो। उड़ान की बुकिंग के बाद यूएस एयरवेज की पहचान प्रदाता एक टोकन जेनरेट करेगी और बताएगी कि कैसे उन्होंने उपयोगकर्ता को प्रमाणित किया है, साथ ही हमारे मामले में व्यक्ति के बारे में "विशेषताएँ" सबसे महत्वपूर्ण विशेषता यूएस एयरवेज में उसकी स्थिति का स्तर होगा। एक बार जब यह टोकन आबाद हो जाता है, तो इसे किसी प्रकार के संदर्भ से गुजरता है, या एक यूआरएल में इनकोड किया जाता है और एक बार जब हम हर्ट्ज के पास पहुंचते हैं, तो यह टोकन को देखता है, इसे सत्यापित करता है और अब मुफ्त किराये की कार के लिए अनुमति दे सकता है।

इस एसएएमएल उदाहरण के साथ समस्या यह है कि कई में से केवल एक विशेष उपयोग का मामला है। एसएएमएल एक मानक है और लगभग कई तरीके हैं जो आप इसे लागू कर सकते हैं।


वैकल्पिक रूप से, यदि आप प्राधिकरण के बारे में परवाह नहीं करते हैं, तो आप लगभग तर्क और SAMID के माध्यम से प्रमाणीकरण का दावा कर सकते हैं ।


4
मुझे अभी भी अंतर नहीं मिला है। "अनुदान / इनकार का उपयोग" और "मेरे लिए एक ही बात की तरह" एपीआई के लिए ध्वनि का उपयोग "अनुदान। क्या आप 2 उदाहरण दे सकते हैं जो अधिक समान हैं, इसलिए मैं अंतर देख सकता हूं? उदाहरण के लिए, हम अपने ऐप और ट्विटर के बीच विश्वास स्थापित करने के लिए एसएएमएल का उपयोग क्यों नहीं कर सकते हैं? या आप यूएसएविज़ को विशेष सौदे के बारे में बताने के लिए हर्ट्ज़ के लिए OAuth का उपयोग क्यों नहीं कर सके?
टिम कूपर

3
मैं इसे प्राप्त करता हूं, लेकिन मैं हमेशा OAuth के साथ SSO कर सकता हूं (पहचान प्रदान करने वाले एपीआई तक पहुंच का अनुरोध करके)। इसका मतलब है कि OAuth SAML कर सकते हैं और अधिक कर सकते हैं?
डिर्क

@Dirk आप लगभग सही हैं यानी हम OAuth का उपयोग करके उपयोगकर्ता की पहचान प्राप्त कर सकते हैं और साथ ही कई एप्लिकेशन Google, फेसबुक, GitHub के माध्यम से लॉगिन के लिए पूछ सकते हैं ताकि उपयोगकर्ता की पहचान और अन्य विशेषताओं को उनके अनुप्रयोगों में प्राप्त कर सकें। लेकिन यह सच है कि हम OAuth का उपयोग करके पहचान प्राप्त करने से अधिक प्राप्त कर सकते हैं।
चिराग सोनी

39

संक्षेप में प्रस्तुत इस सरल विवरण पर एक नज़र डालें :

कई लोग SAML, OpenID और OAuth के बीच के मतभेदों को लेकर भ्रमित हैं, लेकिन यह वास्तव में बहुत सरल है। यद्यपि कुछ ओवरलैप हैं, यहां तीनों के बीच अंतर करने का एक बहुत ही सरल तरीका है।

OpenID - उपभोक्ताओं के लिए एकल साइन-ऑन

एसएएमएल - एंटरप्राइज़ उपयोगकर्ताओं के लिए एकल साइन-ऑन

OAuth - अनुप्रयोगों के बीच एपीआई प्राधिकरण

OO डिजाइन पैटर्न के साथ सहज लोगों के लिए, मुझे लगता है कि आवरण पैटर्न के लिए एक अच्छा कोरोलरी है । मुखौटा , डेकोरेटर और प्रॉक्सी पैटर्न के बारे में सोचें । मौलिक रूप से ये सभी समान हैं, वे सिर्फ रैपर हैं ... अंतर प्रत्येक पैटर्न का इरादा है

इसी तरह, SAML, OAuth और OpenID सभी एक सामान्य अंतर्निहित तंत्र के माध्यम से अलग-अलग इरादों की सुविधा प्रदान करते हैं , जो कि कुछ निजी इंटरैक्शन के लिए एक सेवा प्रदाता / पहचान प्राधिकरण के लिए पुनर्निर्देशन है, इसके बाद मूल तीसरे पक्ष के ऐप पर पुनर्निर्देशन किया जाता है।

नेट पर चारों ओर देखने से आपको प्रोटोकॉल की क्षमताओं के बीच ओवरलैप मिलेगा। OAuth के माध्यम से प्रमाणीकरण पूरी तरह से उचित है। OAuth पर SSO बहुत मायने नहीं रखता, क्योंकि SAML और OpenID विशेष रूप से संघ की पहचान की ओर अग्रसर हैं।

स्वयं के प्रश्न के लिए, कॉर्पोरेट संदर्भ में SAML SSO के लिए OAuth से अधिक उपयुक्त लगता है । यदि आप अपनी कॉर्पोरेट पहचान के साथ एकीकृत करना चाहते हैं, तो आप शर्त लगा सकते हैं कि आप पहले से ही SAML / LDAP / रेडियस आदि के साथ एकीकृत करने के लिए डिज़ाइन किए गए हैं, IMO OAuth इंटरनेट इंटरैक्शन के लिए अधिक उपयुक्त है। अनुप्रयोगों या शायद अनुप्रयोगों के बीच एक बड़े कॉर्पोरेट वातावरण में एक सेवा उन्मुख वास्तुकला शामिल है।

प्राधिकरण नियमों को कॉर्पोरेट वातावरण में अन्य तरीकों से भी निर्दिष्ट किया जा सकता है। इसके लिए LDAP एक सामान्य टूल है। उपयोगकर्ताओं को समूहों में व्यवस्थित करना और समूह सदस्यता के खिलाफ एप्लिकेशन विशेषाधिकारों को जोड़ना एक व्यापक दृष्टिकोण है। बस ऐसा होता है कि LDAP का उपयोग प्रमाणीकरण के लिए भी किया जा सकता है। सक्रिय निर्देशिका एक महान उदाहरण है, हालांकि मैं OpenLDAP पसंद करता हूं।


1
लिंक @Sundeep
quickshiftin

लिंक अपडेट किया गया, हालांकि सारांश जो पहले से ही उत्तर में था, वही है।
क्विकशिफ्टिन

OpenID को केवल OAuth पर बनाया गया है। oAuth स्वयं के द्वारा यूजर इंटरफेस का समर्थन नहीं करता है। OpenId हमारे लिए ऐसा करता है। OAuth और OpenID के बीच कोई अन्य अंतर नहीं है
यह

@ इटट्रैप सच नहीं; प्रमाणीकरण के बारे में OpenID, OAuth प्राधिकरण के बारे में है, हालांकि वे एक समान (ब्राउज़र पुनर्निर्देशित) तंत्र साझा करते हैं। न तो UI के साथ बहुत कुछ करना है ... इस उत्तर को भी देखें । आप यहां भी देख सकते हैं । अधिक स्पष्टीकरण हा के लिए आप मेरे उत्तर को फिर से पढ़ सकते हैं।
क्विकशिफ्टिन

1
@ इटैट्रैप आप ओयूथ 2.0 के शीर्ष पर निर्मित ओपनआईड स्पेक " प्रमाणीकरण को देखना चाहते हैं "; और यह भी OAuth 2.0 युक्ति "OAuth 2.0 प्राधिकरण ढांचे" ... फिर, एक के लिए डिज़ाइन किया गया है प्रमाणीकरण , के लिए अन्य प्राधिकरण । पूर्व के लिए बाद में उत्तोलन करना ठीक है क्योंकि वे एक सामान्य अंतर्निहित प्रतिमान को साझा करते हैं (3 या 4 वीं बार मैंने इसे डोल कहा है)। मेरे अपरिवर्तित उत्तर में सभी संक्षेप में। आपको सीखना चाहिए कि भाई को कैसे पढ़ना चाहिए।
क्विकशिफ्टिन

3

यहां अच्छा लेख मिला

यहां छवि विवरण दर्ज करें

एसएएमएल (सुरक्षा अभिकथन मार्कअप लैंग्वेज) सिंगल साइन ऑन (एसएसओ), फेडरेशन और आइडेंटिटी मैनेजमेंट को प्राप्त करने के लिए मानकों का सेट है।

उदाहरण : एक उपयोगकर्ता (प्रिंसिपल) एक फ्लाइट बुकिंग वेबसाइट, एयरफ़ेयर (पहचान प्रदाता) के साथ प्रमाणित करता है, जिसने एसएसएल को एसएएमएल के माध्यम से एक शटल बुकिंग वेबसाइट, शुटलर (सेवा प्रदाता) के साथ कॉन्फ़िगर किया है। एक बार फ्लायर के लिए प्रमाणित होने के बाद, उपयोगकर्ता को प्रमाणीकरण की आवश्यकता के बिना शुटलर पर शटर बुक कर सकते हैं

OAuth (ओपन प्राधिकरण) संसाधनों के प्राधिकरण के लिए एक मानक है। यह प्रमाणीकरण से संबंधित नहीं है।

उदाहरण : एक फोटो शेयरिंग मोबाइल ऐप (OAuth उपभोक्ता) जो उपयोगकर्ताओं को अपने इंस्टाग्राम अकाउंट (OAuth प्रदाता) से फ़ोटो आयात करने की अनुमति देता है जो कुछ घंटों के बाद समाप्त होने वाले फ़ोटो साझाकरण ऐप के लिए एक अस्थायी एक्सेस टोकन या कुंजी भेजता है।


2

SAML के पास "प्रोफ़ाइल" की एक किस्म है जो अन्य उपयोगकर्ताओं को आपकी साइट पर "लॉग इन" करने की अनुमति देती है। एसएएमएल-पी या एसएएमएल पैसिव सेट करने के लिए बहुत सामान्य और काफी सरल है। डब्ल्यूएस-ट्रस्ट समान है और यह वेबसाइटों के बीच फेडरेशन के लिए भी अनुमति देता है।

OAuth को प्राधिकरण के लिए डिज़ाइन किया गया है। आप यहां और अधिक पढ़ सकते हैं:

OpenID और OAuth में क्या अंतर है?


मैं "लॉगिन" और "अधिकृत" के बीच अंतर को समझने के लिए संघर्ष करता हूं। क्या आप अंतर का उदाहरण देते हुए एक उदाहरण दे सकते हैं?
टिम कूपर

@TimCooper "लॉगिन" प्रमाणीकरण के लिए ढीली शब्दावली है जबकि "अधिकृत" अच्छी तरह से प्राधिकरण है ... आपके अनुरोध के अनुसार एक उदाहरण
quickshiftin

1
@quickshiftin ठीक है, मैं उस भेद को समझता हूँ। आपका उत्तर यह लगता है कि SAML प्रमाणीकरण करता है जबकि OAuth प्राधिकरण करता है। क्या वो सही है? या क्या वे दोनों दोनों करते हैं - (किस मामले में मुझे अभी भी नहीं पता कि अंतर क्या है)।
टिम कूपर

1
@TimCooper प्रोटोकॉल में कुछ अतिव्यापी क्षमताएं हैं। OAuth प्राधिकरण पर लक्षित है, लेकिन यह प्रमाणीकरण का भी समर्थन करता है । एक कॉर्पोरेट संदर्भ में एसएसओ कुछ ऐसा है जिसके लिए एसएएमएल उद्देश्य-निर्मित है। दूसरी तरफ, एसएएमएल प्राधिकरण का भी समर्थन करता है। संदर्भ सबसे महत्वपूर्ण कारक है जब जो प्रौद्योगिकी का उपयोग करने के लिए निर्णय लेने है। पिछले साल मैंने एक्सप्रेशन इंजन के लिए एक एक्सटेंशन लिखा था जो कि केर्बोस बैकएंड के खिलाफ उपयोगकर्ताओं को प्रमाणित करने के लिए SimpleSAMLPhp का उपयोग करता था, फिर एक LDAP सिस्टम से प्राधिकरण नियमों को देखता है। यह वहाँ एक पागल दुनिया है!
क्विकशिफ्टिन

2

वे एक सूक्ष्म उपयोग के मामले को संभालते हैं

  • SAML - विभिन्न सेवा प्रदाताओं (जैसे, वेब या वेब सेवा) के लिए उपयोगकर्ता का साख (जैसे, SSO) साझा करना
  • OAuth - एक उपयोगकर्ता अपने / उसकी ओर से एक संसाधन का उपयोग करने के लिए एक अनुप्रयोग का प्रतिनिधित्व करता है

1

SAMLप्रमाणीकरण के लिए है - मुख्य रूप से सिंगल साइन ऑन परिदृश्य में उपयोग किया जाता है। OAuthसंसाधन अभ्यावेदन के प्राधिकार के लिए है।

JSON वेब टोकन (JWT) SAML XML टोकन के लिए एक विकल्प है। JWT का उपयोग OAuth के साथ किया जा सकता है

एक अच्छा संदर्भ SAML बनाम OAuth है: मुझे किसका उपयोग करना चाहिए?



0

शब्द महासंघ वास्तव में पूरे सिस्टम में कनेक्शन पहचान का मतलब है। यह SSO से संबंधित है लेकिन वे समान नहीं हैं। मैंने पाया कि यह ब्लॉग पोस्ट वास्तव में इस बात के लिए सहायक है कि फेडरेशन वास्तव में क्या मायने रखता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.