إنشاء سياسة JWT

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

المزايا

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

فيديو

يمكنك مشاهدة فيديو قصير لمعرفة كيفية إنشاء رمز JWT موقَّع.

نماذج

إنشاء JWT موقَّع باستخدام HS256 الخوارزمية

تنشئ هذه السياسة نموذج JWT جديدًا ويوقّعها باستخدام خوارزمية HS256. يعتمد HS256 على سر مشترك لكلٍ من التوقيع والتحقق من التوقيع.

عند تنفيذ إجراء السياسة هذا، تعمل شبكة Edge على ترميز عنوان JWT والحمولة، ثم ترميزًا رقميًا. على JWT. يمكنك مشاهدة الفيديو أعلاه للاطّلاع على مثال كامل، بما في ذلك كيفية تقديم طلب بشأن السياسة.

ستؤدي إعدادات السياسة هنا إلى إنشاء JWT بمجموعة من المطالبات العادية على النحو المحدّد في مواصفات JWT، بما في ذلك انتهاء الصلاحية لمدة ساعة، بالإضافة إلى مطالبة إضافية. يمكنك تضمين العدد الذي تريده من المطالبات الإضافية. اطلع على مرجع Element للحصول على تفاصيل حول المتطلبات والخيارات لكل عنصر في نموذج السياسة هذا.

<GenerateJWT name="JWT-Generate-HS256">
    <DisplayName>JWT Generate HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
        <Id>1918290</Id>
    </SecretKey>
    <ExpiresIn>1h</ExpiresIn>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <Id/>
    <AdditionalClaims>
        <Claim name="show">And now for something completely different.</Claim>
    </AdditionalClaims>
    <OutputVariable>jwt-variable</OutputVariable>
</GenerateJWT>

سيحتوي ملف JWT الناتج على هذا العنوان...

{
  "typ" : "JWT", 
  "alg" : "HS256",
  "kid" : "1918290"
}

... وسيحتوي على حمولة تحتوي على محتويات على النحو التالي:

{ 
  "sub" : "monty-pythons-flying-circus",
  "iss" : "urn://apigee-edge-JWT-policy-test",
  "aud" : "show",
  "iat" : 1506553019,
  "exp" : 1506556619,
  "jti" : "BD1FF263-3D25-4593-A685-5EC1326E1F37",
  "show": "And now for something completely different."
}

قيمة المطالبات iat وexp وjti مختلفة.

إنشاء JWT موقَّع باستخدام RS256 الخوارزمية

تنشئ هذه السياسة نموذج JWT جديدًا وتوقّعه باستخدام خوارزمية RS256. جارٍ إنشاء يعتمد توقيع RS256 على مفتاح خاص بترميز RSA، ويجب تقديمه بتنسيق PEM بترميز. يمكنك مشاهدة الفيديو أعلاه للاطّلاع على مثال كامل، بما في ذلك كيفية تقديم طلب بشأن السياسة.

عند تنفيذ إجراء السياسة هذا، تعمل شبكة Edge على ترميز JWT وتوقيعها رقميًا، بما في ذلك المطالبات. للتعرّف على أجزاء JWT وكيفية تشفيرها وتوقيعها، يمكنك الرجوع إلى RFC7519.

<GenerateJWT name="JWT-Generate-RS256">
    <Algorithm>RS256</Algorithm>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <PrivateKey>
        <Value ref="private.privatekey"/>
        <Password ref="private.privatekey-password"/>
        <Id ref="private.privatekey-id"/>
    </PrivateKey>
    <Subject>apigee-seattle-hatrack-montage</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>urn://c60511c0-12a2-473c-80fd-42528eb65a6a</Audience>
    <ExpiresIn>60m</ExpiresIn>
    <Id/>
    <AdditionalClaims>
        <Claim name="show">And now for something completely different.</Claim>
    </AdditionalClaims>
    <OutputVariable>jwt-variable</OutputVariable>
</GenerateJWT>

تحديد العناصر الرئيسية

