إنشاء سياسة JWT

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

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

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

فيديو

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

نماذج

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

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

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

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

<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 "لإيقاف" السياسة. لن يتم فرض السياسة حتى إذا بقيت مرفقة بتسلسل.

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

<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 - (اختياري) إحدى القيم التالية: string (القيمة التلقائية) أو number أو boolean أو map
  • array: (اختياري) اضبط القيمة على true للإشارة إلى ما إذا كانت القيمة مصفوفة من الأنواع. القيمة التلقائية: false.

عند تضمين العنصر <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 - (اختياري) إحدى القيم التالية: string (القيمة التلقائية) أو number أو boolean أو map
  • array: (اختياري) اضبط القيمة على true للإشارة إلى ما إذا كانت القيمة مصفوفة من الأنواع. القيمة التلقائية: false.

<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 يدرج هذا العنوان أيضًا. أي عنوان تعثر عليه سياسة VerifyJWT في crit ولم يتم إدراجه أيضًا في <KnownHeaders> يؤدي إلى تعذُّر تنفيذ سياسة VerifyJWT.

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

<CustomClaims>

ملاحظة: يتم حاليًا إدراج عنصر CustomClaims عند إضافة سياسة GenerateJWT جديدة من خلال واجهة المستخدم. هذا العنصر غير فعّال ويتم تجاهله. العنصر الصحيح الذي يجب استخدامه بدلاً من ذلك هو <AdditionalClaims>. سيتم تعديل واجهة المستخدم لإدراج العناصر الصحيحة في وقت لاحق.

<ExpiresIn>

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

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

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

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

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

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

<Id>

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

تنشئ هذه الدالة رمز JWT يتضمّن مطالبة jti المحدّدة. عندما تكون قيمة النص وسمة ref فارغتين، ستنشئ السياسة معرّف jti يحتوي على معرّف فريد عالمي عشوائي. مطالبة معرّف 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 أغسطس 2017 الساعة 11:00:21 صباحًا بتوقيت المحيط الهادئ
ANCI-C EEE MMM d HH:mm:ss yyyy الاثنين 14 أغسطس 2017 الساعة 11:00:21

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

  • 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". على سبيل المثال، private.mypassword

<PrivateKey/Value>

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

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

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

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

<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.
النوع سلسلة
القيم الصالحة متغيّر سير عمل يشير إلى سلسلة

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

<Subject>

<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.name="fault_name" fault_name هو اسم الخطأ، كما هو موضَّح في جدول أخطاء وقت التشغيل أعلاه. اسم الخطأ هو الجزء الأخير من رمز الخطأ. fault.name Matches "TokenExpired"
JWT.failed تضبط جميع سياسات JWT المتغيّر نفسه في حال حدوث عطل. JWT.failed = true

مثال على استجابة الخطأ

رموز الأخطاء في سياسة JWT

لمعالجة الخطأ، أفضل ممارسة هي رصد الجزء 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>