سياسات SAMLتأكيد

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

الموضوع

  • المصادقة الواردة وتفويضها: التحقُّق من سياسة تأكيد SAML
    يتيح نوع سياسة SAML لخوادم واجهة برمجة التطبيقات الوكيلة التحقّق من صحة تأكيدات SAML المرتبطة بطلبات SOAP الواردة. تتحقّق سياسة SAML من الرسائل الواردة التي تحتوي على تأكيد SAML موقَّع رقميًا، وترفضها إذا كانت غير صالحة، وتضبط المتغيّرات التي تسمح بالسياسات الإضافية أو الخدمات الخلفية نفسها، للتحقّق بشكل أكبر من المعلومات في التأكيد.
  • إنشاء رمز مميّز صادر: إنشاء سياسة تأكيد SAML
    يتيح نوع سياسة SAML للخوادم الوكيلة لواجهة برمجة التطبيقات إرفاق تأكيدات SAML بطلبات XML الصادرة. تتوفر هذه التأكيدات بعد ذلك للسماح لخدمات الخلفية بتطبيق معالجة أمان إضافية للمصادقة والتفويض.

عيّنات

إنشاء تأكيد SAML

<GenerateSAMLAssertion name="SAML" ignoreContentType="false">
  <CanonicalizationAlgorithm />
  <Issuer ref="reference">Issuer name</Issuer>
  <KeyStore>
    <Name ref="reference">keystorename</Name>
    <Alias ref="reference">alias</Alias>
  </KeyStore>
  <OutputVariable>
    <FlowVariable>assertion.content</FlowVariable>
    <Message name="request">
      <Namespaces>
        <Namespace prefix="test">http://www.example.com/test</Namespace>
      </Namespaces>
      <XPath>/envelope/header</XPath>
    </Message>
  </OutputVariable>
  <SignatureAlgorithm />
  <Subject ref="reference">Subject name</Subject>
  <Template ignoreUnresolvedVariables="false">
    <!-- A lot of XML goes here, in CDATA, with {} around
         each variable -->
  </Template>
</GenerateSAMLAssertion>

إنشاء تأكيد SAML

التحقُّق من تأكيد SAML

<ValidateSAMLAssertion name="SAML" ignoreContentType="false">
  <Source name="request">
    <Namespaces>
      <Namespace prefix='soap'>http://schemas.xmlsoap.org/soap/envelope/</Namespace>
      <Namespace prefix='wsse'>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd</Namespace>
      <Namespace prefix='saml'>urn:oasis:names:tc:SAML:2.0:assertion</Namespace>
    </Namespaces>
    <AssertionXPath>/soap:Envelope/soap:Header/wsse:Security/saml:Assertion</AssertionXPath>
    <SignedElementXPath>/soap:Envelope/soap:Header/wsse:Security/saml:Assertion</SignedElementXPath>
  </Source>
  <TrustStore>TrustStoreName</TrustStore>
  <RemoveAssertion>false</RemoveAssertion>
</ValidateSAMLAssertion>

التحقُّق من صحة تأكيد SAML


مرجع العنصر

إنشاء تأكيد SAML

اسم الحقل الوصف
سمة واحدة (name) اسم مثيل السياسة ويجب أن يكون الاسم فريدًا في المؤسسة. تقتصر الأحرف التي يمكنك استخدامها في الاسم على: A-Z0-9._\-$ %. ومع ذلك، تفرض واجهة مستخدم الإدارة قيودًا إضافية، مثل الإزالة التلقائية للأحرف غير الأبجدية الرقمية.
سمة واحدة (ignoreContentType) قيمة منطقية يمكن ضبطها على true أو false. بشكل تلقائي، لن يتم إنشاء التأكيد إذا لم يكن نوع محتوى الرسالة من نوع محتوى XML. إذا تم ضبط السياسة على true، سيتم التعامل مع الرسالة على أنّها XML بغض النظر عن نوع المحتوى.
Issuer
المعرّف الفريد لموفّر الهوية في حال توفُّر السمة ref الاختيارية، سيتم تحديد قيمة "جهة الإصدار" في وقت التشغيل استنادًا إلى المتغيّر المحدّد. في حال عدم توفّر السمة ref الاختيارية، سيتم استخدام قيمة "جهة الإصدار".
KeyStore
تشير هذه السمة إلى اسم ملف تخزين المفاتيح الذي يحتوي على المفتاح الخاص والعنوان البديل للمفتاح الخاص المستخدَم لتوقيع تأكيدات SAML رقميًا.
OutputVariable
FlowVariable
Message هدف السياسة والقيم الصالحة هي message وrequest وresponse. عند ضبط السياسة على message، تسترد السياسة كائن الرسالة بشكل مشروط استنادًا إلى نقطة المرفق في السياسة. وعند إرفاقها بمسار الطلب، تعمل السياسة على ربط message بالطلب، وعندما يتم إرفاقها بمسار الاستجابة، تعمل السياسة على مطابقة message للاستجابة.
XPath تمثّل هذه السمة تعبير XPath الذي يشير إلى العنصر المتوفّر في مستند XML الصادر الذي ستُرفِق السياسة به تأكيد SAML.
SignatureAlgorithm SHA1 أو SHA256
Subject
المعرّف الفريد لموضوع تأكيد SAML. في حال توفُّر السمة ref الاختيارية، سيتم ضبط قيمة "الموضوع" في وقت التشغيل استنادًا إلى المتغيّر المحدّد. في حال توفُّر السمة ref الاختيارية، سيتم استخدام قيمة "الموضوع".
Template
في حال توفُّرها، سيتم إنشاء التأكيد عن طريق تشغيل هذا النموذج، واستبدال كل ما يُشار إليه بالمتغير {}، ثم التوقيع رقميًا على النتيجة. تتم معالجة النموذج باتّباع قواعد سياسة AssignMessage. يُرجى الاطّلاع على تحديد سياسة الرسائل.