تعتمد العناصر التي تستخدمها لتحديد المفتاح المستخدم لإنشاء JWT على الخوارزمية المختارة، كما هو موضح في الجدول التالي:

خوارزمية العناصر الرئيسية
HS{256/384/512}*
<SecretKey>
  <Value ref="private.secretkey"/>
  <Id>1918290</Id>
</SecretKey>
RS/PS/ES{256/384/512}*
<PrivateKey>
  <Value ref="private.privatekey"/>
  <Password ref="private.privatekey-password"/>
  <Id ref="private.privatekey-id"/>
</PrivateKey>

العنصران <Password> و<Id> اختياريان.

*لمزيد من المعلومات حول المتطلبات الرئيسية، يُرجى الاطّلاع على لمحة عن خوارزميات تشفير التوقيع

مرجع عنصر لإنشاء JWT

يصف مرجع السياسة عناصر سياسة إنشاء JWT وسماتها.

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

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

<GenerateJWT name="JWT" continueOnError="false" enabled="true" async="false">

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

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

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

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

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

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

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

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

&lt;DisplayName&gt;

<DisplayName>Policy Display Name</DisplayName>

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

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

&lt;Algorithm&gt;

<Algorithm>algorithm-here</Algorithm>

تُحدِّد خوارزمية التشفير لتوقيع الرمز المميّز.

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

&lt;Audience&gt;

<Audience>audience-here</Audience>

or:

<Audience ref='variable_containing_audience'/>

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

تلقائي لا ينطبق
الحضور اختياري
النوع مصفوفة (قائمة بالقيم المفصولة بفواصل)
القيم الصالحة يُقصد به أي عنصر يعرِّف الجمهور.

&lt;AdditionalClaims/Claim&gt;

<AdditionalClaims>
    <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'/>
</AdditionalClaims>

or:

<AdditionalClaims ref='claim_payload'/>

للسماح لك بتحديد أزواج إضافية من أسماء/قيم المطالبة في حمولة JWT. يمكنك تحديد المطالبة بشكل صريح كسلسلة أو رقم أو قيمة منطقية أو خريطة أو مصفوفة. الخريطة هي ببساطة مجموعة من الاسم/القيمة أزواج.

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

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

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

عند تضمين العنصر <Claim>، يتم ضبط أسماء المطالبات بشكل ثابت عندما تهيئة السياسة. ويمكنك بدلاً من ذلك تمرير كائن JSON لتحديد أسماء المطالبات. بما أنّه يتم تمرير كائن JSON كمتغيّر، يتم في وقت التشغيل تحديد أسماء المطالبات في JWT الذي تم إنشاؤه.

على سبيل المثال:

<AdditionalClaims ref='json_claims'/>

عندما يحتوي المتغيّر json_claims على كائن JSON بالشكل التالي:

{
  "sub" : "person@example.com",
  "iss" : "urn://secure-issuer@example.com",
  "non-registered-claim" : {
    "This-is-a-thing" : 817,
    "https://example.com/foobar" : { "p": 42, "q": false }
  }
}

يتضمن ملف JWT الذي تم إنشاؤه جميع المطالبات في كائن JSON.

&lt;AdditionalHeaders/Claim&gt;

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

لوضع اسم/قيم المطالبة الإضافية في رأس JWT.

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

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

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

&lt;CriticalHeaders&gt;

<CriticalHeaders>a,b,c</CriticalHeaders>

or:

<CriticalHeaders ref=variable_containing_headers/>

إضافة العنوان المهم، crit، إلى عنوان JWT. الرأس crit عبارة عن مصفوفة من أسماء العناوين التي يجب أن يعرفها ويتعرف عليها مستلم JWT. على سبيل المثال:

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

