أنت تعرض مستندات Apigee Edge.
انتقل إلى
مستندات Apigee X. معلومات
المزايا
فك ترميز عنوان JWS بدون التحقق من التوقيع في JWS، وكتابة كل عنوان على متغير التدفق. تكون هذه السياسة مفيدة للغاية عند استخدامها بما يتوافق مع سياسة تحقُّقJWS، عندما تكون قيمة الرأس من داخل JWS معروفة قبل التحقق من توقيع JWS
يمكن أن تحتوي خدمات JWS على حمولة مرفقة، كما في الشكل التالي:
header.payload.signature
أو يمكن لخدمة JWS حذف الحمولة، التي يُطلق عليها اسم الحمولة المنفصلة، وأن تكون على النحو التالي:
header..signature
تعمل سياسة DecodeJWS مع كلا النموذجين لأنّها تفك ترميز جزء العنوان في JWS فقط. تعمل سياسة DecodeJWS أيضًا بغض النظر عن الخوارزمية التي تم استخدامها لتوقيع JWS.
راجِع نظرة عامة على سياسات JWS وJWT للاطّلاع على مقدمة تفصيلية. ونظرة عامة على تنسيق JWS
فيديو
يمكنك مشاهدة فيديو قصير لمعرفة كيفية فك ترميز JWT. على الرغم من أن هذا الفيديو الخاصة بـ JWT، فإن العديد من المفاهيم هي نفسها بالنسبة لـ JWS.
نموذج: فك ترميز JWS
تعمل السياسة الموضّحة أدناه على فك ترميز JavaScript في متغيّر التدفق 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
إذا كانت خدمات JavaScript تتضمّن حمولة مرفقة، ستضبط jws.policy-name.header.payload
متغير التدفق إلى الحمولة. بالنسبة إلى الحمولة المنفصلة، يكون payload فارغًا.
يمكنك الاطّلاع على متغيّرات التدفق للحصول على قائمة كاملة بالمتغيّرات التي حدّدتها هذه السياسة.
مرجع عنصر لفك ترميز JWS
يصف مرجع السياسة عناصر سياسة فك ترميز 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، لا يتم ضبط هذا المتغيّر. |
مرجع الخطأ
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
| Fault code | HTTP status | Occurs when |
|---|---|---|
steps.jws.FailedToDecode |
401 | The policy was unable to decode the JWS. The JWS is possibly corrupted. |
steps.jws.FailedToResolveVariable |
401 | Occurs when the flow variable specified in the <Source> element of
the policy does not exist. |
steps.jws.InvalidClaim |
401 | For a missing claim or claim mismatch, or a missing header or header mismatch. |
steps.jws.InvalidJsonFormat |
401 | Invalid JSON found in the JWS header. |
steps.jws.InvalidJws |
401 | This error occurs when the JWS signature verification fails. |
steps.jws.InvalidPayload |
401 | The JWS payload is invalid. |
steps.jws.InvalidSignature |
401 | <DetachedContent> is omitted and the JWS has a detached content payload. |
steps.jws.MissingPayload |
401 | The JWS payload is missing. |
steps.jws.NoAlgorithmFoundInHeader |
401 | Occurs when the JWS omits the algorithm header. |
steps.jws.UnknownException |
401 | An unknown exception occurred. |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
| Error name | Occurs when |
|---|---|
InvalidAlgorithm |
The only valid values are: RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, HS256, HS384, HS512. |
|
|
Other possible deployment errors. |
متغيّرات الأخطاء
يتم ضبط هذه المتغيّرات عند حدوث خطأ في بيئة التشغيل. يمكنك الاطّلاع على مقالة ما تحتاج إلى معرفته للحصول على مزيد من المعلومات. حول أخطاء السياسة.
| المتغيرات | المكان | مثال |
|---|---|---|
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>