التحقُّق من تأكيد SAML

اسم الحقل الوصف
سمة واحدة (name)
اسم مثيل السياسة يجب أن يكون الاسم فريدًا في المؤسسة. تقتصر الأحرف التي يمكنك استخدامها في الاسم على: A-Z0-9._\-$ %. ومع ذلك، تفرض واجهة مستخدم الإدارة قيودًا إضافية، مثل الإزالة التلقائية للأحرف غير الأبجدية الرقمية.
سمة واحدة (ignoreContentType) قيمة منطقية يمكن ضبطها على true أو false. بشكل تلقائي، لن يتم إنشاء التأكيد إذا لم يكن نوع محتوى الرسالة من نوع محتوى XML. إذا تم ضبط السياسة على true، سيتم التعامل مع الرسالة على أنّها XML بغض النظر عن نوع المحتوى.
Source هدف السياسة والقيم الصالحة هي message وrequest وresponse. عند ضبط السياسة على message، تسترد السياسة كائن الرسالة بشكل مشروط استنادًا إلى نقطة المرفق في السياسة. وعند إرفاقها بمسار الطلب، تعمل السياسة على ربط message بالطلب، وعندما يتم إرفاقها بمسار الاستجابة، تعمل السياسة على مطابقة message للاستجابة.
XPath
تمت إزالة هذا العمود. أحد الأطفال لدى Source. استخدِم AssertionXPath وSignedElementXPath.
AssertionXPath
أحد الأطفال لدى Source. تمثّل هذه السمة تعبير XPath الذي يشير إلى العنصر الوارد في مستند XML الوارد الذي يمكن للسياسة من خلاله استخراج تأكيد SAML.
SignedElementXPath
أحد الأطفال لدى Source. هو تعبير XPath يشير إلى العنصر الموجود في مستند XML الوارد الذي يمكن للسياسة من خلاله استخراج العنصر المُوقَّع. قد يكون هذا الحقل مختلفًا عن عنصر XPath الخاص بـ AssertionXPath أو مطابقًا له.
TrustStore
اسم متجر TrustStore الذي يحتوي على شهادات X.509 موثوق بها والمستخدمة للتحقّق من صحة التوقيعات الرقمية في تأكيدات SAML.
RemoveAssertion
قيمة منطقية يمكن ضبطها على true أو false. عند true، ستتم إزالة تأكيد SAML من رسالة الطلب قبل إعادة توجيه الرسالة إلى خدمة الخلفية.

ملاحظات الاستخدام

تحدِّد مواصفات لغة ترميز تأكيد الأمان (SAML) التنسيقات والبروتوكولات التي تتيح للتطبيقات تبادل المعلومات بتنسيق XML لأغراض المصادقة والتفويض.

"تأكيد الأمان" هو رمز مميّز موثوق به يصف سمة من سمات تطبيق أو مستخدم تطبيق أو أي مشارك آخر في معاملة. تتم إدارة تأكيدات الأمان واستهلاكها من خلال نوعَين من الكيانات:

  • موفّرو الهوية: إنشاء تأكيدات أمان بالنيابة عن المشاركين
  • مقدّمو الخدمات: يمكنك التحقُّق من صحة تأكيدات الأمان من خلال بناء علاقات موثوق بها مع مقدّمي الخدمات.

