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

المزايا
فك ترميز JWT بدون التحقق من التوقيع في JWT. يكون هذا مفيدًا للغاية عند استخدامه في تعديل متوافق مع سياسة التحقّق من JWT، عند الحاجة إلى معرفة قيمة مطالبة من داخل JWT قبل التحقق من توقيع JWT.
تعمل سياسة فك ترميز JWT بغض النظر عن الخوارزمية التي تم استخدامها لتوقيع JWT. يمكنك الاطّلاع على نظرة عامة على سياسات JWS وJWT للحصول على مقدمة تفصيلية.
فيديو
يمكنك مشاهدة فيديو قصير لمعرفة كيفية فك ترميز JWT.
نموذج: فك ترميز JWT
تفكك السياسة الموضّحة أدناه ترميز JWT في متغيّر التدفق var.jwt. هذا النمط يجب أن يكون المتغيّر متوفّرًا وأن يحتوي على رمز JWT (قابل للفكاكة) قابل للتطبيق. يمكن للسياسة الحصول على JWT من أي متغير تدفق.
<DecodeJWT name="JWT-Decode-HS256"> <DisplayName>JWT Verify HS256</DisplayName> <Source>var.jwt</Source> </DecodeJWT>
تكتب السياسة مخرجاتها على متغيرات السياق بحيث يمكن للسياسات أو الشروط اللاحقة في الخادم الوكيل لواجهة برمجة التطبيقات يمكنها فحص تلك القيم. اطّلِع على متغيّرات التدفق للحصول على قائمة بالمتغيّرات التي حدّدتها هذه السياسة.
مرجع عنصر لفك ترميز JWT
يصف مرجع السياسة عناصر سياسة فك ترميز JWT وسماتها.
السمات التي تطبيقها على عنصر المستوى الأعلى
<DecodeJWT name="JWT" continueOnError="false" enabled="true" async="false">
السمات التالية مشتركة بين جميع العناصر الرئيسية للسياسة.
السمة | الوصف | تلقائي | الحضور |
---|---|---|---|
الاسم |
الاسم الداخلي للسياسة. تقتصر الأحرف التي يمكنك استخدامها في الاسم على:
A-Z0-9._\-$ % ومع ذلك، تفرض واجهة مستخدم إدارة Edge المزيد
مثل الإزالة التلقائية للأحرف غير الأبجدية الرقمية.
يمكنك استخدام العنصر |
لا ينطبق | مطلوب |
continueOnError |
اضبط القيمة على false لعرض رسالة خطأ عند تعذُّر تنفيذ سياسة. هذا متوقّع
السلوك في معظم السياسات.
يمكنك ضبط القيمة على |
خطأ | اختياري |
مفعّلة |
اضبط القيمة على true لفرض السياسة.
ضبط على |
صحيح | اختياري |
غير متزامن | تم إيقاف هذه السمة نهائيًا. | خطأ | منهي العمل به |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
يمكن استخدامها بالإضافة إلى سمة الاسم لتصنيف السياسة في أداة تعديل الخادم الوكيل لواجهة مستخدم الإدارة باسم آخر بلغة طبيعية
تلقائي | إذا لم تستخدم هذا العنصر، سيتم استخدام قيمة سمة اسم السياسة. |
الحضور | اختياري |
النوع | سلسلة |
<Source>
<Source>jwt-variable</Source>
في حال توفّره، تحدّد هذه السياسة متغيّر التدفق الذي تتوقع السياسة فيه العثور على JWT وفك ترميزه.
تلقائي | request.header.authorization (راجِع الملاحظة أعلاه للاطّلاع على معلومات مهمة)
عن الإعداد الافتراضي). |
الحضور | اختياري |
النوع | سلسلة |
القيم الصالحة | اسم متغير تدفق Edge |
Flow variables
Upon success, the Verify JWT and Decode JWT policies set context variables according to this pattern:
jwt.{policy_name}.{variable_name}
For example, if the policy name is jwt-parse-token
, then the policy will store
the subject specified in the JWT to the context variable named jwt.jwt-parse-token.decoded.claim.sub
.
(For backward compatibility, it will also be available in jwt.jwt-parse-token.claim.subject
)
Variable name | Description |
---|---|
claim.audience |
The JWT audience claim. This value may be a string, or an array of strings. |
claim.expiry |
The expiration date/time, expressed in milliseconds since epoch. |
claim.issuedat |
The Date the token was issued, expressed in milliseconds since epoch. |
claim.issuer |
The JWT issuer claim. |
claim.notbefore |
If the JWT includes a nbf claim, this variable will contain the value, expressed in milliseconds since epoch. |
claim.subject |
The JWT subject claim. |
claim.name |
The value of the named claim (standard or additional) in the payload. One of these will be set for every claim in the payload. |
decoded.claim.name |
The JSON-parsable value of the named claim (standard or additional) in the payload. One variable is set for
every claim in the payload. For example, you can use decoded.claim.iat to
retrieve the issued-at time of the JWT, expressed in seconds since epoch. While you
can also use the claim.name flow variables, this is the
recommended variable to use to access a claim. |
decoded.header.name |
The JSON-parsable value of a header in the payload. One variable is set for
every header in the payload. While you can also use the header.name flow variables,
this is the recommended variable to use to access a header. |
expiry_formatted |
The expiration date/time, formatted as a human-readable string. Example: 2017-09-28T21:30:45.000+0000 |
header.algorithm |
The signing algorithm used on the JWT. For example, RS256, HS384, and so on. See (Algorithm) Header Parameter for more. |
header.kid |
The Key ID, if added when the JWT was generated. See also "Using a JSON Web Key Set (JWKS)" at JWT policies overview to verify a JWT. See (Key ID) Header Parameter for more. |
header.type |
Will be set to JWT . |
header.name |
The value of the named header (standard or additional). One of these will be set for every additional header in the header portion of the JWT. |
header-json |
The header in JSON format. |
is_expired |
true or false |
payload-claim-names |
An array of claims supported by the JWT. |
payload-json |
The payload in JSON format.
|
seconds_remaining |
The number of seconds before the token will expire. If the token is expired, this number will be negative. |
time_remaining_formatted |
The time remaining before the token will expire, formatted as a human-readable string. Example: 00:59:59.926 |
valid |
In the case of VerifyJWT, this variable will be true when the signature is verified, and
the current time is before the token expiry, and after the token notBefore value, if they
are present. Otherwise false.
In the case of DecodeJWT, this variable is not set. |
مرجع الخطأ
يصف هذا القسم رموز الأخطاء ورسائل الخطأ التي يتم عرضها ومتغيرات الأخطاء التي تضبطها Edge عندما تؤدي هذه السياسة إلى ظهور خطأ. هذه المعلومات مهمة لمعرفة ما إذا كنت تعمل على تطوير قواعد للأخطاء للتعامل معها. لمزيد من المعلومات، يمكنك الاطّلاع على المعلومات التي يجب معرفتها عن الأخطاء المتعلقة بالسياسات وأخطاء المعالجة.
أخطاء في وقت التشغيل
يمكن أن تحدث هذه الأخطاء عند تنفيذ السياسة.
رمز الخطأ | رموز حالة HTTP | السبب | إصلاح |
---|---|---|---|
steps.jwt.FailedToDecode |
401 | يحدث ذلك عندما يتعذّر على السياسة فك ترميز JWT. قد يكون JWT مكتوبًا بصيغة غير صحيحة أو غير صالح أو غير قابل للفصل. | build |
steps.jwt.FailedToResolveVariable |
401 | يحدث ذلك عندما لا يكون متغيّر التدفق المحدّد في العنصر <Source> ضِمن
السياسة متوفّرًا. |
|
steps.jwt.InvalidToken |
401 | يحدث ذلك عندما يكون متغيّر التدفق المحدّد في العنصر <Source> ضمن السياسة خارج النطاق أو يتعذّر حلّه. |
build |
أخطاء النشر
يمكن أن تحدث هذه الأخطاء عند نشر خادم وكيل يحتوي على هذه السياسة.
اسم الخطأ | السبب | إصلاح |
---|---|---|
InvalidEmptyElement |
يحدث ذلك عندما لا يتم تحديد متغيّر التدفق الذي يحتوي على JWT المطلوب فك ترميزه في العنصر <Source> للسياسة.
|
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>