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

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

الموضوع

تفكّ ترميز عنوان JWS بدون التحقق من التوقيع في JWS، وتكتب كل عنوان إلى متغيّر التدفق. يمكن الاستفادة القصوى من هذه السياسة عند استخدامها بالتوافق مع سياسة التحقّق من JWS عندما يجب أن تكون قيمة العنوان من داخل JWS معروفة قبل التحقّق من توقيع JWS.

يمكن أن يتضمّن JWS حمولة مرفقة، كما في النموذج:

header.payload.signature

أو يمكن لـ JWS حذف الحمولة، والتي تُسمى حمولة البيانات detached، وتكون على النحو التالي:

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

يصف مرجع السياسة عناصر وسمات سياسة فك ترميز JWS.

السمات التي تنطبق على عنصر المستوى الأعلى

<DecodeJWS name="JWS" continueOnError="false" enabled="true" async="false">

السمات التالية شائعة في جميع العناصر الرئيسية للسياسة.

السمة الوصف تلقائي الحضور
اسم الاسم الداخلي للسياسة تقتصر الأحرف التي يمكنك استخدامها في الاسم على: A-Z0-9._\-$ %. ومع ذلك، تفرض واجهة مستخدم إدارة Edge قيودًا إضافية، مثل الإزالة التلقائية للأحرف غير الأبجدية الرقمية.

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

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

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

false إجراء اختياري
مفعّلة اضبط القيمة على true لفرض السياسة.

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

صحيح إجراء اختياري
async تم إيقاف هذه السمة نهائيًا. false منهي العمل به

<DisplayName>

<DisplayName>Policy Display Name</DisplayName>

يمكن استخدامها بالإضافة إلى سمة الاسم لتصنيف السياسة في محرِّر الخادم الوكيل لواجهة المستخدم الإدارية باسم مختلف بلغة طبيعية.

تلقائي إذا لم تستخدم هذا العنصر، يتم استخدام قيمة سمة الاسم الخاصة بالسياسة.
الحضور إجراء اختياري
النوع سلسلة

<المصدر>

<Source>JWS-variable</Source>

وفي حال توفّره، تحدّد السياسة متغيّر التدفق الذي تتوقع السياسة أن تجد فيه JWS لفك ترميزه.

تلقائي request.header.authorization (اطّلِع على الملاحظة الواردة أعلاه للحصول على معلومات مهمة عن الإعداد التلقائي).
الحضور إجراء اختياري
النوع سلسلة
القيم الصالحة اسم متغيّر تدفق الحافة

متغيرات التدفق

بعد نجاح العملية، تضبط سياستا التحقّق من 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 وما إلى ذلك. راجِع مَعلمة العنوان(Algorithm) لمعرفة المزيد.
header.kid رقم تعريف المفتاح، إذا تمت إضافته عند إنشاء JWS. يمكنك أيضًا الاطّلاع على مقالة "استخدام مجموعة مفاتيح ويب JSON (JWKS)" في نظرة عامة على سياسات JWT وJWS للتحقّق من JWS. اطّلِع على مَعلمة العنوان(معرّف المفتاح) لمزيد من المعلومات.
header.type تمثّل هذه السمة قيمة نوع العنوان. اطّلِع على مَعلمة العنوان(Type) لمزيد من المعلومات.
header.name قيمة العنوان المُسمّى (عادية أو إضافية). سيتم ضبط أحد هذه الإعدادات لكل عنوان إضافي في جزء العنوان من JWS.
header-json العنوان بتنسيق JSON.
payload حمولة JWS إذا كانت JWS لديها حمولة مرفقة ويكون هذا المتغير فارغًا بالنسبة إلى حمولة البيانات المنفصلة.
valid في حالة التحقّق من JWS، سيكون هذا المتغيّر صحيحًا عند التحقّق من التوقيع، ويكون الوقت الحالي قبل انتهاء صلاحية الرمز المميّز، وبعد قيمة notbefore للرمز المميّز في حال توفّره. وإلا false.

في حالة 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>