SAML Basics

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

SAML Overview

सुरक्षा दावा मार्कअप भाषा (SAML) पहचान प्रदाताओं (IdP) को सेवा प्रदाताओं (SP) को अधिकृतता प्रमाण पत्रों को भेजने के लिए उपयोग करने की सुविधा प्रदान करता है, जो एकल साइन-ऑन (SSO) को सुविधाजनक बनाता है। यह दृष्टिकोण कई वेबसाइटों पर एक ही सेट के प्रमाण पत्रों का उपयोग करने के द्वारा कई लॉगिन का प्रबंधन सरल बनाता है। यह IdPs और SPs के बीच मानकीकृत संचार के लिए XML का उपयोग करता है, उपयोगकर्ता पहचान की प्रमाणिकता को सेवा अधिकृतता के साथ जोड़ता है।

SAML और OAuth के बीच तुलना

  • SAML उद्यमों को SSO लॉगिन सुरक्षा पर अधिक नियंत्रण प्रदान करने के लिए तैयार किया गया है।

  • OAuth मोबाइल के लिए अधिक अनुकूलित होने के लिए डिज़ाइन किया गया है, JSON का उपयोग करता है, और Google और Twitter जैसी कंपनियों के सहयोग से बनाया गया है।

SAML प्रमाणीकरण फ्लो

अधिक विवरण के लिए https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/ से पूरी पोस्ट देखें। यह एक सारांश है:

SAML प्रमाणीकरण प्रक्रिया कई चरणों में सम्मिलित है, जैसा कि यह छायाचित्र में दिखाया गया है:

  1. संसाधन पहुंच प्रयास: उपयोगकर्ता संरक्षित संसाधन तक पहुंचने की कोशिश करता है।

  2. SAML अनुरोध उत्पन्न करना: SP उपयोगकर्ता को पहचानने में सक्षम नहीं है और एक SAML अनुरोध उत्पन्न करता है।

  3. IdP पर पुनर्निर्देशित करें: उपयोगकर्ता को IdP पर पुनर्निर्देशित किया जाता है, जिसमें SAML अनुरोध उपयोगकर्ता के ब्राउज़र के माध्यम से होता है।

  4. IdP अनुरोध प्राप्त करता है: IdP SAML अनुरोध प्राप्त करता है।

  5. IdP में प्रमाणीकरण: IdP उपयोगकर्ता का प्रमाणीकरण करता है।

  6. उपयोगकर्ता मान्यता: IdP उपयोगकर्ता की वैधता की मान्यता करता है ताकि अनुरोधित संसाधन तक पहुंचने की अनुमति हो।

  7. SAML प्रतिक्रिया निर्माण: IdP आवश्यक दावे समेत SAML प्रतिक्रिया उत्पन्न करता है।

  8. SP के ACS URL पर पुनर्निर्देशित करें: उपयोगकर्ता को SP के Assertion Consumer Service (ACS) URL पर पुनर्निर्देशित किया जाता है।

  9. SAML प्रतिक्रिया मान्यता: ACS SAML प्रतिक्रिया की मान्यता करता है।

  10. संसाधन पहुंच दी गई: प्रारंभ में अनुरोधित संसाधन तक पहुंचने की अनुमति दी जाती है।

SAML अनुरोध उदाहरण

एक स्थिर संसाधन तक पहुंच के लिए एक उपयोगकर्ता अनुरोध करता है https://shibdemo-sp1.test.edu/secure/। SP पहचान की कमी को पहचानता है और एक SAML अनुरोध उत्पन्न करता है:

GET /secure/ HTTP/1.1
Host: shibdemo-sp1.test.edu
...

यहाँ रॉ SAML अनुरोध ऐसा दिखता है:

<?xml version="1.0"?>
<samlp:AuthnRequest ...
</samlp:AuthnRequest>

Key elements of this request include:

  • AssertionConsumerServiceURL: यह निर्दिष्ट करता है कि IdP को पोस्ट-प्रमाणीकरण के बाद SAML Response कहां भेजना चाहिए।

  • Destination: रिक्वेस्ट भेजा जाता है उस IdP का पता।

  • ProtocolBinding: SAML प्रोटोकॉल संदेशों के प्रेषण विधि को परिभाषित करता है।

  • saml:Issuer: उस संस्था की पहचान करता है जिसने रिक्वेस्ट प्रारंभ की।

SAML रिक्वेस्ट जनरेशन के बाद, SP एक 302 रीडायरेक्ट के साथ प्रतिक्रिया देता है, जो ब्राउज़र को IdP की ओर निर्देशित करता है और SAML रिक्वेस्ट को HTTP प्रतिक्रिया के Location हेडर में एन्कोड किया जाता है। RelayState पैरामीटर लेन-देन के दौरान स्थिति सूचना बनाए रखता है, इसे सुनिश्चित करता है कि SP पहले संसाधन रिक्वेस्ट को प्राप्त करते समय SAML Response को पहचानता है। SAMLRequest पैरामीटर एक संपीड़ित और एन्कोड किया गया संस्करण है रॉ एक्सएमएल स्निपेट का, डिफ्लेट संकुचन और बेस64 एन्कोडिंग का उपयोग करते हुए।

