خط‌مشی DecodeJWS

درحال مشاهده اسناد Apigee Edge هستید.
به اسناد Apigee X بروید.
اطلاعات

چه

سرصفحه JWS را بدون درستی‌سنجی امضای JWS رمزگشایی می‌کند و هر سرصفحه را در متغیر جاری‌سازی می‌نویسد. این خط‌مشی زمانی بیشترین کاربرد را دارد که همراه با خط‌مشی VerifyJWS استفاده شود، یعنی زمانی که مقدار سرایند درون JWS باید قبل‌از اصالت‌سنجی امضای JWS مشخص شود.

یک JWS می‌تواند یک بار پیوست‌شده داشته باشد، به این صورت:

header.payload.signature

یا JWS می‌تواند محتوا را، که محتوای جداشده نامیده می‌شود، حذف کند و به این شکل باشد:

header..signature

خط‌مشی DecodeJWS با هر دو شکل کار می‌کند زیرا فقط بخش سرصفحه JWS را رمزگشایی می‌کند. خط‌مشی DecodeJWS صرف‌نظر از الگوریتمی که برای امضای JWS استفاده شده است نیز کار می‌کند.

برای آشنایی دقیق با JWS و نمای کلی قالب JWS، به نمای کلی خط‌مشی‌های JWS و JWT مراجعه کنید.

ویدیو

برای آشنایی با نحوه رمزگشایی JWT، ویدیو کوتاهی را تماشا کنید. اگرچه این ویدیو مختص JWT است، بسیاری از مفاهیم برای JWS یکسان است.

نمونه: رمزگشایی JWS

خط‌مشی نشان‌داده‌شده در زیر، یک JWS را که در متغیر جریان var.JWS پیدا شده است رمزگشایی می‌کند. این متغیر باید وجود داشته باشد و حاوی JWS معتبری (قابل‌رمزگشایی) باشد. خط‌مشی می‌تواند JWS را از هر متغیر جاری‌سازی دریافت کند.

<DecodeJWS name="JWS-Decode-HS256">
    <DisplayName>JWS Verify HS256</DisplayName>
    <Source>var.JWS</Source>
</DecodeJWS>

برای هر سرصفحه در بخش سرصفحه JWS، خط‌مشی متغیر جریانی با نام زیر تنظیم می‌کند:

jws.policy-name.header.header-name

اگر JWS پایه‌بار پیوست‌شده داشته باشد، متغیر جاری jws.policy-name.header.payload را روی پایه‌بار تنظیم می‌کند. برای پایه‌بار جداشده، payload خالی است. برای فهرست کامل متغیرهای تنظیم‌شده توسط این خط‌مشی، متغیرهای جریان را ببینید.

مرجع عنصر برای «رمزگشایی JWS»

مرجع خط‌مشی عناصر و مشخصه‌های خط‌مشی «رمزگشایی JWS» را توصیف می‌کند.

مشخصه‌هایی که برای عنصر سطح بالا اعمال می‌شود

<DecodeJWS name="JWS" continueOnError="false" enabled="true" async="false">

مشخصه‌های زیر برای همه عناصر والد خط‌مشی مشترک است.

مشخصه شرح پیش‌فرض حضور
نام نام داخلی خط‌مشی. نویسه‌هایی که می‌توانید در نام استفاده کنید به موارد زیر محدود می‌شود: A-Z0-9._\-$ %. بااین‌حال، واسط کاربر مدیریت Edge محدودیت‌های بیشتری را اعمال می‌کند، مثلاً نویسه‌هایی را که الفبایی عددی نیستند به‌طور خودکار برمی‌دارد.

به‌صورت اختیاری، از عنصر <displayname></displayname> برای برچسب‌گذاری خط‌مشی در ویرایشگر پراکسی واسط کاربر مدیریت با نامی متفاوت و به زبان طبیعی استفاده کنید.

موجود نیست الزامی
continueOnError برای برگرداندن خطا درصورت ناموفق بودن خط‌مشی، روی false تنظیم کنید. این رفتار برای اکثر خط‌مشی‌ها قابل‌انتظار است.