في وقت التشغيل، تفحص سياسة VerifyJWT عنوان crit. بالنسبة إلى كل عنصر مدرج في عنوان crit، يتم التحقّق من أنّ العنصر <KnownHeaders>. من سياسة VerifyJWT تسرد أيضًا هذا العنوان. أي عنوان تعثر عليه سياسة التحقّق من JWT في crit والتي لم يتم إدراجها أيضًا في <KnownHeaders>، إلى تعذُّر استخدام سياسة VerifyJWT.

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

&lt;CustomClaims&gt;

ملاحظة: في الوقت الحالي، يتم إدراج عنصر CustomClaims عند إضافة عنصر سياسة GenerateJWT من خلال واجهة المستخدم. هذا العنصر غير فعّال ويتم تجاهله. الإجابات الصحيحة العنصر المطلوب استخدامه بدلاً من ذلك هو &lt;AdditionalClaims&gt;. ستفتح واجهة المستخدم تحديثها لإدراج العناصر الصحيحة في وقت لاحق.

&lt;ExpiresIn&gt;

<ExpiresIn>time-value-here</ExpiresIn>

تحدّد عمر JWT بالمللي ثانية أو الثواني أو الدقائق أو الساعات أو الأيام.

تلقائي N/A
الحضور اختياري
النوع عدد صحيح
القيم الصالحة

قيمة أو مرجع إلى متغيّر تدفق يحتوي على القيمة. يمكن أن تكون الوحدات الزمنية المحددة على النحو التالي:

  • ملي ثانية = مللي ثانية (تلقائي)
  • s = ثانية
  • m = دقائق
  • h = ساعات
  • d = أيام

على سبيل المثال، قيمة ExpiresIn=10d تساوي ExpiresIn 864000.

&lt;Id&gt;

<Id>explicit-jti-value-here</Id>
 -or-
<Id ref='variable-name-here'/>
 -or-
<Id/>

إنشاء JWT باستخدام مطالبة jti المحدّدة عندما تكون القيمة النصية وسمة ref معًا فارغة، ستنشئ السياسة مقتطف jti يحتوي على معرّف فريد عالمي (UUID) عشوائي. إنّ المطالبة بمعرّف JWT (jti) معرّف فريد لـ JWT. لمزيد من المعلومات حول Jti، راجِع RFC7519.

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

&lt;IgnoreUnresolvedVariables&gt;

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

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

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

&lt;Issuer&gt;

<Issuer ref='variable-name-here'/>
<Issuer>issuer-string-here</Issuer>

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

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

&lt;NotBefore&gt;

<!-- Specify an absolute time. -->
<NotBefore>2017-08-14T11:00:21-07:00</NotBefore>
 -or-
<!-- Specify a time relative to when the token is generated. -->
<NotBefore>6h</NotBefore>

تحدّد هذه السياسة الوقت الذي يصبح فيه الرمز المميّز صالحًا. سيظل الرمز المميّز غير صالح حتى الوقت المحدَّد. يمكنك تحديد قيمة وقت مطلقة أو وقت بالنسبة إلى وقت إنشاء الرمز المميّز.

تلقائي لا ينطبق
الحضور اختياري
النوع سلسلة
القيم الصالحة يُرجى مراجعة القسم أدناه.

قيم زمنية صالحة لعنصر NotBefore للقيم الزمنية المطلقة

الاسم التنسيق مثال
قابل للترتيب yyyy-MM-dd'T'HH:mm:ss.SSSZ 2017-08-14T11:00:21.269-0700
معيار RFC 1123 EEE, dd MMM yyyy HH:mm:ss zzz الاثنين 14 آب (أغسطس) 2017 الساعة 11:00:21 بتوقيت المحيط الهادئ
معيار RFC 850 EEEE, dd-MMM-yy HH:mm:ss zzz الاثنين من 14 إلى 17 أغسطس عند الساعة 11:00:21 بتوقيت المحيط الهادئ
ANCI-C EEE MMM d HH:mm:ss yyyy الاثنين 14 أغسطس 11:00:21 2017

بالنسبة إلى القيم الزمنية النسبية، حدِّد عددًا صحيحًا وفترة زمنية، على سبيل المثال:

  • 10 ث
  • 60 دقيقة
  • 12 ساعة