SAML Response उदाहरण

आप एक पूर्ण SAML प्रतिक्रिया यहाँ पा सकते हैं। प्रतिक्रिया के मुख्य घटक शामिल हैं:

  • ds:Signature: यह खंड, एक एक्सएमएल सिग्नेचर, दावेदार की पुष्टि और मौलिकता सुनिश्चित करता है। उदाहरण में SAML प्रतिक्रिया में दो ds:Signature तत्व हैं, एक संदेश के लिए और दूसरा दावा के लिए।

  • saml:Assertion: यह भाग उपयोगकर्ता की पहचान और संभावित अन्य गुणों के बारे में जानकारी रखता है।

  • saml:Subject: यह दावे में उक्त सभी वक्तव्यों के मुख्य विषय को निर्दिष्ट करता है।

  • saml:StatusCode: उत्तर में ऑपरेशन की स्थिति को प्रतिनिधित्व करता है जिसके लिए रिक्वेस्ट किया गया था।

  • saml:Conditions: दावे की वैधता और निर्दिष्ट सेवा प्रदाता जैसी शर्तों का विवरण देता है।

  • saml:AuthnStatement: यह सुनिश्चित करता है कि IdP ने दावे के विषय का प्रमाणीकरण किया है।

  • saml:AttributeStatement: दावे के विषय का वर्णन करने वाले गुणों को शामिल करता है।

SAML Response के बाद, प्रक्रिया में एक 302 रीडायरेक्ट शामिल है। यह सेवा प्रदाता के Assertion Consumer Service (ACS) URL को पोस्ट रिक्वेस्ट में ले जाता है। पोस्ट रिक्वेस्ट में RelayState और SAMLResponse पैरामीटर शामिल होते हैं। ACS को SAML Response को प्रसंस्कृत करने और सत्यापित करने की जिम्मेदारी होती है।

पोस्ट रिक्वेस्ट प्राप्त होने और SAML Response की पुष्टि होने के बाद, उपयोगकर्ता द्वारा पहले अनुरोधित संरक्षित संसाधन तक पहुंच मिलती है। इसे /secure/ अंत्यस्थी पर GET अनुरोध और 200 OK प्रतिक्रिया के साथ प्रदर्शित किया जाता है, जिससे संसाधन तक सफल पहुंच मिलती है।

XML सिग्नेचर

XML सिग्नेचर बहुमुखी हैं, पूरे XML ट्री या उसके भीतर विशिष्ट तत्वों को साइन करने की क्षमता रखते हैं। इन्हें किसी भी XML ऑब्जेक्ट पर लागू किया जा सकता है, केवल प्रतिक्रिया तत्वों पर नहीं। नीचे XML सिग्नेचर के मुख्य प्रकार दिए गए हैं:

XML सिग्नेचर की मूल संरचना

<Signature>
<SignedInfo>
<CanonicalizationMethod />
<SignatureMethod />
<Reference>
<Transforms />
<DigestMethod />
<DigestValue />
</Reference>
...
</SignedInfo>
<SignatureValue />
<KeyInfo />
<Object />
</Signature>

Each Reference element signifies a specific resource being signed, identifiable by the URI attribute.

XML हस्ताक्षर के प्रकार

  1. Enveloped Signature: इस प्रकार के हस्ताक्षर उस संसाधन का वंशज है जिसे यह साइन करता है, अर्थात हस्ताक्षर साइन की गई सामग्री के साथ ही XML संरचना में शामिल है।

उदाहरण:

<samlp:Response ... ID="..." ... >
...
<ds:Signature>
<ds:SignedInfo>
...
<ds:Reference URI="#...">
...
</ds:Reference>
</ds:SignedInfo>
</ds:Signature>
...
</samlp:Response>

एक enveloped हस्ताक्षर में, ds:Transform तत्व यह निर्दिष्ट करता है कि यह enveloped है जिसके माध्यम से enveloped-signature एल्गोरिथ्म।

  1. Enveloping Signature: enveloped हस्ताक्षरों के विपरीत, enveloping हस्ताक्षर साइन किए जाने वाले संसाधन को लपेटते हैं।

उदाहरण:

<ds:Signature>
<ds:SignedInfo>
...
<ds:Reference URI="#...">
...
</ds:Reference>
</ds:SignedInfo>
<samlp:Response ... ID="..." ... >
...
</samlp:Response>
</ds:Signature>
  1. Detached Signature: यह प्रकार साइन की गई सामग्री से अलग है। हस्ताक्षर और सामग्री अलग-अलग मौजूद हैं, लेकिन दोनों के बीच एक लिंक बनाए रखा जाता है।

उदाहरण:

<samlp:Response ... ID="..." ... >
...
</samlp:Response>
<ds:Signature>
<ds:SignedInfo>
...
<ds:Reference URI="#...">
...
</ds:Reference>
</ds:SignedInfo>
</ds:Signature>

समाप्ति के रूप में, XML हस्ताक्षर XML दस्तावेजों को सुरक्षित करने के लिए लचीले तरीके प्रदान करते हैं, प्रत्येक प्रकार अलग-अलग संरचनात्मक और सुरक्षा आवश्यकताओं की सेवा करता है।

संदर्भ

Last updated