أنت الآن بصدد الاطّلاع على مستندات 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، سيتم تحديد قيمة "الجهة المصدرة" في وقت التشغيل استنادًا إلى المتغيّر المحدّد. في حال عدم توفّر السمة الاختيارية ref، سيتم استخدام قيمة "الجهة المصدرة".
|
||
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
معالجة السياسة:
- إذا لم تكن الرسالة بتنسيق XML ولم يتم ضبط IgnoreContentType على
true، سيتم عرض خطأ. - في حال ضبط "النموذج"، تتم معالجة النموذج كما هو موضّح في سياسة AssignMessage. إذا كانت هناك أي متغيرات ناقصة ولم يتم ضبط IgnoreUnresolvedVariables، سيتم عرض خطأ.
- في حال عدم ضبط "النموذج"، أنشئ تأكيدًا يتضمّن قيم المَعلمتَين Subject وIssuer أو مراجعها.
- وقِّع على التأكيد باستخدام المفتاح المحدّد.
- أضِف التأكيد إلى الرسالة في XPath المحدّد.
التحقّق من صحة تأكيد SAML
معالجة السياسة:
- تتحقّق السياسة من الرسالة الواردة للتأكّد من أنّ نوع الوسائط للطلب هو XML، وذلك من خلال التحقّق مما إذا كان نوع المحتوى يتطابق مع التنسيقات
text/(.*+)?xmlأوapplication/(.*+)?xml. إذا لم يكن نوع الوسائط XML ولم يتم ضبط<IgnoreContentType>، ستؤدي السياسة إلى حدوث خطأ. - ستحلّل السياسة ملف XML. إذا تعذّر التحليل، سيتم عرض خطأ.
- ستستخرج السياسة العنصر الموقّع والبيان باستخدام مسارات XPath المحدّدة (
<SignedElementXPath>و<AssertionXPath>). وإذا لم يعرض أي من هذين المسارين عنصرًا، ستعرض السياسة خطأً. - ستتحقّق السياسة من أنّ بيان التأكيد هو نفسه العنصر الموقَّع، أو أنّه عنصر ثانوي تابع للعنصر الموقَّع. إذا لم يكن هذا صحيحًا، ستؤدي السياسة إلى حدوث خطأ.
- في حال توفّر أي من العنصرين
<NotBefore>أو<NotOnOrAfter>في التأكيد، ستتحقّق السياسة من الطابع الزمني الحالي مقارنةً بهاتين القيمتين، كما هو موضّح في القسم 2.5.1 من SAML Core. - ستطبّق السياسة أي قواعد إضافية لمعالجة "الشروط" كما هو موضّح في القسم 2.5.1.1 من SAML Core.
- تتحقّق السياسة من صحة التوقيع الرقمي بتنسيق 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>.
|
build |
TrustStoreNotConfigured |
إذا كان العنصر <TrustStore> فارغًا أو غير محدّد في السمة
عليك التحقّق من صحة SAMLAssertion، ثم تعذُّر نشر الخادم الوكيل لواجهة برمجة التطبيقات.
يجب توفّر متجر موثوق به صالح.
|
build |
NullKeyStoreAlias |
إذا كان العنصر الفرعي <Alias> فارغًا أو غير محدّد في السمة <Keystore>
عنصر إنشاء سياسة تأكيد SAML، ثم نشر واجهة برمجة التطبيقات
فشل الخادم الوكيل. يجب إدخال اسم مستعار صالح لملف تخزين المفاتيح.
|
build |
NullKeyStore |
إذا كان العنصر الفرعي <Name> فارغًا أو غير محدّد في السمة <Keystore>
في سياسة GenerateSAMLAssertion، ثم نشر واجهة برمجة التطبيقات
فشل الخادم الوكيل. يجب إدخال اسم صالح لملف تخزين المفاتيح.
|
build |
NullIssuer |
إذا كان العنصر <Issuer> فارغًا أو غير محدّد في إنشاء SAML
سياسة التأكيد، سيتعذّر نشر الخادم الوكيل لواجهة برمجة التطبيقات. حاسمة
يجب إدخال قيمة <Issuer> صالحة.
|
build |
متغيّرات الأخطاء
يتم ضبط هذه المتغيّرات عند حدوث خطأ في بيئة التشغيل. يمكنك الاطّلاع على مقالة ما تحتاج إلى معرفته للحصول على مزيد من المعلومات. حول أخطاء السياسة.
| المتغيرات | المكان | مثال |
|---|---|---|
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>مواضيع ذات صلة
استخراج المتغيرات: سياسة استخراج المتغيرات