&lt;OutputVariable&gt;

<OutputVariable>jwt-variable</OutputVariable>

تحدِّد هذه السياسة مكان وضع JWT الذي تم إنشاؤه من خلال هذه السياسة. يتم وضعه تلقائيًا في متغير التدفق jwt.POLICYNAME.generated_jwt.

تلقائي jwt.POLICYNAME.generated_jwt
الحضور اختياري
النوع سلسلة (اسم متغيّر التدفق)

&lt;PrivateKey/Id&gt;

<PrivateKey>
  <Id ref="flow-variable-name-here"/>
</PrivateKey>

or

<PrivateKey>
  <Id>your-id-value-here</Id>
</PrivateKey>

تُحدِّد رقم تعريف المفتاح (kid) المطلوب تضمينه في عنوان JWT. الاستخدام فقط إذا كانت الخوارزمية هي RS256/RS384/RS512 أو PS256/PS384/PS512 أو ES256/ES384/ES512.

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

&lt;PrivateKey/Password&gt;

<PrivateKey>
  <Password ref="private.privatekey-password"/>
</PrivateKey>

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

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

ملاحظة: يجب تحديد متغيّر تدفق. سيتم رفض Edge على أنّه غير صالح تهيئة السياسة التي يتم فيها تحديد كلمة المرور في نص عادي. متغيّر التدفق يجب أن يحتوي على البادئة "private". على سبيل المثال: private.mypassword

&lt;PrivateKey/Value&gt;

<PrivateKey>
  <Value ref="private.variable-name-here"/>
</PrivateKey>

تحدّد هذه السياسة مفتاحًا خاصًا بترميز PEM يُستخدم لتوقيع JWT. استخدم سمة ref لتمرير في متغير التدفق. للاستخدام فقط عندما تكون الخوارزمية هي RS256/RS384/RS512، PS256/PS384/PS512 أو ES256/ES384/ES512.

تلقائي لا ينطبق
الحضور مطلوب لإنشاء JWT باستخدام خوارزمية RS256.
النوع سلسلة
القيم الصالحة متغيّر تدفق يحتوي على سلسلة تمثّل قيمة مفتاح خاص بترميز RSA بترميز PEM.

ملاحظة: يجب أن يتضمّن متغيّر التدفق البادئة "private". على سبيل المثال: private.mykey

&lt;SecretKey/Id&gt;

<SecretKey>
  <Id ref="flow-variable-name-here"/>
</SecretKey>

or

<SecretKey>
  <Id>your-id-value-here</Id>
</SecretKey>

تحدّد هذه السياسة معرّف المفتاح (kid) المطلوب تضمينه في عنوان JWT الخاص بـ JWT الموقَّع باستخدام رمز HMAC. للخوارزمية. للاستخدام فقط إذا كانت الخوارزمية هي واحدة من HS256/HS384/HS512.

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

&lt;SecretKey/Value&gt;

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

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

تفرض Edge حدًا أدنى لقوة المفتاح لخوارزميات HS256/HS384/HS512. الحد الأدنى لطول المفتاح يبلغ الحد الأقصى لحجم الملف في بروتوكول HS256 32 بايت، أمّا بالنسبة إلى HS384، فيبلغ 48 بايت، أمّا بالنسبة إلى HS512، فيبلغ 64 بايت. يؤدي استخدام مفتاح بقوة أقل إلى حدوث خطأ في بيئة التشغيل.

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

ملاحظة: في حال كان متغيّر التدفق، يجب أن يتضمّن البادئة "خاص". بالنسبة مثال: private.mysecret

&lt;Subject&gt;

<Subject>subject-string-here</Subject>
أو
<Subject ref="flow_variable" />

على سبيل المثال:

<Subject ref="apigee.developer.email"/>