يمكن أن يعمل النظام الأساسي لواجهة برمجة التطبيقات كموفّر هوية ومقدّم خدمة. وهو يقوم بدور موفّر الهوية من خلال إنشاء تأكيدات وإرفاقها بالرسائل المطلوبة، ما يجعل هذه التأكيدات متاحة للمعالجة من خلال خدمات الخلفية. ويعمل كمقدم خدمة من خلال التحقق من صحة التأكيدات على رسائل الطلب الواردة.

يتوافق نوع سياسة SAML مع تأكيدات SAML التي تتطابق مع الإصدار 2.0 من المواصفات الأساسية لـ SAML والإصدار 1.0 من مواصفات الملف الشخصي للرمز المميّز لـ SAML WS-Security.

إنشاء تأكيد SAML

معالجة السياسات:

  1. إذا لم تكن الرسالة بتنسيق XML ولم يتم ضبط RestoreContentType على true، سيتم الإبلاغ عن خطأ.
  2. في حال ضبط "النموذج"، عالِج النموذج كما هو موضَّح في سياسة AssignMessage. في حال عدم توفّر أي متغيرات ولم يتم ضبط FocusUnresolvedVariables، يُرجى رفع قيمة الخطأ.
  3. في حال عدم ضبط "النموذج"، عليك إنشاء تأكيد يتضمّن قيم مَعلمتَي "الموضوع" و"جهة الإصدار" أو مراجعهما.
  4. وقِّع على التأكيد باستخدام المفتاح المحدد.
  5. إضافة تأكيد إلى الرسالة في XPath المحدد.

التحقُّق من تأكيد SAML

معالجة السياسات:

  1. تفحص السياسة الرسالة الواردة للتأكُّد من أنّ نوع وسائط الطلب هو XML، وذلك من خلال التحقّق مما إذا كان نوع المحتوى يتطابق مع التنسيقَين text/(.*+)?xml أو application/(.*+)?xml. إذا كان نوع الوسائط ليس XML ولم يتم ضبط <IgnoreContentType>، سيؤدي ذلك إلى حدوث خطأ في السياسة.
  2. ستحلل السياسة ملف XML. وفي حال تعذُّر التحليل، سيؤدي ذلك إلى حدوث خطأ.
  3. ستستخرج السياسة العنصر المُوقَّع والتأكيد، باستخدام مسارَي XPath المعنيَّين المحددَين (<SignedElementXPath> و<AssertionXPath>). إذا لم يؤدِ أي من هذين المسارين إلى عرض أي عنصر، ستؤدي السياسة إلى حدوث خطأ.
  4. ستتحقّق السياسة من أنّ التأكيد مطابق للعنصر الموقَّع، أو أنّه عنصر ثانوي للعنصر الموقَّع. وإذا لم يكن ذلك صحيحًا، ستتسبب السياسة في حدوث خطأ.
  5. في حال تضمين أي من العنصرَين <NotBefore> أو <NotOnOrAfter> في التأكيد، ستتحقّق السياسة من الطابع الزمني الحالي مقارنةً بهذه القيم، كما هو موضّح في الفقرة 2.5.1 من SAML Core.
  6. ستطبِّق السياسة أي قواعد إضافية لمعالجة "الشروط" كما هو موضَّح في الفقرة 2.5.1.1 من SAML Core.
  7. ستتحقق السياسة من صحة التوقيع الرقمي بتنسيق XML، باستخدام قيمتَي <TrustStore> و<ValidateSigner> كما هو موضّح أعلاه. وفي حال تعذّر التحقّق، ستُظهر السياسة خطأ.

بعد اكتمال السياسة بدون الإبلاغ عن خطأ، يمكن لمطوِّر الخادم الوكيل التأكد مما يلي:

  • التوقيع الرقمي على التأكيد صالح وتم توقيعه من قِبل مرجع تصديق موثوق به.
  • هذا التأكيد صالح للفترة الزمنية الحالية.
  • سيتم استخراج موضوع التأكيد وجهة إصداره وضبطهما في متغيرات التدفق. وتقع على مسؤولية السياسات الأخرى استخدام هذه القيم لإجراء عمليات مصادقة إضافية، مثل التحقق من صلاحية اسم الموضوع أو تمريره إلى نظام مستهدف للتحقّق من صحته.

يمكن استخدام سياسات أخرى، مثل ExitVariables، لتحليل ملف XML الأولي للتأكيد من أجل إجراء عملية تحقّق أكثر تعقيدًا.


متغيرات التدفق

هناك العديد من المعلومات التي يمكن تحديدها في تأكيد SAML. تأكيد SAML نفسه هو ملف XML يمكن تحليله باستخدام سياسة استخراج المتغيّرات وآليات أخرى لتنفيذ عمليات تحقّق أكثر تعقيدًا.

