أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
الأدوات المستخدمة
يفك ترميز عنوان JWS بدون التحقّق من التوقيع على JWS، ويكتب كل عنوان في متغيّر تدفّق. تكون هذه السياسة أكثر فائدة عند استخدامها بالتزامن مع سياسة VerifyJWS، عندما يجب معرفة قيمة عنوان من داخل JWS قبل التحقّق من توقيع JWS.
يمكن أن يحتوي JWS على حمولة مرفقة، كما في النموذج:
header.payload.signature
أو يمكن أن يحذف JWS الحمولة، ويُطلق عليها اسم حمولة منفصلة، ويكون بالشكل التالي:
header..signature
تعمل سياسة DecodeJWS مع كلا النموذجين لأنّها لا تفك ترميز جزء العنوان من JWS إلا. تعمل سياسة DecodeJWS أيضًا بغض النظر عن الخوارزمية التي تم استخدامها لتوقيع JWS.
يمكنك الاطّلاع على نظرة عامة على سياسات JWS وJWT للحصول على مقدمة تفصيلية ونظرة عامة على تنسيق JWS.
فيديو
شاهِد فيديو قصيرًا لمعرفة كيفية فك ترميز رمز JWT. على الرغم من أنّ هذا الفيديو مخصّص لرموز JWT المميّزة، فإنّ العديد من المفاهيم هي نفسها بالنسبة إلى رموز JWS المميّزة.
مثال: فك ترميز JWS
تفكّ السياسة الموضّحة أدناه ترميز JWS تم العثور عليه في متغيّر التدفق var.JWS. يجب أن يكون هذا المتغيّر متوفّرًا وأن يحتوي على توقيع JWS صالح (يمكن فك ترميزه). يمكن أن تحصل السياسة على JWS من أي متغيّر في عملية التنفيذ.
<DecodeJWS name="JWS-Decode-HS256"> <DisplayName>JWS Verify HS256</DisplayName> <Source>var.JWS</Source> </DecodeJWS>
بالنسبة إلى كل عنوان في جزء العنوان من JWS، تحدّد السياسة متغيّر سير عمل باسم:
jws.policy-name.header.header-name
إذا كان JWS يتضمّن حمولة مرفقة، سيتم ضبط متغيّر المسار jws.policy-name.header.payload على الحمولة. بالنسبة إلى الحمولة المنفصلة، يكون payload فارغًا.
اطّلِع على متغيرات التدفق للحصول على قائمة كاملة بالمتغيرات التي تحدّدها هذه السياسة.
مرجع العنصر لـ "فك ترميز JWS"
يصف مرجع السياسة عناصر وسمات سياسة Decode JWS.
السمات التي تنطبق على العنصر ذي المستوى الأعلى
<DecodeJWS name="JWS" continueOnError="false" enabled="true" async="false">
السمات التالية مشتركة بين جميع العناصر الرئيسية للسياسة.
| السمة | الوصف | تلقائي | التواجد |
|---|---|---|---|
| الاسم |
الاسم الداخلي للسياسة تقتصر الأحرف التي يمكنك استخدامها في الاسم على:
A-Z0-9._\-$ %. ومع ذلك، تفرض واجهة مستخدم إدارة Edge قيودًا إضافية، مثل إزالة الأحرف غير الأبجدية الرقمية تلقائيًا.
يمكنك اختياريًا استخدام العنصر |
لا ينطبق | مطلوب |
| continueOnError |
اضبط القيمة على false لعرض رسالة خطأ عند تعذُّر تنفيذ إحدى السياسات. وهذا السلوك متوقّع لمعظم السياسات.
اضبط القيمة على |
خطأ | اختياري |
| مفعّلة |
اضبطها على true لفرض السياسة.
اضبط القيمة على |
صحيح | اختياري |
| غير متزامن | تم إيقاف هذه السمة نهائيًا. | خطأ | منهي العمل به |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
استخدِم هذه السمة بالإضافة إلى سمة الاسم لتصنيف السياسة في أداة تعديل وكيل واجهة المستخدم الإدارية باستخدام اسم مختلف بلغة طبيعية.
| تلقائي | في حال حذف هذا العنصر، سيتم استخدام قيمة سمة اسم السياسة. |
| التواجد | اختياري |
| النوع | سلسلة |
<Source>
<Source>JWS-variable</Source>
إذا كانت هذه السمة متوفّرة، فإنّها تحدّد متغيّر التدفق الذي تتوقّع السياسة العثور فيه على JWS لفك تشفيره.
| تلقائي | request.header.authorization (يُرجى الاطّلاع على الملاحظة أعلاه للحصول على معلومات مهمة
حول الإعداد التلقائي). |
| التواجد | اختياري |
| النوع | سلسلة |
| القيم الصالحة | اسم متغيّر في مسار Edge |
متغيّرات التدفق
بعد النجاح، تم ضبط السياستَين التحقّق من JWS وفك ترميز JWS. متغيرات السياق وفقًا لهذا النمط:
jws.{policy_name}.{variable_name}
على سبيل المثال، إذا كان اسم السياسة هو verify-jws، يتم تخزين السياسة.
الخوارزمية المحدّدة في JWS لمتغير السياق هذا:
jws.verify-jws.header.algorithm
| اسم المتغير | الوصف |
|---|---|
decoded.header.name |
هذه السمة هي قيمة قابلة للتحليل بتنسيق JSON خاصة بعنوان في الحمولة. تم تعيين متغير واحد
كل عنوان في الحمولة. بينما يمكنك أيضًا استخدام متغيرات تدفق header.name،
هذا هو المتغير الذي يُنصح باستخدامه للوصول إلى العنوان. |
header.algorithm |
خوارزمية التوقيع المستخدمة في JWS. على سبيل المثال، RS256، وHS384، وهكذا. يُرجى الاطّلاع على مَعلمة العنوان(الخوارزمية) لمزيد من المعلومات. |
header.kid |
معرّف المفتاح، إذا تمت إضافته عند إنشاء JWS راجِع أيضًا القسم "استخدام مجموعة مفاتيح ويب JSON (JWKS)" في JWT وJWS نظرة عامة على السياسات للتحقّق من خدمات JWS. يمكنك الاطّلاع على معلمة العنوان(معرّف المفتاح) للحصول على مزيد من المعلومات. |
header.type |
قيمة نوع العنوان. راجِع مَعلمة عنوان(النوع) للتعرّف على مزيد من المعلومات. |
header.name |
قيمة العنوان المسمى (قياسي أو إضافي). سيتم تعيين أحد هذه الإجراءات كل عنوان إضافي في جزء الرأس من JWS. |
header-json |
العنوان بتنسيق JSON. |
payload |
حمولة JWS في حال وجود حمولة بيانات مرفقة في JWS بالنسبة إلى الحمولة المنفصلة، يكون هذا المتغير فارغًا. |
valid |
في حالة التحقّق منJWS، سيكون هذا المتغيّر صحيحًا عند إثبات صحة التوقيع.
الوقت الحالي قبل انتهاء صلاحية الرمز المميز، وبعد قيمة notBefore، إذا كانت
موجودة. وبخلاف ذلك، يتم عرض "خطأ".
في حالة DecodeJWS، لا يتم ضبط هذا المتغيّر. |
مرجع الخطأ
يصف هذا القسم رموز الأخطاء ورسائل الخطأ التي يتم عرضها ومتغيرات الأخطاء التي تضبطها Edge عندما تؤدي هذه السياسة إلى ظهور خطأ. هذه المعلومات مهمة لمعرفة ما إذا كنت تعمل على تطوير قواعد للأخطاء للتعامل معها. لمزيد من المعلومات، يمكنك الاطّلاع على المعلومات التي يجب معرفتها عن الأخطاء المتعلقة بالسياسات وأخطاء المعالجة.
أخطاء في وقت التشغيل
يمكن أن تحدث هذه الأخطاء عند تنفيذ السياسة.
| رمز الخطأ | رموز حالة HTTP | يحدث عند |
|---|---|---|
steps.jws.FailedToDecode |
401 | تعذَّر على السياسة فك ترميز JWS. من المحتمل أن يكون JWS تالفًا. |
steps.jws.FailedToResolveVariable |
401 | يحدث ذلك عندما لا يكون متغيّر التدفق المحدّد في العنصر <Source> ضِمن
السياسة متوفّرًا. |
steps.jws.InvalidClaim |
401 | بسبب عدم تطابق مطالبة أو مطالبة، أو عدم تطابق العنوان أو العنوان. |
steps.jws.InvalidJsonFormat |
401 | تم العثور على تنسيق JSON غير صالح في عنوان JWS. |
steps.jws.InvalidJws |
401 | يحدث هذا الخطأ عند تعذُّر إثبات صحة توقيع JWS. |
steps.jws.InvalidPayload |
401 | حمولة JWS غير صالحة. |
steps.jws.InvalidSignature |
401 | تم حذف <DetachedContent> ولديها حمولة بيانات منفصلة في JWS. |
steps.jws.MissingPayload |
401 | حمولة JWS مفقودة. |
steps.jws.NoAlgorithmFoundInHeader |
401 | يحدث عندما تغفل JWS عنوان الخوارزمية. |
steps.jws.UnknownException |
401 | حدث استثناء غير معروف. |
أخطاء النشر
يمكن أن تحدث هذه الأخطاء عند نشر خادم وكيل يحتوي على هذه السياسة.
| اسم الخطأ | يحدث عند |
|---|---|
InvalidAlgorithm |
القيم الصالحة الوحيدة هي: RS256 وRS384 وRS512 وPS256 وPS384 وPS512 وES256 وES384 وES512 وHS256 وHS384 وHS512. |
|
|
أخطاء النشر المحتملة الأخرى |
متغيّرات الأخطاء
يتم ضبط هذه المتغيّرات عند حدوث خطأ في بيئة التشغيل. يمكنك الاطّلاع على مقالة ما تحتاج إلى معرفته للحصول على مزيد من المعلومات. حول أخطاء السياسة.
| المتغيرات | المكان | مثال |
|---|---|---|
fault.name="fault_name" |
fault_name هو اسم الخطأ، كما هو موضَّح في جدول أخطاء وقت التشغيل أعلاه. اسم الخطأ هو الجزء الأخير من رمز الخطأ. | fault.name Matches "TokenExpired" |
JWS.failed |
تضبط جميع سياسات JWS المتغيّر نفسه في حال حدوث عطل. | jws.JWS-Policy.failed = true |
مثال على استجابة الخطأ
لمعالجة الخطأ، أفضل ممارسة هي رصد الجزء errorcode من الخطأ
الاستجابة. لا تعتمد على النص في faultstring، لأنه قد يتغير.
مثال على قاعدة الخطأ
<FaultRules>
<FaultRule name="JWS Policy Errors">
<Step>
<Name>JavaScript-1</Name>
<Condition>(fault.name Matches "TokenExpired")</Condition>
</Step>
<Condition>JWS.failed=true</Condition>
</FaultRule>
</FaultRules>