أنت تعرض مستندات 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> العنصران |
|
*لمزيد من المعلومات حول المتطلبات الرئيسية، يُرجى الاطّلاع على لمحة عن خوارزميات تشفير التوقيع |
مرجع عنصر لإنشاء JWT
يصف مرجع السياسة عناصر سياسة إنشاء JWT وسماتها.
ملاحظة: ستختلف التهيئة إلى حد ما استنادًا إلى التشفير والخوارزمية التي تستخدمها. يُرجى الرجوع إلى عيّنات للاطّلاع على أمثلة الإعدادات لحالات استخدام معينة.
السمات التي تطبيقها على عنصر المستوى الأعلى
<GenerateJWT name="JWT" continueOnError="false" enabled="true" async="false">
السمات التالية مشتركة بين جميع العناصر الرئيسية للسياسة.
السمة | الوصف | تلقائي | الحضور |
---|---|---|---|
الاسم |
الاسم الداخلي للسياسة. تقتصر الأحرف التي يمكنك استخدامها في الاسم على:
A-Z0-9._\-$ % ومع ذلك، تفرض واجهة مستخدم إدارة Edge المزيد
مثل الإزالة التلقائية للأحرف غير الأبجدية الرقمية.
يمكنك استخدام العنصر |
لا ينطبق | مطلوب |
continueOnError |
اضبط القيمة على false لعرض رسالة خطأ عند تعذُّر تنفيذ سياسة. هذا متوقّع
السلوك في معظم السياسات.
يمكنك ضبط القيمة على |
خطأ | اختياري |
مفعّلة |
اضبط القيمة على true لفرض السياسة.
ضبط على |
صحيح | اختياري |
غير متزامن | تم إيقاف هذه السمة نهائيًا. | خطأ | منهي العمل به |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
يمكن استخدامها بالإضافة إلى سمة الاسم لتصنيف السياسة في أداة تعديل الخادم الوكيل لواجهة مستخدم الإدارة باسم آخر بلغة طبيعية
تلقائي | إذا لم تستخدم هذا العنصر، سيتم استخدام قيمة سمة اسم السياسة. |
الحضور | اختياري |
النوع | سلسلة |
<Algorithm>
<Algorithm>algorithm-here</Algorithm>
تُحدِّد خوارزمية التشفير لتوقيع الرمز المميّز.
تلقائي | لا ينطبق |
الحضور | مطلوب |
النوع | سلسلة |
القيم الصالحة | HS256 وHS384 وHS512 وRS256 وRS384 وRS512 وES256 وES384 وES512 وPS256 وPS384 وPS512 |
<Audience>
<Audience>audience-here</Audience> or: <Audience ref='variable_containing_audience'/>
تنشئ السياسة JWT يحتوي على مطالبة aud تم ضبطها على القيمة المحدّدة تحدد هذه المطالبة المستلمين الذين تم تخصيص JWT لهم. هذا هو أحد المطالبات المسجّلة المذكورة في RFC7519.
تلقائي | لا ينطبق |
الحضور | اختياري |
النوع | مصفوفة (قائمة بالقيم المفصولة بفواصل) |
القيم الصالحة | يُقصد به أي عنصر يعرِّف الجمهور. |
<AdditionalClaims/Claim>
<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.
<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>
لوضع اسم/قيم المطالبة الإضافية في رأس JWT.
تلقائي | لا ينطبق |
الحضور | اختياري |
القيم الصالحة | تمثّل هذه السمة أي قيمة تريد استخدامها في مطالبة إضافية. يمكنك تحديد المطالبة بشكل صريح كسلسلة أو رقم أو قيمة منطقية أو خريطة أو مصفوفة. |
يأخذ العنصر <Claim>
السمات التالية:
- name - (مطلوبة) اسم المطالبة.
- ref - (اختيارية) اسم متغيّر التدفق. وفي حال توفّرها، ستستخدم السياسة القيمة التالية: المتغير مثل المطالبة. في حال تحديد كل من السمة ref وقيمة المطالبة الصريحة، سيتم وتكون القيمة الصريحة هي القيمة الافتراضية، ويتم استخدامها إذا لم يتم حل متغير التدفق المشار إليه.
- type - (اختيارية) أحد الخيارات التالية: سلسلة (تلقائي) أو رقم أو قيمة منطقية أو خريطة
- مصفوفة - (اختيارية) يتم ضبطها على صحيح للإشارة إلى ما إذا كانت القيمة مصفوفة من الأنواع. الإعداد التلقائي: خطأ.
<CriticalHeaders>
<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.
تلقائي | لا ينطبق |
الحضور | اختياري |
النوع | مصفوفة السلاسل المفصولة بفواصل |
القيم الصالحة | إمّا مصفوفة أو اسم متغير يحتوي على المصفوفة. |
<CustomClaims>
ملاحظة: في الوقت الحالي، يتم إدراج عنصر CustomClaims عند إضافة عنصر سياسة GenerateJWT من خلال واجهة المستخدم. هذا العنصر غير فعّال ويتم تجاهله. الإجابات الصحيحة العنصر المطلوب استخدامه بدلاً من ذلك هو <AdditionalClaims>. ستفتح واجهة المستخدم تحديثها لإدراج العناصر الصحيحة في وقت لاحق.
<ExpiresIn>
<ExpiresIn>time-value-here</ExpiresIn>
تحدّد عمر JWT بالمللي ثانية أو الثواني أو الدقائق أو الساعات أو الأيام.
تلقائي | N/A |
الحضور | اختياري |
النوع | عدد صحيح |
القيم الصالحة |
قيمة أو مرجع إلى متغيّر تدفق يحتوي على القيمة. يمكن أن تكون الوحدات الزمنية المحددة على النحو التالي:
على سبيل المثال، قيمة |
<Id>
<Id>explicit-jti-value-here</Id> -or- <Id ref='variable-name-here'/> -or- <Id/>
إنشاء JWT باستخدام مطالبة jti المحدّدة عندما تكون القيمة النصية وسمة ref معًا فارغة، ستنشئ السياسة مقتطف jti يحتوي على معرّف فريد عالمي (UUID) عشوائي. إنّ المطالبة بمعرّف JWT (jti) معرّف فريد لـ JWT. لمزيد من المعلومات حول Jti، راجِع RFC7519.
تلقائي | لا ينطبق |
الحضور | اختياري |
النوع | سلسلة أو مرجع |
القيم الصالحة | سلسلة أو اسم متغيّر تدفق يحتوي على رقم التعريف. |
<IgnoreUnresolvedVariables>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
يمكنك الضبط على "خطأ" إذا كنت تريد أن تعرض السياسة خطأً عند تحديد أي متغيّر مرجعي. في السياسة غير قابل للحل. الضبط على "صحيح" للتعامل مع أي متغيّر غير قابل للتحليل كسلسلة فارغة (فارغ).
تلقائي | خطأ |
الحضور | اختياري |
النوع | منطقي |
القيم الصالحة | صواب أم خطأ |
<Issuer>
<Issuer ref='variable-name-here'/> <Issuer>issuer-string-here</Issuer>
تنشئ السياسة JWT يحتوي على مطالبة بالاسم iss مع تحديد قيمة. إلى القيمة المحددة. مطالبة تحدّد هوية جهة إصدار JWT هذا هو أحد مجموعة مسجّلة من المطالبات المذكورة في RFC7519.
تلقائي | لا ينطبق |
الحضور | اختياري |
النوع | سلسلة أو مرجع |
القيم الصالحة | أي لون |
<NotBefore>
<!-- 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 ساعة
<OutputVariable>
<OutputVariable>jwt-variable</OutputVariable>
تحدِّد هذه السياسة مكان وضع JWT الذي تم إنشاؤه من خلال هذه السياسة. يتم وضعه تلقائيًا في
متغير التدفق jwt.POLICYNAME.generated_jwt
.
تلقائي | jwt.POLICYNAME.generated_jwt |
الحضور | اختياري |
النوع | سلسلة (اسم متغيّر التدفق) |
<PrivateKey/Id>
<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.
تلقائي | لا ينطبق |
الحضور | اختياري |
النوع | سلسلة |
القيم الصالحة | متغير تدفق أو سلسلة |
<PrivateKey/Password>
<PrivateKey> <Password ref="private.privatekey-password"/> </PrivateKey>
حدِّد كلمة المرور التي يجب أن تستخدمها السياسة لفك تشفير المفتاح الخاص، إذا لزم الأمر. يمكنك استخدام ref لتمرير المفتاح في متغير التدفق. الاستخدام فقط إذا كانت الخوارزمية هي RS256/RS384/RS512 أو PS256/PS384/PS512 أو ES256/ES384/ES512.
تلقائي | لا ينطبق |
الحضور | اختياري |
النوع | سلسلة |
القيم الصالحة |
يشير إلى مرجع متغيّر التدفق.
ملاحظة: يجب تحديد متغيّر تدفق. سيتم رفض Edge على أنّه غير صالح
تهيئة السياسة التي يتم فيها تحديد كلمة المرور في نص عادي. متغيّر التدفق
يجب أن يحتوي على البادئة "private". على سبيل المثال: |
<PrivateKey/Value>
<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". على سبيل المثال:
|
<SecretKey/Id>
<SecretKey> <Id ref="flow-variable-name-here"/> </SecretKey> or <SecretKey> <Id>your-id-value-here</Id> </SecretKey>
تحدّد هذه السياسة معرّف المفتاح (kid) المطلوب تضمينه في عنوان JWT الخاص بـ JWT الموقَّع باستخدام رمز HMAC. للخوارزمية. للاستخدام فقط إذا كانت الخوارزمية هي واحدة من HS256/HS384/HS512.
تلقائي | لا ينطبق |
الحضور | اختياري |
النوع | سلسلة |
القيم الصالحة | متغير تدفق أو سلسلة |
<SecretKey/Value>
<SecretKey> <Value ref="private.your-variable-name"/> </SecretKey>
يوفر المفتاح السري المستخدم للتحقق من الرموز المميزة أو توقيعها باستخدام خوارزمية HMAC. الاستخدام فقط إذا كانت الخوارزمية ضمن HS256/HS384/HS512. استخدام السمة ref لتمرير المفتاح في متغير التدفق.
تفرض Edge حدًا أدنى لقوة المفتاح لخوارزميات HS256/HS384/HS512. الحد الأدنى لطول المفتاح يبلغ الحد الأقصى لحجم الملف في بروتوكول HS256 32 بايت، أمّا بالنسبة إلى HS384، فيبلغ 48 بايت، أمّا بالنسبة إلى HS512، فيبلغ 64 بايت. يؤدي استخدام مفتاح بقوة أقل إلى حدوث خطأ في بيئة التشغيل.
تلقائي | لا ينطبق |
الحضور | مطلوب لخوارزميات HMAC. |
النوع | سلسلة |
القيم الصالحة |
يشير هذا المصطلح إلى متغيّر تدفق يشير إلى سلسلة.
ملاحظة: في حال كان متغيّر التدفق، يجب أن يتضمّن البادئة "خاص". بالنسبة
مثال: |
<Subject>
<Subject>subject-string-here</Subject>
<Subject ref="flow_variable" />
على سبيل المثال:
<Subject ref="apigee.developer.email"/>
تنشئ السياسة JWT يحتوي على مطالبة sub، يتم ضبطها على القيمة المحدّدة هذه القيمة تحدد أو تصدر بيانًا حول موضوع JWT. هذا هو أحد مجموعة عادية من المطالبات المذكورة في RFC7519.
تلقائي | لا ينطبق |
الحضور | اختياري |
النوع | سلسلة |
القيم الصالحة | يشير ذلك المصطلح إلى أي قيمة تحدِّد موضوعًا معيّنًا بشكل فريد أو متغيّر تدفق يشير إلى قيمة. |
متغيّرات التدفق
لا تضبط سياسة إنشاء JWT متغيّرات التدفق.
مرجع الخطأ
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.jwt.AlgorithmInTokenNotPresentInConfiguration |
401 | Occurs when the verification policy has multiple algorithms. |
steps.jwt.AlgorithmMismatch |
401 | The algorithm specified in the Generate policy did not match the one expected in the Verify policy. The algorithms specified must match. |
steps.jwt.FailedToDecode |
401 | The policy was unable to decode the JWT. The JWT is possibly corrupted. |
steps.jwt.GenerationFailed |
401 | The policy was unable to generate the JWT. |
steps.jwt.InsufficientKeyLength |
401 | For a key less than 32 bytes for the HS256 algorithm, less than 48 bytes for the HS386 algortithm, and less than 64 bytes for the HS512 algorithm. |
steps.jwt.InvalidClaim |
401 | For a missing claim or claim mismatch, or a missing header or header mismatch. |
steps.jwt.InvalidCurve |
401 | The curve specified by the key is not valid for the Elliptic Curve algorithm. |
steps.jwt.InvalidJsonFormat |
401 | Invalid JSON found in the header or payload. |
steps.jwt.InvalidToken |
401 | This error occurs when the JWT signature verification fails. |
steps.jwt.JwtAudienceMismatch |
401 | The audience claim failed on token verification. |
steps.jwt.JwtIssuerMismatch |
401 | The issuer claim failed on token verification. |
steps.jwt.JwtSubjectMismatch |
401 | The subject claim failed on token verification. |
steps.jwt.KeyIdMissing |
401 | The Verify policy uses a JWKS as a source for public keys, but the signed JWT does not
include a kid property in the header. |
steps.jwt.KeyParsingFailed |
401 | The public key could not be parsed from the given key information. |
steps.jwt.NoAlgorithmFoundInHeader |
401 | Occurs when the JWT contains no algorithm header. |
steps.jwt.NoMatchingPublicKey |
401 | The Verify policy uses a JWKS as a source for public keys, but the kid
in the signed JWT is not listed in the JWKS. |
steps.jwt.SigningFailed |
401 | In GenerateJWT, for a key less than the minimum size for the HS384 or HS512 algorithms |
steps.jwt.TokenExpired |
401 | The policy attempts to verify an expired token. |
steps.jwt.TokenNotYetValid |
401 | The token is not yet valid. |
steps.jwt.UnhandledCriticalHeader |
401 | A header found by the Verify JWT policy in the crit header is not
listed in KnownHeaders . |
steps.jwt.UnknownException |
401 | An unknown exception occurred. |
steps.jwt.WrongKeyType |
401 | Wrong type of key specified. For example, if you specify an RSA key for an Elliptic Curve algorithm, or a curve key for an RSA algorithm. |
Deployment errors
These errors can occur when you deploy a proxy containing this policy.
Error name | Cause | Fix |
---|---|---|
InvalidNameForAdditionalClaim |
The deployment will fail if the claim used in the child element <Claim>
of the <AdditionalClaims> element is one of the following registered names:
kid , iss , sub , aud , iat ,
exp , nbf , or jti .
|
build |
InvalidTypeForAdditionalClaim |
If the claim used in the child element <Claim>
of the <AdditionalClaims> element is not of type string , number ,
boolean , or map , the deployment will fail.
|
build |
MissingNameForAdditionalClaim |
If the name of the claim is not specified in the child element <Claim>
of the <AdditionalClaims> element, the deployment will fail.
|
build |
InvalidNameForAdditionalHeader |
This error ccurs when the name of the claim used in the child element <Claim>
of the <AdditionalClaims> element is either alg or typ .
|
build |
InvalidTypeForAdditionalHeader |
If the type of claim used in the child element <Claim>
of the <AdditionalClaims> element is not of type string , number ,
boolean , or map , the deployment will fail.
|
build |
InvalidValueOfArrayAttribute |
This error occurs when the value of the array attribute in the child element <Claim>
of the <AdditionalClaims> element is not set to true or false .
|
build |
InvalidConfigurationForActionAndAlgorithm |
If the <PrivateKey> element is used with HS Family algorithms or
the <SecretKey> element is used with RSA Family algorithms, the
deployment will fail.
|
build |
InvalidValueForElement |
If the value specified in the <Algorithm> element is not a supported value,
the deployment will fail.
|
build |
MissingConfigurationElement |
This error will occur if the <PrivateKey> element is not used with
RSA family algorithms or the <SecretKey> element is not used with HS Family
algorithms.
|
build |
InvalidKeyConfiguration |
If the child element <Value> is not defined in the <PrivateKey>
or <SecretKey> elements, the deployment will fail.
|
build |
EmptyElementForKeyConfiguration |
If the ref attribute of the child element <Value> of the <PrivateKey>
or <SecretKey> elements is empty or unspecified, the deployment will fail.
|
build |
InvalidVariableNameForSecret |
This error occurs if the flow variable name specified in the ref attribute of the child
element <Value> of the <PrivateKey>
or <SecretKey> elements does not contain the private prefix (private.) .
|
build |
InvalidSecretInConfig |
This error occurs if the child element <Value> of the <PrivateKey>
or <SecretKey> elements does not contain the private prefix (private.) .
|
build |
InvalidTimeFormat |
If the value specified in the<NotBefore> element does not use a
supported format, the deployment will fail.
|
build |
متغيّرات الأخطاء
يتم ضبط هذه المتغيّرات عند حدوث خطأ في بيئة التشغيل. يمكنك الاطّلاع على مقالة ما تحتاج إلى معرفته للحصول على مزيد من المعلومات. حول أخطاء السياسة.
المتغيرات | المكان | مثال |
---|---|---|
fault.name="fault_name" |
fault_name هو اسم الخطأ، كما هو موضَّح في جدول أخطاء وقت التشغيل أعلاه. اسم الخطأ هو الجزء الأخير من رمز الخطأ. | fault.name Matches "TokenExpired" |
JWT.failed |
تضبط جميع سياسات JWT المتغيّر نفسه في حال حدوث عطل. | JWT.failed = true |
مثال على استجابة الخطأ
لمعالجة الخطأ، أفضل ممارسة هي رصد الجزء errorcode
من الخطأ
الاستجابة. لا تعتمد على النص في faultstring
، لأنه قد يتغير.
مثال على قاعدة الخطأ
<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>