درحال مشاهده اسناد Apigee Edge هستید.
به
اسناد Apigee X بروید. اطلاعات
چه
امضای JWS دریافتی از کارخواهها یا سیستمهای دیگر را تأیید میکند. این خطمشی همچنین سرایندها را در متغیرهای زمینهای استخراج میکند تا خطمشیها یا شرایط بعدی بتوانند آن مقادیر را بررسی کنند و تصمیمات مربوط به مجوز یا مسیریابی را اتخاذ کنند. برای آشنایی دقیقتر، نمای کلی خطمشیهای JWS و JWT را ببینید.
اگر JWS درستیسنجی و معتبر باشد، درخواست اجازه ادامه مییابد. اگر امضای JWS قابلتأیید نباشد یا اگر JWS بهدلیل نوعی خطا نامعتبر باشد، همه پردازشها متوقف میشود و خطایی در پاسخ برگردانده میشود.
برای آشنایی با بخشهای JWS و نحوه رمزگذاری و امضای آنها، به RFC7515 مراجعه کنید.
ویدیو
برای آشنایی با نحوه درستیسنجی امضا در JWS، یک ویدیو کوتاه تماشا کنید. اگرچه این ویدیو بهطور خاص به درستیسنجی JWT میپردازد، بسیاری از مفاهیم برای JWS یکسان است.
نمونهها
- درستیسنجی JWS پیوستشده که با الگوریتم HS256 امضا شده است
- درستیسنجی JWS جداشده امضاشده با الگوریتم RS256
درستیسنجی JWS پیوستشده که با الگوریتم HS256 امضا شده است
این خطمشی نمونه یک JWS پیوستشده را که با الگوریتم رمزگذاری HS256، HMAC
بااستفاده از کنترل مجموع SHA-256 امضا شده است درستیسنجی میکند. JWS بااستفاده از پارامتر فرمی بهنام
JWS در درخواست پراکسی ارسال میشود. کلید در متغیری بهنام private.secretkey قرار دارد.
یک JWS پیوستشده حاوی سرایند، بار، و امضای کدبندیشده است:
header.payload.signature
پیکربندی خطمشی شامل اطلاعاتی است که Edge برای رمزگشایی و ارزیابی JWS نیاز دارد،
مثل اینکه JWS را کجا پیدا کند (در متغیر جاریسازی مشخصشده در عنصر <Source>)،
الگوریتم امضای موردنیاز، و کلید رمز را کجا پیدا کند (ذخیرهشده در متغیر جاریسازی Edge، که میتواند
از Edge KVM بازیابی شده باشد، برای مثال).
<VerifyJWS name="JWS-Verify-HS256">
<DisplayName>JWS Verify HS256</DisplayName>
<Algorithm>HS256</Algorithm>
<Source>request.formparam.JWS</Source>
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
<SecretKey>
<Value ref="private.secretkey"/>
</SecretKey>
</VerifyJWS>این خطمشی برونداد خود را در متغیرهای زمینهای مینویسد تا خطمشیها یا شرایط بعدی در پراکسی API بتوانند آن مقادیر را بررسی کنند. برای فهرست متغیرهای تنظیمشده توسط این خطمشی، متغیرهای جاریسازی را ببینید.
درستیسنجی JWS جداشده امضاشده با الگوریتم RS256
این خطمشی نمونه یک JWS جداشده را که با الگوریتم RS256 امضا شده است تأیید میکند. برای درستیسنجی،
باید کلید عمومی را ارائه دهید. JWS بااستفاده از پارامتر فرمی بهنام JWS در درخواست پراکسی ارسال میشود. کلید عمومی در متغیری بهنام public.publickey قرار دارد.
«امضای وب جاوااسکریپت» جداشده پایهبار را از «امضای وب جاوااسکریپت» حذف میکند:
header..signature
این شما هستید که باید با مشخص کردن نام متغیر حاوی پیامواره در عنصر
<DetachedContent>، پیامواره را به خطمشی VerifyJWS ارسال کنید. محتوای مشخصشده در <DetachedContent>
باید به شکل اصلی و بدون کدبندی باشد، همانگونه که هنگام ایجاد امضای JWS بوده است.
<VerifyJWS name="JWS-Verify-RS256"> <DisplayName>JWS Verify RS256</DisplayName> <Algorithm>RS256</Algorithm> <Source>request.formparam.JWS</Source> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <PublicKey> <Value ref="public.publickey"/> </PublicKey> <DetachedContent>private.payload</DetachedContent> </VerifyJWS>
این خطمشی برونداد خود را در متغیرهای زمینهای مینویسد تا خطمشیها یا شرایط بعدی در پراکسی API بتوانند آن مقادیر را بررسی کنند. برای فهرست متغیرهای تنظیمشده توسط این خطمشی، متغیرهای جاریسازی را ببینید.
تنظیم عناصر کلیدی
عناصری که برای مشخص کردن کلید استفادهشده برای درستیسنجی JWS استفاده میکنید به الگوریتم انتخابی بستگی دارد، همانطور که در جدول زیر نشان داده شده است:
| الگوریتم | عناصر کلیدی | |
|---|---|---|
| HS* |
<SecretKey> <Value ref="private.secretkey"/> </SecretKey> |
|
| RS*، ES*، PS* | <PublicKey> <Value ref="rsa_public_key"/> </PublicKey> یا: <PublicKey> <JWKS ref="jwks_val_ref_or_url"/> </PublicKey> |
|
| *برای اطلاعات بیشتر درباره الزامات کلید، به درباره الگوریتمهای رمزگذاری امضا مراجعه کنید. | ||
مرجع عنصر
مرجع خطمشی عناصر و مشخصههای خطمشی «درستیسنجی JWS» را توصیف میکند.
توجه: پیکربندی بسته به الگوریتم رمزگذاری که استفاده میکنید کمی متفاوت خواهد بود. برای مثالهایی که پیکربندیهای موارد استفاده خاص را نشان میدهد، به نمونهها مراجعه کنید.
مشخصههایی که برای عنصر سطح بالا اعمال میشود
<VerifyJWS name="JWS" continueOnError="false" enabled="true" async="false">
مشخصههای زیر برای همه عناصر والد خطمشی مشترک است.
| مشخصه | شرح | پیشفرض | حضور |
|---|---|---|---|
| نام |
نام داخلی خطمشی. نویسههایی که میتوانید در نام استفاده کنید به موارد زیر محدود میشود:
A-Z0-9._\-$ %. بااینحال، واسط کاربر مدیریت Edge محدودیتهای بیشتری را اعمال میکند،
مثلاً نویسههایی را که الفبایی عددی نیستند بهطور خودکار برمیدارد.
بهصورت اختیاری، از عنصر |
موجود نیست | الزامی |
| continueOnError |
برای برگرداندن خطا درصورت ناموفق بودن خطمشی، روی false تنظیم کنید. این رفتار برای اکثر خطمشیها
قابلانتظار است.
روی |
نادرست | اختیاری |
| فعال شد |
برای اجرای خطمشی، روی true تنظیم کنید.
برای «خاموش کردن» خطمشی، روی |
درست | اختیاری |
| غیرهمگام | این مشخصه منسوخ شده است. | نادرست | منسوخ |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
علاوهبر مشخصه نام، از این مشخصه برای برچسبگذاری خطمشی در ویرایشگر پراکسی واسط کاربر مدیریت با نامی متفاوت به زبان طبیعی استفاده کنید.
| پیشفرض | اگر این عنصر را حذف کنید، از مقدار مشخصه نام خطمشی استفاده میشود. |
| حضور | اختیاری |
| تایپ کردن | رشته |
<Algorithm>
<Algorithm>HS256</Algorithm>
الگوریتم رمزگذاری را برای امضای نشان مشخص میکند. الگوریتمهای RS*/PS*/ES* از جفت کلید عمومی/رمز استفاده میکنند، درحالیکه الگوریتمهای HS* از رمز مشترک استفاده میکنند. همچنین درباره الگوریتمهای رمزگذاری امضا را ببینید.
میتوانید چند مقدار را با کاما از هم جدا کنید. برای مثال «HS256، HS512» یا «RS256، PS256». بااینحال، نمیتوانید الگوریتمهای HS* را با الگوریتمهای دیگر یا الگوریتمهای ES* را با الگوریتمهای دیگر ترکیب کنید زیرا به نوع کلید خاصی نیاز دارند. میتوانید الگوریتمهای RS* و PS* را ترکیب کنید.
| پیشفرض | موجود نیست |
| حضور | الزامی |
| تایپ کردن | رشته مقادیر جداشده با کاما |
| مقادیر معتبر | HS256، HS384، HS512، RS256، RS384، RS512، ES256، ES384، ES512، PS256، PS384، PS512 |
<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>
تأیید میکند که سرایند JWS حاوی جفت(های) نام/مقدار ادعای اضافی مشخصشده است و مقادیر ادعای ادعاشده مطابقت دارند.
ادعای اضافی از نامی استفاده میکند که یکی از نامهای ادعای استاندارد و ثبتشده JWS نیست. مقدار ادعای اضافی میتواند رشته، عدد، بولی، نقشه، یا آرایه باشد. نقشه بهسادگی مجموعهای از جفتهای نام/مقدار است. مقدار ادعای هریک از این انواع میتواند بهطور صریح در پیکربندی خطمشی یا بهطور غیرمستقیم ازطریق ارجاع به متغیر جریان مشخص شود.
| پیشفرض | موجود نیست |
| حضور | اختیاری |
| تایپ کردن |
رشته (پیشفرض)، عدد، بولی، یا نقشه. اگر نوعی مشخص نشده باشد، نوع بهطور پیشفرض «رشته» است. |
| آرایه | برای نشان دادن اینکه مقدار آرایهای از انواع است، روی درست تنظیم کنید. پیشفرض: نادرست |
| مقادیر معتبر | هر مقداری که میخواهید برای یک ادعای اضافی استفاده کنید. |
عنصر <Claim> این مشخصهها را میپذیرد:
- نام - (الزامی) نام دعوی.
- ref - (اختیاری) نام متغیر جاری. اگر وجود داشته باشد، خطمشی از مقدار این متغیر بهعنوان ادعا استفاده خواهد کرد. اگر هم مشخصه ref و هم مقدار ادعای صریح مشخص شده باشد، مقدار صریح مقدار پیشفرض است و اگر متغیر جاریسازی ارجاعدادهشده حلنشده باشد، استفاده میشود.
- نوع - (اختیاری) یکی از این موارد: رشته (پیشفرض)، عدد، مقدار منطقی، یا نقشه
- آرایه - (اختیاری) برای نشان دادن اینکه مقدار آرایهای از انواع است، روی درست تنظیم کنید. پیشفرض: نادرست.
<DetachedContent>
<DetachedContent>variable-name-here</DetachedContent>
JWS تولیدشده با محتوای دادهبرداری بهصورت زیر است:
header.payload.signature
اگر از خطمشی GenerateJWS برای ایجاد محتوای جداشده استفاده میکنید، JWS تولیدشده محتوا را حذف میکند و بهصورت زیر است: به این شکل است:
header..signature
برای یک بارگیری مجزا، این شما هستید که باید بااستفاده از عنصر <DetachedContent>، بارگیری را به خطمشی VerifyJWS منتقل کنید. بار محتوای مشخصشده باید در
شکل اصلی کدبندینشدهای باشد که هنگام ایجاد امضای JWS داشته است.
خطمشی در موارد زیر خطا میدهد:
- وقتی JWS حاوی محتوای جداشده
بار نباشد،
<DetachedContent>مشخص میشود (کد خطاsteps.jws.ContentIsNotDetachedاست). -
<DetachedContent>حذف شده است و JWS دارای محتوای جداشده است (کد خطاsteps.jws.InvalidSignatureاست).
| پیشفرض | N/A |
| حضور | اختیاری |
| تایپ کردن | مرجع متغیر |
<IgnoreCriticalHeaders>
<IgnoreCriticalHeaders>true|false</IgnoreCriticalHeaders>
اگر میخواهید وقتی هریک از سرایندهای فهرستشده در سرایند
crit مربوط به JWS در عنصر <KnownHeaders> فهرست نشده است، خطمشی خطا ایجاد کند، روی false تنظیم کنید.
برای اینکه خطمشی VerifyJWS سرصفحه crit را نادیده بگیرد، روی true تنظیم کنید.
یکی از دلایل تنظیم این عنصر روی درست این است که اگر در محیط آزمایش هستید و نمیخواهید خطمشی بهدلیل وجود نداشتن سرایند ناموفق باشد.
| پیشفرض | نادرست |
| حضور | اختیاری |
| تایپ کردن | بولی |
| مقادیر معتبر | درست یا نادرست |
<IgnoreUnresolvedVariables>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
اگر میخواهید وقتی هریک از متغیرهای ارجاعشده مشخصشده در خطمشی غیرقابلحل است، خطمشی خطا ایجاد کند، آن را روی «نادرست» تنظیم کنید. برای اینکه هر متغیر غیرقابلحلی بهعنوان رشته خالی (تهی) درنظر گرفته شود، روی درست تنظیم کنید.
| پیشفرض | نادرست |
| حضور | اختیاری |
| تایپ کردن | بولی |
| مقادیر معتبر | درست یا نادرست |
<KnownHeaders>
<KnownHeaders>a,b,c</KnownHeaders> or: <KnownHeaders ref=’variable_containing_headers’/>
خطمشی GenerateJWS از عنصر <CriticalHeaders> برای پر کردن سرصفحه
crit در کد استفاده میکند. برای مثال:
{
“typ: “...”,
“alg” : “...”,
“crit” : [ “a”, “b”, “c” ],
}خطمشی VerifyJWS سرصفحه crit را در JWS، درصورت وجود، بررسی میکند و برای هر مورد فهرستشده، بررسی میکند که عنصر <KnownHeaders> نیز آن سرصفحه را فهرست کرده باشد. عنصر
<KnownHeaders> میتواند شامل مجموعهای از موارد فهرستشده در crit باشد.
فقط لازم است که همه سرایندهای فهرستشده در crit در عنصر
<KnownHeaders> فهرست شده باشند. هر سرصفحهای که خطمشی در crit پیدا کند
و در <KnownHeaders> فهرست نشده باشد باعث میشود خطمشی VerifyJWS ناموفق باشد.
میتوانید خطمشی VerifyJWS را بهصورت اختیاری پیکربندی کنید تا سرصفحه crit را با
تنظیم عنصر <IgnoreCriticalHeaders> روی true نادیده بگیرد.
| پیشفرض | موجود نیست |
| حضور | اختیاری |
| تایپ کردن | آرایه رشتههای جداشده با کاما |
| مقادیر معتبر | یا آرایه یا نام متغیری که حاوی آرایه است. |
<PublicKey/JWKS>
<!-- Specify the JWKS. --> <PublicKey> <JWKS>jwks-value-here</JWKS> </PublicKey> or: <!-- Specify a variable containing the JWKS. --> <PublicKey> <JWKS ref="public.jwks"/> </PublicKey> or: <!-- Specify a public URL that returns the JWKS. The URL is static, meaning you cannot set it using a variable. --> <PublicKey> <JWKS uri="jwks-url"/> </PublicKey>
مقدار را در قالب JWKS (RFC 7517) که حاوی مجموعهای از کلیدهای عمومی است مشخص میکند. فقط زمانی استفاده کنید که الگوریتم یکی از RS256/RS384/RS512، PS256/PS384/PS512، یا ES256/ES384/ES512 باشد.
اگر JWS ورودی دارای شناسه کلیدی باشد که در مجموعه JWKS وجود دارد، خطمشی از کلید عمومی صحیح برای درستیسنجی امضای JWS استفاده خواهد کرد. برای جزئیات درباره این ویژگی، استفاده از مجموعه کلید وب JSON (JWKS) برای تأیید JWS را ببینید.
اگر مقدار را از نشانی وب عمومی واکشی کنید، Edge مقدار JWKS را برای مدت ۳۰۰ ثانیه در حافظه نهان ذخیره میکند. وقتی حافظه نهان منقضی میشود، Edge دوباره JWKS را واکشی میکند.
| پیشفرض | موجود نیست |
| حضور | برای درستیسنجی JWS بااستفاده از الگوریتم RSA، باید از عنصر JWKS یا Value استفاده کنید. |
| تایپ کردن | رشته |
| مقادیر معتبر | متغیر جریان، مقدار رشتهای، یا نشانی وب. |
<PublicKey/Value>
<PublicKey> <Value ref="public.publickey"/> </PublicKey> -or- <PublicKey> <Value> -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw2kPrRzcufvUNHvTH/WW Q0UrCw5c0+Y707KX3PpXkZGbtTT4nvU1jC0d1lHV8MfUyRXmpmnNxJHAC2F73IyN C5TBtXMORc+us7A2cTtC4gZV256bT4h3sIEMsDl0Joz9K9MPzVPFxa1i0RgNt06n Xn/Bs2UbbLlKP5Q1HPxewUDEh0gVMqz9wdIGwH1pPxKvd3NltYGfPsUQovlof3l2 ALvO7i5Yrm96kknfFEWf1EjmCCKvz2vjVbBb6mp1ZpYfc9MOTZVpQcXSbzb/BWUo ZmkDb/DRW5onclGzxQITBFP3S6JXd4LNESJcTp705ec1cQ9Wp2Kl+nKrKyv1E5Xx DQIDAQAB -----END PUBLIC KEY----- </Value> </PublicKey>
کلید عمومی استفادهشده برای درستیسنجی امضای JWS را مشخص میکند. از مشخصه ref برای گذراندن کلید در متغیر جاریسازی استفاده کنید، یا کلید کدبندیشده PEM را مستقیماً مشخص کنید. فقط زمانی استفاده شود که الگوریتم یکی از RS256/RS384/RS512، PS256/PS384/PS512، یا ES256/ES384/ES512 باشد.
| پیشفرض | موجود نیست |
| حضور | برای درستیسنجی JWS امضاشده با الگوریتم RSA، باید از عناصر JWKS یا Value استفاده کنید. |
| تایپ کردن | رشته |
| مقادیر معتبر | متغیر جریان یا رشته. |
<SecretKey/Value>
<SecretKey> <Value ref="private.your-variable-name"/> </SecretKey>
کلید رمزی را که برای درستیسنجی یا امضا کردن نشانها با الگوریتم HMAC استفاده میشود ارائه میدهد. فقط زمانی استفاده کنید که الگوریتم یکی از HS256، HS384، HS512 باشد. از مشخصه ref برای انتقال کلید در متغیر جاری استفاده کنید.
| پیشفرض | موجود نیست |
| حضور | برای الگوریتمهای HMAC لازم است. |
| تایپ کردن | رشته |
| مقادیر معتبر |
متغیر جاری که به یک رشته اشاره میکند.
توجه: اگر متغیر جاری است، باید پیشوند «خصوصی» داشته باشد. برای مثال،
|
<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.AlgorithmInTokenNotPresentInConfiguration |
401 | زمانی رخ میدهد که خطمشی درستیسنجی دارای چندین الگوریتم باشد |
steps.jws.AlgorithmMismatch |
401 | الگوریتم مشخصشده در سرایند توسط خطمشی «تولید» با الگوریتم موردانتظار در خطمشی «درستیسنجی» مطابقت نداشت. الگوریتمهای مشخصشده باید مطابقت داشته باشند. |
steps.jws.ContentIsNotDetached |
401 | وقتی JWS حاوی
بار محتوای جداشده نباشد، <DetachedContent> مشخص میشود. |
steps.jws.FailedToDecode |
401 | خطمشی نتوانست JWS را رمزگشایی کند. JWS احتمالاً خراب است. |
steps.jws.InsufficientKeyLength |
401 | برای کلید کمتر از ۳۲ بایت برای الگوریتم HS256 |
steps.jws.InvalidClaim |
401 | برای ادعای مالکیت گمشده یا عدم تطابق ادعای مالکیت، یا سرایند گمشده یا عدم تطابق سرایند. |
steps.jws.InvalidCurve |
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.KeyIdMissing |
401 | خطمشی «درستیسنجی» از JWKS بهعنوان منبع کلیدهای عمومی استفاده میکند، اما JWS امضاشده
دارای دارایی kid در سرایند نیست. |
steps.jws.KeyParsingFailed |
401 | کلید عمومی از اطلاعات کلید ارائهشده تجزیه نشد. |
steps.jws.MissingPayload |
401 | بار JWS وجود ندارد. |
steps.jws.NoAlgorithmFoundInHeader |
401 | وقتی JWS سرایند الگوریتم را حذف میکند رخ میدهد. |
steps.jws.NoMatchingPublicKey |
401 | خطمشی «درستیسنجی» از JWKS بهعنوان منبع کلیدهای عمومی استفاده میکند، اما kid
در JWS امضاشده در JWKS فهرست نشده است. |
steps.jws.UnhandledCriticalHeader |
401 | سرایندی که خطمشی «درستیسنجی JWS» در سرایند crit پیدا کرده است در KnownHeaders فهرست نشده است. |
steps.jws.UnknownException |
401 | استثنای ناشناختهای روی داد. |
steps.jws.WrongKeyType |
401 | نوع کلید مشخصشده اشتباه است. برای مثال، اگر کلید RSA را برای الگوریتم «منحنی بیضوی» یا کلید منحنی را برای الگوریتم RSA مشخص کنید. |
خطاهای استقرار
این خطاها ممکن است زمانی رخ دهند که یک پراکسی حاوی این خطمشی را مستقر میکنید.
| نام خطا | وقتی رخ میدهد |
|---|---|
InvalidAlgorithm |
تنها مقادیر معتبر عبارتاند از: RS256، RS384، RS512، PS256، PS384، PS512، ES256، ES384، ES512، HS256، HS384، HS512. |
|
|
سایر خطاهای احتمالی استقرار. |
متغیرهای خطا
این متغیرها زمانی تنظیم می شوند که یک خطای زمان اجرا رخ دهد. برای اطلاعات بیشتر، به آنچه باید در مورد خطاهای خط مشی بدانید مراجعه کنید.
| متغیرها | کجا | مثال |
|---|---|---|
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>