سياسة فك الترميز

أنت الآن بصدد الاطّلاع على مستندات 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 قيودًا إضافية، مثل إزالة الأحرف غير الأبجدية الرقمية تلقائيًا.

يمكنك اختياريًا استخدام العنصر <displayname></displayname> لتسمية السياسة في أداة تعديل وكيل واجهة المستخدم الإدارية باسم مختلف بلغة طبيعية.

لا ينطبق مطلوب
continueOnError اضبط القيمة على false لعرض رسالة خطأ عند تعذُّر تنفيذ إحدى السياسات. وهذا السلوك متوقّع لمعظم السياسات.

اضبط القيمة على true لمواصلة تنفيذ التدفق حتى بعد تعذُّر تنفيذ إحدى السياسات.

خطأ اختياري
مفعّلة اضبطها على true لفرض السياسة.

اضبط القيمة على false "لإيقاف" السياسة. لن يتم فرض السياسة حتى إذا بقيت مرفقة بتسلسل.

صحيح اختياري
غير متزامن تم إيقاف هذه السمة نهائيًا. خطأ منهي العمل به

<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.

EmptyElementForKeyConfiguration

FailedToResolveVariable

InvalidConfigurationForActionAndAlgorithmFamily

InvalidConfigurationForVerify

InvalidEmptyElement

InvalidFamiliesForAlgorithm

InvalidKeyConfiguration

InvalidNameForAdditionalClaim

InvalidNameForAdditionalHeader

InvalidPublicKeyId

InvalidPublicKeyValue

InvalidSecretInConfig

InvalidTypeForAdditionalClaim

InvalidTypeForAdditionalHeader

InvalidValueForElement

InvalidValueOfArrayAttribute

InvalidVariableNameForSecret

MissingConfigurationElement

MissingElementForKeyConfiguration

MissingNameForAdditionalClaim

MissingNameForAdditionalHeader

أخطاء النشر المحتملة الأخرى

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

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

المتغيرات المكان مثال
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>