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

أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
info

الأدوات المستخدمة

  • المصادقة والترخيص الواردان: التحقّق من صحة سياسة SAML Assertion
    يتيح نوع سياسة 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، سيتم تحديد قيمة &quot;الجهة المصدرة&quot; في وقت التشغيل استنادًا إلى المتغيّر المحدّد. في حال عدم توفّر السمة الاختيارية ref، سيتم استخدام قيمة &quot;الجهة المصدرة&quot;.
KeyStore
اسم 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 Core والإصدار 1.0 من مواصفات WS-Security SAML Token Profile.

إنشاء تأكيد SAML

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

  1. إذا لم تكن الرسالة بتنسيق XML ولم يتم ضبط IgnoreContentType على true، سيتم عرض خطأ.
  2. في حال ضبط "النموذج"، تتم معالجة النموذج كما هو موضّح في سياسة AssignMessage. إذا كانت هناك أي متغيرات ناقصة ولم يتم ضبط IgnoreUnresolvedVariables، سيتم عرض خطأ.
  3. في حال عدم ضبط "النموذج"، أنشئ تأكيدًا يتضمّن قيم المَعلمتَين Subject وIssuer أو مراجعها.
  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>) الموضّحة أعلاه. إذا تعذّر التحقّق، ستعرض السياسة خطأ.

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

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

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


متغيّرات سير العمل

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

متغيّر الوصف
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 لم يتم تحديد السياسة أو فارغة: <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>

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

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