سياسة CheckJWS

أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
info

الأدوات المستخدمة

تتحقّق هذه السمة من التوقيع على JWS الذي تم استلامه من العملاء أو الأنظمة الأخرى. تستخرج هذه السياسة أيضًا العناوين إلى متغيرات السياق حتى تتمكّن السياسات أو الشروط اللاحقة من فحص هذه القيم لاتّخاذ قرارات بشأن التفويض أو التوجيه. للحصول على مقدمة مفصّلة، يُرجى الاطّلاع على نظرة عامة على سياسات JWS وJWT.

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

لمعرفة المزيد عن أجزاء JWS وكيفية تشفيرها وتوقيعها، يُرجى الرجوع إلى RFC7515.

فيديو

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

العيّنات

التحقّق من توقيع JWS المرفق باستخدام خوارزمية HS256

تتحقّق سياسة المثال هذه من توقيع JWS مرفق باستخدام خوارزمية التشفير HS256، أي HMAC، باستخدام مجموع اختباري SHA-256. يتم تمرير JWS في طلب الخادم الوكيل باستخدام مَعلمة نموذجية باسم JWS. يتم تضمين المفتاح في متغيّر باسم private.secretkey.

يحتوي JWS المرفق على العنوان والحمولة والتوقيع بترميز:

header.payload.signature

تتضمّن إعدادات السياسة المعلومات التي يحتاجها Edge لفك تشفير JWS وتقييمه، مثل مكان العثور على JWS (في متغيّر تدفق محدّد في العنصر <Source>)، وخوارزمية التوقيع المطلوبة، ومكان العثور على المفتاح السري (المخزَّن في متغيّر تدفق Edge، والذي يمكن أن يكون قد تم استرداده من KVM في Edge، على سبيل المثال).

<VerifyJWS name="JWS-Verify-HS256">
    <DisplayName>JWS Verify HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <Source>request.formparam.JWS</Source>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
    </SecretKey>
</VerifyJWS>

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

التحقّق من توقيع JWS منفصل باستخدام خوارزمية RS256

تتحقّق سياسة المثال هذه من صحة توقيع JWS منفصل تم توقيعه باستخدام خوارزمية RS256. لإثبات الملكية، عليك تقديم المفتاح العام. يتم تمرير JWS في طلب الخادم الوكيل باستخدام مَعلمة نموذجية اسمها JWS. يتم تضمين المفتاح العام في متغيّر باسم public.publickey.

تحذف JWS المنفصلة الحمولة من JWS:

header..signature

يعود إليك تحديد الحمولة إلى سياسة VerifyJWS من خلال تحديد اسم المتغيّر الذي يحتوي على الحمولة إلى العنصر <DetachedContent>. يجب أن يكون المحتوى المحدّد في <DetachedContent> بالشكل الأصلي غير المشفّر الذي كان عليه عند إنشاء توقيع JWS.

<VerifyJWS name="JWS-Verify-RS256">
    <DisplayName>JWS Verify RS256</DisplayName>
    <Algorithm>RS256</Algorithm>
    <Source>request.formparam.JWS</Source>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <PublicKey>
        <Value ref="public.publickey"/>
    </PublicKey>
    <DetachedContent>private.payload</DetachedContent>
</VerifyJWS>

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

ضبط العناصر الرئيسية

تعتمد العناصر التي تستخدمها لتحديد المفتاح المستخدَم للتحقّق من توقيع JWS على الخوارزمية التي تختارها، كما هو موضّح في الجدول التالي:

خوارزمية العناصر الأساسية
HS*
<SecretKey>
  <Value ref="private.secretkey"/>
</SecretKey>
RS*, ES*, PS*
<PublicKey>
  <Value ref="rsa_public_key"/>
</PublicKey>

أو:

<PublicKey>
  <JWKS ref="jwks_val_ref_or_url"/>
</PublicKey>
*لمزيد من المعلومات حول متطلبات المفتاح، يُرجى الاطّلاع على لمحة عن خوارزميات تشفير التوقيع.

مرجع العنصر

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

ملاحظة: سيختلف الإعداد إلى حد ما حسب خوارزمية التشفير التي تستخدمها. راجِع الأمثلة للاطّلاع على أمثلة توضّح عمليات الضبط لحالات استخدام معيّنة.

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

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

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

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

<Algorithm>

<Algorithm>HS256</Algorithm>

