شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید . اطلاعات
چی
یک JWT را بدون تأیید امضا در JWT رمزگشایی می کند. این زمانی که در هماهنگی با خط مشی VerifyJWT استفاده می شود بسیار مفید است، زمانی که ارزش یک ادعا از داخل JWT باید قبل از تأیید امضای JWT شناخته شود.
خط مشی JWT Decode بدون توجه به الگوریتمی که برای امضای 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>
خط مشی خروجی خود را روی متغیرهای زمینه می نویسد تا سیاست ها یا شرایط بعدی در پراکسی API بتوانند آن مقادیر را بررسی کنند. برای لیستی از متغیرهای تنظیم شده توسط این خط مشی، متغیرهای جریان را ببینید.
مرجع عنصر برای رمزگشایی JWT
مرجع خط مشی عناصر و ویژگی های خط مشی Decode JWT را توصیف می کند.
ویژگی هایی که برای عنصر سطح بالا اعمال می شود
<DecodeJWT name="JWT" continueOnError="false" enabled="true" async="false">
ویژگی های زیر برای همه عناصر اصلی خط مشی مشترک است.
صفت | توضیحات | پیش فرض | حضور |
---|---|---|---|
نام | نام داخلی سیاست. نویسه هایی که می توانید در نام استفاده کنید محدود به: A-Z0-9._\-$ % . با این حال، رابط کاربری مدیریت Edge محدودیتهای بیشتری را اعمال میکند، مانند حذف خودکار کاراکترهایی که حروف عددی نیستند. به صورت اختیاری، از عنصر | N/A | مورد نیاز |
continueOnError | برای بازگرداندن خطا در صورت شکست خط مشی، روی false تنظیم کنید. این رفتار مورد انتظار برای اکثر سیاست ها است. روی | نادرست | اختیاری |
فعال شد | برای اجرای خط مشی روی true تنظیم کنید. برای "خاموش کردن" خط مشی، روی | درست است | اختیاری |
ناهمگام | این ویژگی منسوخ شده است. | نادرست | منسوخ شده است |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
علاوه بر ویژگی نام، برای برچسبگذاری خطمشی در ویرایشگر پروکسی رابط کاربری مدیریت با نامی متفاوت و به زبان طبیعی، از آن استفاده کنید.
پیش فرض | اگر این عنصر را حذف کنید، از مقدار ویژگی نام خط مشی استفاده می شود. |
حضور | اختیاری |
تایپ کنید | رشته |
<منبع>
<Source>jwt-variable</Source>
اگر وجود داشته باشد، متغیر جریانی را مشخص می کند که سیاست انتظار دارد JWT را برای رمزگشایی پیدا کند.
پیش فرض | request.header.authorization (برای اطلاعات مهم در مورد پیش فرض به یادداشت بالا مراجعه کنید). |
حضور | اختیاری |
تایپ کنید | رشته |
مقادیر معتبر | نام متغیر جریان لبه |
متغیرهای جریان
پس از موفقیت، سیاست های Verify JWT و Decode JWT متغیرهای زمینه را مطابق این الگو تنظیم می کنند:
jwt.{policy_name}.{variable_name}
به عنوان مثال، اگر نام خط مشی jwt-parse-token
باشد، آنگاه این خط مشی موضوع مشخص شده در JWT را در متغیر زمینه به نام jwt.jwt-parse-token.decoded.claim.sub
ذخیره می کند. (برای سازگاری به عقب، در jwt.jwt-parse-token.claim.subject
نیز موجود خواهد بود)
نام متغیر | توضیحات |
---|---|
claim.audience | ادعای مخاطبان JWT. این مقدار ممکن است یک رشته یا آرایه ای از رشته ها باشد. |
claim.expiry | تاریخ/زمان انقضا، بر حسب میلیثانیه از آن دوره بیان میشود. |
claim.issuedat | تاریخ انتشار توکن، که از آن دوره برحسب میلی ثانیه بیان میشود. |
claim.issuer | ادعای صادرکننده JWT. |
claim.notbefore | اگر JWT شامل یک ادعای nbf باشد، این متغیر حاوی مقداری خواهد بود که از آن دوره در میلی ثانیه بیان شده است. |
claim.subject | ادعای موضوع JWT. |
claim. name | ارزش ادعای نامگذاری شده (استاندارد یا اضافی) در بار. یکی از اینها برای هر ادعا در محموله تنظیم می شود. |
decoded.claim. name | مقدار JSON قابل تجزیه ادعای نامگذاری شده (استاندارد یا اضافی) در بار. برای هر ادعا در محموله یک متغیر تنظیم شده است. برای مثال، میتوانید از decoded.claim.iat برای بازیابی زمان صدور JWT، که بر حسب ثانیه از آن دوره بیان میشود، استفاده کنید. در حالی که می توانید از claim. name متغیرهای جریان، این متغیر توصیه شده برای دسترسی به ادعا است. |
decoded.header. name | مقدار قابل تجزیه JSON یک هدر در بار. یک متغیر برای هر هدر در محموله تنظیم شده است. در حالی که می توانید از header. name متغیرهای جریان، این متغیر پیشنهادی برای استفاده برای دسترسی به هدر است. |
expiry_formatted | تاریخ/زمان انقضا، به عنوان یک رشته قابل خواندن توسط انسان قالب بندی شده است. مثال: 2017-09-28T21:30:45.000+0000 |
header.algorithm | الگوریتم امضای مورد استفاده در JWT. به عنوان مثال، RS256، HS384، و غیره. برای اطلاعات بیشتر به پارامتر سرصفحه (الگوریتم) مراجعه کنید. |
header.kid | شناسه کلید، اگر هنگام تولید JWT اضافه شود. همچنین به «استفاده از مجموعه کلیدهای وب JSON (JWKS)» در نمای کلی خطمشیهای JWT برای تأیید JWT مراجعه کنید. برای اطلاعات بیشتر به پارامتر سرصفحه (شناسه کلید) مراجعه کنید. |
header.type | روی JWT تنظیم خواهد شد. |
header. name | مقدار هدر نامگذاری شده (استاندارد یا اضافی). یکی از اینها برای هر هدر اضافی در قسمت هدر JWT تنظیم می شود. |
header-json | هدر با فرمت JSON. |
is_expired | درست یا نادرست |
payload-claim-names | مجموعه ای از ادعاهای پشتیبانی شده توسط JWT. |
payload-json | محموله در قالب JSON. |
seconds_remaining | تعداد ثانیه های قبل از توکن منقضی می شود. اگر توکن منقضی شده باشد، این عدد منفی خواهد بود. |
time_remaining_formatted | زمان باقیمانده تا توکن منقضی میشود که بهصورت رشتهای قابل خواندن توسط انسان قالببندی شده است. مثال: 00:59:59.926 |
valid | در مورد VerifyJWT، این متغیر زمانی درست خواهد بود که امضا تایید شود، و زمان فعلی قبل از انقضای توکن است و بعد از مقدار notBefore توکن، در صورت وجود. در غیر این صورت نادرست. در مورد DecodeJWT، این متغیر تنظیم نشده است. |
مرجع خطا
این بخش کدهای خطا و پیامهای خطایی را که برگردانده میشوند و متغیرهای خطا را که توسط 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 نام خطا است، همانطور که در جدول خطاهای Runtime در بالا ذکر شده است. نام خطا آخرین قسمت کد خطا است. | 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>