تنشئ السياسة JWT يحتوي على مطالبة sub، يتم ضبطها على القيمة المحدّدة هذه القيمة تحدد أو تصدر بيانًا حول موضوع JWT. هذا هو أحد مجموعة عادية من المطالبات المذكورة في RFC7519.

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

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

لا تضبط سياسة إنشاء JWT متغيّرات التدفق.

مرجع الخطأ

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

أخطاء في وقت التشغيل

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

رمز الخطأ رموز حالة HTTP يحدث عند
steps.jwt.AlgorithmInTokenNotPresentInConfiguration 401 يحدث ذلك عندما تتضمّن سياسة إثبات الهوية خوارزميات متعدّدة.
steps.jwt.AlgorithmMismatch 401 الخوارزمية المحدّدة في سياسة الإنشاء لا تتطابق مع الخوارزمية المتوقعة في سياسة إثبات الملكية. يجب أن تتطابق الخوارزميات المحدّدة.
steps.jwt.FailedToDecode 401 تعذَّر على السياسة فك ترميز JWT. من المحتمل أن يكون JWT تالفًا.
steps.jwt.GenerationFailed 401 تعذَّر على السياسة إنشاء رمز JWT.
steps.jwt.InsufficientKeyLength 401 بالنسبة إلى مفتاح أقل من 32 بايت لخوارزمية HS256، وأقل من 48 بايت لخوارزمية HS386، وأقل من 64 بايت لخوارزمية HS512.
steps.jwt.InvalidClaim 401 بسبب عدم تطابق مطالبة أو مطالبة، أو عدم تطابق العنوان أو العنوان.
steps.jwt.InvalidCurve 401 المنحنى المحدد بالمفتاح غير صالح لخوارزمية المنحنى البيضاوي.
steps.jwt.InvalidJsonFormat 401 تم العثور على تنسيق JSON غير صالح في الرأس أو الحمولة.
steps.jwt.InvalidToken 401 يحدث هذا الخطأ عند تعذُّر التحقُّق من توقيع JWT.
steps.jwt.JwtAudienceMismatch 401 تعذّرت المطالبة بالجمهور عند إثبات صحة الرمز المميّز.
steps.jwt.JwtIssuerMismatch 401 تعذّرت المطالبة من جهة الإصدار بإثبات ملكية الرمز المميّز.
steps.jwt.JwtSubjectMismatch 401 تعذّرت المطالبة بالموضوع عند إثبات ملكية الرمز المميّز.
steps.jwt.KeyIdMissing 401 تستخدم سياسة "التحقّق" رمز JWKS كمصدر للمفاتيح العامة، ولكنّ سياسة JWT الموقَّعة لا تتضمّن السمة kid في العنوان.
steps.jwt.KeyParsingFailed 401 تعذّر تحليل المفتاح العام من المعلومات الأساسية المحددة.
steps.jwt.NoAlgorithmFoundInHeader 401 يحدث عندما لا يحتوي JWT على عنوان خوارزمية.
steps.jwt.NoMatchingPublicKey 401 تستخدم سياسة "التحقّق" مفتاح JWKS كمصدر للمفاتيح العامة، ولكن لا يتم إدراج kid في JWT الموقَّع في JWKS.
steps.jwt.SigningFailed 401 في CREATEJWT لمفتاح أقل من الحد الأدنى للحجم لخوارزميات HS384 أو HS512
steps.jwt.TokenExpired 401 تحاول السياسة التحقّق من رمز مميّز منتهي الصلاحية.
steps.jwt.TokenNotYetValid 401 الرمز المميز غير صالح بعد.
steps.jwt.UnhandledCriticalHeader 401 إنّ العنوان الذي عثرت عليه سياسة "التحقق من JWT" ضمن عنوان crit غير مدرَج في KnownHeaders.
steps.jwt.UnknownException 401 حدث استثناء غير معروف.
steps.jwt.WrongKeyType 401 تم تحديد نوع خاطئ للمفتاح. على سبيل المثال، إذا حدّدت مفتاح RSA لخوارزمية "منحنى بيضاوي" أو مفتاح منحنى لخوارزمية RSA.