تحدّد هذه السمة خوارزمية التشفير لتوقيع الرمز المميّز. تستخدم خوارزميات RS*/PS*/ES* مفتاحَي تشفير عام/خاص، بينما تستخدم خوارزميات HS* مفتاحًا سريًا مشتركًا. يُرجى الاطّلاع أيضًا على لمحة عن خوارزميات تشفير التوقيع.

يمكنك تحديد قيم متعددة مفصولة بفواصل. على سبيل المثال، "HS256, HS512" أو "RS256, PS256". ومع ذلك، لا يمكنك دمج خوارزميات HS* مع أي خوارزميات أخرى أو خوارزميات ES* مع أي خوارزميات أخرى لأنّها تتطلّب نوع مفتاح معيّنًا. يمكنك الجمع بين خوارزميات RS* وPS*.

تلقائي لا ينطبق
التواجد مطلوب
النوع سلسلة من القيم المفصولة بفواصل
القيم الصالحة HS256 وHS384 وHS512 وRS256 وRS384 وRS512 وES256 وES384 وES512 وPS256 وPS384 وPS512

<AdditionalHeaders/Claim>

<AdditionalHeaders>
    <Claim name='claim1'>explicit-value-of-claim-here</Claim>
    <Claim name='claim2' ref='variable-name-here'/>
    <Claim name='claim3' ref='variable-name-here' type='boolean'/>
    <Claim name='claim4' ref='variable-name' type='string' array='true'/>
 </AdditionalHeaders>

تتحقّق هذه السمة من أنّ عنوان JWS يحتوي على أزواج اسم/قيمة المطالبة الإضافية المحدّدة وأنّ قيم المطالبة المؤكَّدة تتطابق.

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

تلقائي لا ينطبق
التواجد اختياري
النوع

سلسلة (القيمة التلقائية) أو رقم أو قيمة منطقية أو خريطة

يتم ضبط النوع تلقائيًا على "سلسلة" في حال عدم تحديد أي نوع.

المصفوفة اضبط القيمة على true للإشارة إلى ما إذا كانت القيمة عبارة عن مجموعة من الأنواع. القيمة التلقائية: false
القيم الصالحة أي قيمة تريد استخدامها لمطالبة إضافية

يأخذ العنصر <Claim> السمات التالية:

  • name: (مطلوبة) تمثّل اسم المطالبة.
  • ref: (اختياري) اسم متغيّر سير العمل. في حال توفّرها، ستستخدم السياسة قيمة هذا المتغيّر كعنصر. في حال تحديد كلّ من السمة ref وقيمة مطالبة صريحة، تكون القيمة الصريحة هي القيمة التلقائية، ويتم استخدامها إذا لم يتم حلّ متغيّر التدفق المشار إليه.
  • type - (اختياري) إحدى القيم التالية: string (القيمة التلقائية) أو number أو boolean أو map
  • array: (اختياري) اضبط القيمة على true للإشارة إلى ما إذا كانت القيمة مصفوفة من الأنواع. القيمة التلقائية: false.

<DetachedContent>

<DetachedContent>variable-name-here</DetachedContent>

يكون تنسيق JWS الذي تم إنشاؤه مع حمولة المحتوى كما يلي:

header.payload.signature

إذا كنت تستخدم سياسة GenerateJWS لإنشاء حمولة منفصلة، سيتم حذف الحمولة من JWS الذي تم إنشاؤه وسيكون بالتنسيق التالي:

header..signature

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

تظهر السياسة خطأ في الحالات التالية:

  • يتم تحديد <DetachedContent> عندما لا يحتوي JWS على حمولة محتوى منفصلة (رمز الخطأ هو steps.jws.ContentIsNotDetached).
  • يتم حذف <DetachedContent> ويحتوي JWS على حمولة محتوى منفصلة (رمز الخطأ هو steps.jws.InvalidSignature).
تلقائي N/A
التواجد اختياري
النوع مرجع المتغيّر

<IgnoreCriticalHeaders>

<IgnoreCriticalHeaders>true|false</IgnoreCriticalHeaders>

اضبط القيمة على "خطأ" إذا أردت أن تطرح السياسة خطأً عند عدم إدراج أي رأس مُدرَج في الرأس crit الخاص بتوقيع JWS ضمن العنصر <KnownHeaders>. اضبط القيمة على "صحيح" لكي تتجاهل سياسة VerifyJWS العنوان crit.

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

تلقائي خطأ
التواجد اختياري
النوع منطقي
القيم الصالحة صحيح أو خطأ

<IgnoreUnresolvedVariables>

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