متغير الوصف
saml.id رقم تعريف تأكيد SAML
saml.issuer "جهة إصدار" التأكيد، التي تم تحويلها من نوع XML الأصلي إلى سلسلة
saml.subject "موضوع" التأكيد، يتم تحويله من نوع XML الأصلي إلى سلسلة
saml.valid عرض صحيح أو خطأ استنادًا إلى نتيجة التحقق من الصلاحية
saml.issueInstant IssueInstant
saml.subjectFormat تنسيق الموضوع
saml.scmethod طريقة تأكيد الموضوع
saml.scdaddress عنوان بيانات تأكيد الموضوع
saml.scdinresponse بيانات تأكيد الموضوع استجابةً
saml.scdrcpt مستلِم بيانات تأكيد الموضوع
saml.authnSnooa AuthnStatement SessionNotOnOrAfter
saml.authnContextClassRef AuthnStatement AuthnContextClassRef
saml.authnInstant AuthnStatement AuthInstant
saml.authnSessionIndex فهرس جلسة AuthnStatement

مرجع الخطأ

يصف هذا القسم رموز الأخطاء ورسائل الخطأ التي يتم عرضها ومتغيّرات الأخطاء التي تضبطها Edge عندما تؤدي هذه السياسة إلى ظهور خطأ. هذه المعلومات مهمة لمعرفة ما إذا كنت تعمل على تطوير قواعد للأخطاء للتعامل معها. لمزيد من المعلومات، يمكنك الاطّلاع على المعلومات التي يجب معرفتها عن الأخطاء المتعلقة بالسياسات وأخطاء المعالجة.

أخطاء النشر

يمكن أن تحدث هذه الأخطاء عند نشر خادم وكيل يحتوي على هذه السياسة.

اسم الخطأ السبب إصلاح
SourceNotConfigured لم يتم تحديد عنصر واحد أو أكثر من العناصر التالية في سياسة تأكيد SAML أو التحقق من صحة SAML: <Source> أو <XPath> أو <Namespaces> أو <Namespace>.
TrustStoreNotConfigured إذا كان العنصر <TrustStore> فارغًا أو غير محدّد في سياسة التحقّق من صحة SAMLAssertion، سيتعذّر نشر الخادم الوكيل لواجهة برمجة التطبيقات. يجب توفُّر متجر موثوق به صالح.
NullKeyStoreAlias إذا كان العنصر الفرعي <Alias> فارغًا أو غير محدَّد في العنصر <Keystore> ضِمن سياسة إنشاء SAML، سيتعذّر نشر الخادم الوكيل لواجهة برمجة التطبيقات. يجب إدخال اسم مستعار صالح لملف تخزين المفاتيح.
NullKeyStore إذا كان العنصر الفرعي <Name> فارغًا أو غير محدَّد في العنصر <Keystore> ضِمن سياسة GenerateSAMLAssertion، سيتعذّر نشر الخادم الوكيل لواجهة برمجة التطبيقات. يجب إدخال اسم صالح لملف تخزين المفاتيح.
NullIssuer إذا كان العنصر <Issuer> فارغًا أو لم يتم تحديده في سياسة تأكيد SAML، سيتعذّر نشر الخادم الوكيل لواجهة برمجة التطبيقات. يجب إدخال قيمة <Issuer> صالحة.

متغيرات الخطأ

ويتم ضبط هذه المتغيرات عند حدوث خطأ في وقت التشغيل. لمزيد من المعلومات، يمكنك الاطّلاع على المعلومات التي يجب معرفتها عن الأخطاء المتعلقة بالسياسات.

المتغيرات المكان مثال
fault.name="fault_name" fault_name هو اسم الخطأ. اسم الخطأ هو الجزء الأخير من رمز الخطأ. fault.name = "InvalidMediaTpe"
GenerateSAMLAssertion.failed بالنسبة إلى إعدادات سياسة تأكيد SAML للتحقّق من الصحة، تكون بادئة الخطأ ValidateSAMLAssertion. GenerateSAMLAssertion.failed = true

مثال على الردّ على الخطأ

{
  "fault": {
    "faultstring": "GenerateSAMLAssertion[GenSAMLAssert]: Invalid media type",
    "detail": {
      "errorcode": "steps.saml.generate.InvalidMediaTpe"
    }
  }
}

مثال لقاعدة خطأ

<FaultRules>
    <FaultRule name="invalid_saml_rule">
        <Step>
            <Name>invalid-saml</Name>
        </Step>
        <Condition>(GenerateSAMLAssertion.failed = "true")</Condition>
    </FaultRule>
</FaultRules>

مواضيع ذات صلة

استخراج المتغيّرات: سياسة استخراج المتغيّرات