روی true تنظیم کنید تا اجرای جریان حتی پس‌از ناموفق بودن خط‌مشی ادامه یابد.

نادرست اختیاری
فعال شد برای اجرای خط‌مشی، روی true تنظیم کنید.

برای «خاموش کردن» خط‌مشی، روی false تنظیم کنید. حتی اگر خط‌مشی به جریانی پیوست شده باشد، اجرا نخواهد شد.

درست اختیاری
غیرهمگام این مشخصه منسوخ شده است. نادرست منسوخ

<DisplayName>

<DisplayName>Policy Display Name</DisplayName>

علاوه‌بر مشخصه نام، از این مشخصه برای برچسب‌گذاری خط‌مشی در ویرایشگر پراکسی واسط کاربر مدیریت با نامی متفاوت به زبان طبیعی استفاده کنید.

پیش‌فرض اگر این عنصر را حذف کنید، از مقدار مشخصه نام خط‌مشی استفاده می‌شود.
حضور اختیاری
تایپ کردن رشته

<Source>

<Source>JWS-variable</Source>

درصورت وجود، متغیر جاری‌سازی را مشخص می‌کند که خط‌مشی انتظار دارد JWS را در آن پیدا کند تا رمزگشایی کند.

پیش‌فرض request.header.authorization (برای اطلاعات مهم درباره پیش‌فرض، یادداشت بالا را ببینید).
حضور اختیاری
تایپ کردن رشته
مقادیر معتبر نام متغیر جریان Edge

متغیرهای جریان

پس از موفقیت، سیاست های Verify JWS و Decode JWS متغیرهای زمینه را مطابق این الگو تنظیم می کنند:

jws.{policy_name}.{variable_name}

به عنوان مثال، اگر نام خط مشی verify-jws باشد، این خط مشی الگوریتم مشخص شده در JWS را در این متغیر زمینه ذخیره می کند: jws.verify-jws.header.algorithm

نام متغیر توضیحات
decoded.header. name مقدار قابل تجزیه JSON یک هدر در بار. یک متغیر برای هر هدر در محموله تنظیم شده است. در حالی که می توانید از header. name متغیرهای جریان، این متغیر پیشنهادی برای استفاده برای دسترسی به هدر است.
header.algorithm الگوریتم امضای مورد استفاده در JWS. به عنوان مثال، RS256، HS384، و غیره. برای اطلاعات بیشتر به پارامتر سرصفحه (الگوریتم) مراجعه کنید.
header.kid شناسه کلید، اگر هنگام تولید JWS اضافه شود. همچنین به «استفاده از مجموعه کلیدهای وب JSON (JWKS)» در نمای کلی خط‌مشی‌های JWT و JWS برای تأیید JWS مراجعه کنید. برای اطلاعات بیشتر به پارامتر سرصفحه (شناسه کلید) مراجعه کنید.
header.type مقدار نوع سرصفحه برای اطلاعات بیشتر به پارامتر سرصفحه (تایپ) مراجعه کنید.
header. name مقدار هدر نامگذاری شده (استاندارد یا اضافی). یکی از اینها برای هر هدر اضافی در قسمت هدر JWS تنظیم می شود.
header-json هدر با فرمت JSON.
payload محموله JWS اگر JWS دارای محموله متصل باشد. برای بار جدا شده، این متغیر خالی است.
valid در مورد VerifyJWS، این متغیر زمانی درست خواهد بود که امضا تایید شود، و زمان فعلی قبل از انقضای توکن است، و بعد از مقدار notBefore توکن، در صورت وجود. در غیر این صورت نادرست.

در مورد DecodeJWS، این متغیر تنظیم نشده است.

مرجع خطا