اضبط القيمة على "خطأ" إذا كنت تريد أن تعرض السياسة خطأً عند تعذُّر تحديد أي متغير مرجعي محدّد في السياسة. اضبط القيمة على "صحيح" للتعامل مع أي متغيّر لا يمكن حله كسلسلة فارغة (قيمة فارغة).

تلقائي خطأ
التواجد اختياري
النوع منطقي
القيم الصالحة صحيح أو خطأ

<KnownHeaders>

<KnownHeaders>a,b,c</KnownHeaders>

or:

<KnownHeaders ref=variable_containing_headers/>

تستخدِم سياسة GenerateJWS العنصر <CriticalHeaders> لتعبئة العنوان crit في الرمز المميز. على سبيل المثال:

{
  “typ: “...”,
  “alg” : “...”,
  “crit” : [ “a”, “b”, “c” ],
}

تفحص سياسة VerifyJWS العنوان crit في JWS، إذا كان متوفرًا، وتتحقق من أنّ العنصر <KnownHeaders> يدرج هذا العنوان أيضًا لكل عنصر مدرَج. يمكن أن يحتوي العنصر <KnownHeaders> على مجموعة فرعية من العناصر المدرَجة في crit. يجب فقط أن يتم إدراج جميع العناوين المُدرَجة في crit ضمن العنصر <KnownHeaders>. أي عنوان تعثر عليه السياسة في crit ولم يتم إدراجه أيضًا في <KnownHeaders> يؤدي إلى تعذُّر تنفيذ سياسة VerifyJWS.

يمكنك اختياريًا ضبط سياسة VerifyJWS لتجاهل العنوان crit من خلال ضبط العنصر <IgnoreCriticalHeaders> على true.

تلقائي لا ينطبق
التواجد اختياري
النوع مصفوفة سلاسل مفصولة بفواصل
القيم الصالحة إما مصفوفة أو اسم متغيّر يحتوي على المصفوفة

<PublicKey/JWKS>

<!-- Specify the JWKS. -->
<PublicKey>
   <JWKS>jwks-value-here</JWKS>
</PublicKey>

or:

<!-- Specify a variable containing the JWKS. -->
<PublicKey>
   <JWKS ref="public.jwks"/>
</PublicKey>

or:

<!-- Specify a public URL that returns the JWKS.
The URL is static, meaning you cannot set it using a variable. -->
<PublicKey>
   <JWKS uri="jwks-url"/>
</PublicKey>

تحدّد هذه السمة قيمة بتنسيق JWKS (RFC 7517) تحتوي على مجموعة من المفاتيح العامة. يجب استخدامها فقط عندما تكون الخوارزمية إحدى الخوارزميات التالية: RS256 أو RS384 أو RS512 أو PS256 أو PS384 أو PS512 أو ES256 أو ES384 أو ES512.

إذا كان JWS الوارد يحمل معرّف مفتاح متوفّر في مجموعة JWKS، ستستخدم السياسة المفتاح العام الصحيح للتحقّق من توقيع JWS. للحصول على تفاصيل حول هذه الميزة، اطّلِع على استخدام مجموعة مفاتيح الويب JSON (JWKS) للتحقّق من توقيع JWS.

إذا كنت تسترد القيمة من عنوان URL متاح للجميع، يخزّن Edge مفتاح JWKS مؤقتًا لمدة 300 ثانية. عند انتهاء صلاحية ذاكرة التخزين المؤقت، يستردّ Edge مجموعة JWKS مرة أخرى.

تلقائي لا ينطبق
التواجد للتحقّق من صحة JWS باستخدام خوارزمية RSA، يجب استخدام عنصر JWKS أو Value.
النوع سلسلة
القيم الصالحة متغيّر تدفّق أو قيمة سلسلة أو عنوان URL

<PublicKey/Value>

<PublicKey>
   <Value ref="public.publickey"/>
</PublicKey>
-or-
<PublicKey>
    <Value>
    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw2kPrRzcufvUNHvTH/WW
    Q0UrCw5c0+Y707KX3PpXkZGbtTT4nvU1jC0d1lHV8MfUyRXmpmnNxJHAC2F73IyN
    C5TBtXMORc+us7A2cTtC4gZV256bT4h3sIEMsDl0Joz9K9MPzVPFxa1i0RgNt06n
    Xn/Bs2UbbLlKP5Q1HPxewUDEh0gVMqz9wdIGwH1pPxKvd3NltYGfPsUQovlof3l2
    ALvO7i5Yrm96kknfFEWf1EjmCCKvz2vjVbBb6mp1ZpYfc9MOTZVpQcXSbzb/BWUo
    ZmkDb/DRW5onclGzxQITBFP3S6JXd4LNESJcTp705ec1cQ9Wp2Kl+nKrKyv1E5Xx
    DQIDAQAB
    -----END PUBLIC KEY-----
    </Value>