أخطاء النشر

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

اسم الخطأ السبب إصلاح
InvalidNameForAdditionalClaim ستتعذّر عملية النشر إذا كانت المطالبة المستخدَمة في العنصر الفرعي <Claim> في العنصر <AdditionalClaims> هي أحد الأسماء المسجّلة التالية: kid أو iss أو sub أو aud أو iat أو exp أو nbf أو jti.
InvalidTypeForAdditionalClaim إذا كانت المطالبة المستخدَمة في العنصر الفرعي <Claim> في العنصر <AdditionalClaims> ليست من النوع string أو number أو boolean أو map، سيتعذّر النشر.
MissingNameForAdditionalClaim إذا لم يتم تحديد اسم المطالبة في العنصر الفرعي <Claim> في العنصر <AdditionalClaims>، سيتعذّر النشر.
InvalidNameForAdditionalHeader يحدث هذا الخطأ إذا كان اسم المطالبة المستخدَم في العنصر الفرعي <Claim> في العنصر <AdditionalClaims> هو alg أو typ.
InvalidTypeForAdditionalHeader إذا كان نوع المطالبة المستخدَم في العنصر الفرعي <Claim> في العنصر <AdditionalClaims> ليس من النوع string أو number أو boolean أو map، سيتعذّر النشر.
InvalidValueOfArrayAttribute يحدث هذا الخطأ عندما لا يتم ضبط قيمة سمة الصفيف في العنصر الفرعي <Claim> للعنصر <AdditionalClaims> على true أو false.
InvalidConfigurationForActionAndAlgorithm إذا تم استخدام العنصر <PrivateKey> مع خوارزميات HS Family أو العنصر <SecretKey> مع خوارزميات RSA Family، سيتعذّر إجراء عملية النشر.
InvalidValueForElement وإذا لم تكن القيمة المحدّدة في العنصر <Algorithm> قيمة مسموح بها، سيتعذّر إتمام عملية النشر.
MissingConfigurationElement سيحدث هذا الخطأ إذا لم يتم استخدام العنصر <PrivateKey> مع خوارزميات مجموعة RSA أو إذا لم يتم استخدام العنصر <SecretKey> مع خوارزميات HS Family.
InvalidKeyConfiguration إذا لم يتم تحديد العنصر الفرعي <Value> في العنصرَين <PrivateKey> أو <SecretKey>، سيتعذّر النشر.
EmptyElementForKeyConfiguration إذا كانت سمة المرجع للعنصر الفرعي <Value> للعناصر <PrivateKey> أو <SecretKey> فارغة أو غير محدّدة، سيتعذّر إتمام عملية النشر.
InvalidVariableNameForSecret يحدث هذا الخطأ إذا كان اسم متغيّر التدفق المحدّد في السمة ref للعنصر الفرعي <Value> للعنصر <PrivateKey> أو العنصر <SecretKey> لا يحتوي على البادئة الخاصة (private.).
InvalidSecretInConfig يحدث هذا الخطأ إذا كان العنصر الفرعي <Value> للعنصر <PrivateKey> أو <SecretKey> لا يحتوي على البادئة الخاصة (private.).
InvalidTimeFormat وإذا كانت القيمة المحدّدة في العنصر <NotBefore> لا تستخدم تنسيقًا متوافقًا، لن تنجح عملية النشر.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "TokenExpired"
JWT.failed All JWT policies set the same variable in the case of a failure. JWT.failed = true

Example error response

JWT Policy Fault Codes

For error handling, the best practice is to trap the errorcode part of the error response. Do not rely on the text in the faultstring, because it could change.

Example fault rule

    <FaultRules>
        <FaultRule name="JWT Policy Errors">
            <Step>
                <Name>JavaScript-1</Name>
                <Condition>(fault.name Matches "TokenExpired")</Condition>
            </Step>
            <Condition>JWT.failed=true</Condition>
        </FaultRule>
    </FaultRules>