این بخش کدهای خطا و پیام‌های خطایی را که برگردانده می‌شوند و متغیرهای خطایی را که Edge هنگام راه‌اندازی خطا در این خط‌مشی تنظیم می‌کند شرح می‌دهد. این اطلاعات برای دانستن اینکه آیا قوانین خطا را برای مدیریت خطاها توسعه می‌دهید یا نه مهم است. برای کسب اطلاعات بیشتر، آنچه باید درباره خطاهای خط‌مشی بدانیدو رسیدگی به اشکالات را ببینید.

خطاهای زمان اجرا

این خطاها ممکن است هنگام اجرای خط‌مشی رخ دهند.

کد خطا وضعیت HTTP وقتی رخ می‌دهد
steps.jws.FailedToDecode 401 خط‌مشی نتوانست JWS را رمزگشایی کند. ‫JWS احتمالاً خراب است.
steps.jws.FailedToResolveVariable 401 زمانی رخ می‌دهد که متغیر جاری مشخص‌شده در عنصر <Source> خط‌مشی وجود نداشته باشد.
steps.jws.InvalidClaim 401 برای ادعای مالکیت گم‌شده یا عدم تطابق ادعای مالکیت، یا سرایند گم‌شده یا عدم تطابق سرایند.
steps.jws.InvalidJsonFormat 401 ‫JSON نامعتبر در سرایند JWS پیدا شد.
steps.jws.InvalidJws 401 این خطا زمانی رخ می‌دهد که درستی‌سنجی امضای JWS ناموفق باشد.
steps.jws.InvalidPayload 401 بار JWS نامعتبر است.
steps.jws.InvalidSignature 401 <DetachedContent> حذف شده است و JWS دارای پایه‌بار محتوای جداشده است.
steps.jws.MissingPayload 401 بار JWS وجود ندارد.
steps.jws.NoAlgorithmFoundInHeader 401 وقتی JWS سرایند الگوریتم را حذف می‌کند رخ می‌دهد.
steps.jws.UnknownException 401 استثنای ناشناخته‌ای روی داد.

خطاهای استقرار

این خطاها ممکن است زمانی رخ دهند که یک پراکسی حاوی این خط‌مشی را مستقر می‌کنید.

نام خطا وقتی رخ می‌دهد
InvalidAlgorithm تنها مقادیر معتبر عبارت‌اند از: RS256،‏ RS384،‏ RS512،‏ PS256،‏ PS384،‏ PS512،‏ ES256،‏ ES384،‏ ES512، HS256،‏ HS384،‏ HS512.

EmptyElementForKeyConfiguration

FailedToResolveVariable

InvalidConfigurationForActionAndAlgorithmFamily

InvalidConfigurationForVerify

InvalidEmptyElement

InvalidFamiliesForAlgorithm

InvalidKeyConfiguration

InvalidNameForAdditionalClaim

InvalidNameForAdditionalHeader

InvalidPublicKeyId

InvalidPublicKeyValue

InvalidSecretInConfig

InvalidTypeForAdditionalClaim

InvalidTypeForAdditionalHeader

InvalidValueForElement

InvalidValueOfArrayAttribute

InvalidVariableNameForSecret

MissingConfigurationElement

MissingElementForKeyConfiguration

MissingNameForAdditionalClaim

MissingNameForAdditionalHeader

سایر خطاهای احتمالی استقرار.

متغیرهای خطا

این متغیرها زمانی تنظیم می شوند که یک خطای زمان اجرا رخ دهد. برای اطلاعات بیشتر، به آنچه باید در مورد خطاهای خط مشی بدانید مراجعه کنید.

متغیرها کجا مثال
fault.name=" fault_name " fault_name نام خطا است، همانطور که در جدول خطاهای Runtime در بالا ذکر شده است. نام خطا آخرین قسمت کد خطا است. fault.name Matches "TokenExpired"
JWS.failed همه خط مشی های JWS در صورت خرابی یک متغیر را تنظیم می کنند. jws.JWS-Policy.failed = true

نمونه پاسخ خطا

برای رسیدگی به خطا، بهترین روش به دام انداختن قسمت errorcode در پاسخ به خطا است. به متن موجود در faultstring تکیه نکنید، زیرا ممکن است تغییر کند.

مثال قانون خطا

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