</PublicKey>

تحدّد هذه السمة المفتاح العام المستخدَم للتحقّق من صحة التوقيع على JWS. استخدِم السمة ref لتمرير المفتاح في متغيّر تدفّق أو لتحديد المفتاح المرمّز بتنسيق PEM مباشرةً. يجب استخدامها فقط عندما تكون الخوارزمية إحدى الخوارزميات التالية: RS256 أو RS384 أو RS512 أو PS256 أو PS384 أو PS512 أو ES256 أو ES384 أو ES512.

تلقائي لا ينطبق
التواجد للتحقّق من صحة توقيع JWS باستخدام خوارزمية RSA، يجب استخدام عناصر JWKS أو Value.
النوع سلسلة
القيم الصالحة متغيّر أو سلسلة في التدفق

<SecretKey/Value>

<SecretKey>
  <Value ref="private.your-variable-name"/>
</SecretKey>

توفّر هذه السمة المفتاح السري المستخدَم للتحقّق من الرموز المميزة أو توقيعها باستخدام خوارزمية HMAC. استخدِم هذه السمة فقط عندما تكون الخوارزمية إحدى الخوارزميات التالية: HS256 أو HS384 أو HS512. استخدِم السمة ref لتمرير المفتاح في متغيّر التدفق.

تلقائي لا ينطبق
التواجد مطلوبة لخوارزميات HMAC.
النوع سلسلة
القيم الصالحة متغيّر في التدفق يشير إلى سلسلة

ملاحظة: إذا كان متغيّرًا في سير العمل، يجب أن يتضمّن البادئة "private". على سبيل المثال: private.mysecret

<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.AlgorithmInTokenNotPresentInConfiguration 401 يحدث ذلك عندما تتضمّن سياسة إثبات الهوية خوارزميات متعدّدة.
steps.jws.AlgorithmMismatch 401 الخوارزمية المحدّدة في العنوان من خلال سياسة الإنشاء لا تتطابق مع الخوارزمية المتوقَّعة في سياسة "إثبات الملكية". يجب أن تتطابق الخوارزميات المحدّدة.
steps.jws.ContentIsNotDetached 401 يتم تحديد <DetachedContent> عندما لا تحتوي JWS على حمولة بيانات منفصلة.
steps.jws.FailedToDecode 401 تعذَّر على السياسة فك ترميز JWS. من المحتمل أن يكون JWS تالفًا.
steps.jws.InsufficientKeyLength 401 بالنسبة إلى مفتاح أقل من 32 بايت لخوارزمية HS256
steps.jws.InvalidClaim 401 بسبب عدم تطابق مطالبة أو مطالبة، أو عدم تطابق العنوان أو العنوان.
steps.jws.InvalidCurve 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.KeyIdMissing 401 تستخدم سياسة "التحقّق" رمز JWKS كمصدر للمفاتيح العامة، إلا أنّ سياسة JWS الموقَّعة لا تتضمّن السمة kid في العنوان.
steps.jws.KeyParsingFailed 401 تعذّر تحليل المفتاح العام من المعلومات الأساسية المحددة.
steps.jws.MissingPayload 401 حمولة JWS مفقودة.
steps.jws.NoAlgorithmFoundInHeader 401 يحدث عندما تغفل JWS عنوان الخوارزمية.
steps.jws.NoMatchingPublicKey 401 تستخدم سياسة "التحقّق" مفتاح JWKS كمصدر للمفاتيح العامة، ولكن لا يتم إدراج kid في JWKS الموقَّعة في JWKS.
steps.jws.UnhandledCriticalHeader 401 لا يتم إدراج العنوان الذي عثرت عليه سياسة إثبات ملكية JWS ضمن عنوان crit في KnownHeaders.
steps.jws.UnknownException 401 حدث استثناء غير معروف.
steps.jws.WrongKeyType 401 تم تحديد نوع خاطئ للمفتاح. على سبيل المثال، إذا حدّدت مفتاح RSA لخوارزمية "منحنى بيضاوي" أو مفتاح منحنى لخوارزمية RSA.

أخطاء النشر

يمكن أن تحدث هذه الأخطاء عند نشر خادم وكيل يحتوي على هذه السياسة.

اسم الخطأ يحدث عند
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>