درحال مشاهده اسناد Apigee Edge هستید.
به
اسناد Apigee X بروید. اطلاعات
چه
یک 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 «توکن وب JSON» را کدبندی و امضا میکند، ازجمله ادعاها. برای آشنایی با بخشهای 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> عناصر |
|
| *برای اطلاعات بیشتر درباره الزامات کلید، به درباره الگوریتمهای رمزگذاری امضا مراجعه کنید. | ||
مرجع عنصر برای «تولید JWT»
مرجع خطمشی عناصر و مشخصههای خطمشی «تولید JWT» را توصیف میکند.
توجه: پیکربندی بسته به الگوریتم رمزگذاری که استفاده میکنید کمی متفاوت خواهد بود. برای مثالهایی که پیکربندیهای موارد استفاده خاص را نشان میدهد، به نمونهها مراجعه کنید.
مشخصههایی که برای عنصر سطح بالا اعمال میشود
<GenerateJWT name="JWT" continueOnError="false" enabled="true" async="false">
مشخصههای زیر برای همه عناصر والد خطمشی مشترک است.
| مشخصه | شرح | پیشفرض | حضور |
|---|---|---|---|
| نام |
نام داخلی خطمشی. نویسههایی که میتوانید در نام استفاده کنید به موارد زیر محدود میشود:
A-Z0-9._\-$ %. بااینحال، واسط کاربر مدیریت Edge محدودیتهای بیشتری را اعمال میکند،
مثلاً نویسههایی را که الفبایی عددی نیستند بهطور خودکار برمیدارد.
بهصورت اختیاری، از عنصر |
موجود نیست | الزامی |
| continueOnError |
برای برگرداندن خطا درصورت ناموفق بودن خطمشی، روی false تنظیم کنید. این رفتار برای اکثر خطمشیها
قابلانتظار است.
روی |
نادرست | اختیاری |
| فعال شد |
برای اجرای خطمشی، روی true تنظیم کنید.
برای «خاموش کردن» خطمشی، روی |
درست | اختیاری |
| غیرهمگام | این مشخصه منسوخ شده است. | نادرست | منسوخ |
<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> این مشخصهها را میپذیرد:
- نام - (الزامی) نام دعوی.
- ref - (اختیاری) نام متغیر جاری. اگر وجود داشته باشد، خطمشی از مقدار این متغیر بهعنوان ادعا استفاده خواهد کرد. اگر هم مشخصه ref و هم مقدار ادعای صریح مشخص شده باشد، مقدار صریح مقدار پیشفرض است و اگر متغیر جاریسازی ارجاعدادهشده حلنشده باشد، استفاده میشود.
- نوع - (اختیاری) یکی از این موارد: رشته (پیشفرض)، عدد، مقدار منطقی، یا نقشه
- آرایه - (اختیاری) برای نشان دادن اینکه مقدار آرایهای از انواع است، روی درست تنظیم کنید. پیشفرض: نادرست.
وقتی عنصر <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> این مشخصهها را میپذیرد:
- نام - (الزامی) نام دعوی.
- ref - (اختیاری) نام متغیر جاری. اگر وجود داشته باشد، خطمشی از مقدار این متغیر بهعنوان ادعا استفاده خواهد کرد. اگر هم مشخصه ref و هم مقدار ادعای صریح مشخص شده باشد، مقدار صریح مقدار پیشفرض است و اگر متغیر جاریسازی ارجاعدادهشده حلنشده باشد، استفاده میشود.
- نوع - (اختیاری) یکی از این موارد: رشته (پیشفرض)، عدد، مقدار منطقی، یا نقشه
- آرایه - (اختیاری) برای نشان دادن اینکه مقدار آرایهای از انواع است، روی درست تنظیم کنید. پیشفرض: نادرست.
<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>
توجه: درحالحاضر، وقتی خطمشی GenerateJWT جدیدی را ازطریق رابط کاربری اضافه میکنید، عنصر CustomClaims درج میشود. این عنصر عملکردی نیست و نادیده گرفته میشود. عنصر صحیح برای استفاده بهجای آن <AdditionalClaims> است. میانای کاربری در زمان دیگری بهروز خواهد شد تا عناصر صحیح را درج کند.
<ExpiresIn>
<ExpiresIn>time-value-here</ExpiresIn>
طول عمر JWT را به میلیثانیه، ثانیه، دقیقه، ساعت، یا روز مشخص میکند.
| پیشفرض | N/A |
| حضور | اختیاری |
| تایپ کردن | عدد صحیح |
| مقادیر معتبر |
مقدار یا مرجعی به متغیر جریانی که حاوی مقدار است. واحدهای زمان را میتوان بهصورت زیر مشخص کرد:
برای مثال، |
<Id>
<Id>explicit-jti-value-here</Id> -or- <Id ref='variable-name-here'/> -or- <Id/>
یک JWT با ادعای jti خاص تولید میکند. وقتی مقدار نوشتاری و مشخصه ref هر دو خالی باشند، خطمشی یک jti حاوی UUID تصادفی تولید میکند. ادعای شناسه 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 |
دوشنبه، ۱۴ اوت ۲۰۱۷، ۱۱:۰۰:۲۱ به وقت PDT |
| RFC 850 | EEEE, dd-MMM-yy HH:mm:ss zzz |
دوشنبه، ۱۷-۰۸-۱۴ ۱۱:۰۰:۲۱ به وقت PDT |
| ANCI-C | EEE MMM d HH:mm:ss yyyy |
دوشنبه ۱۴ اوت ۲۰۱۷، ۱۱:۰۰:۲۱ |
برای مقادیر زمان نسبی، عدد صحیح و دوره زمانی را مشخص کنید، برای مثال:
- ۱۰ ثانیه
- ۶۰ دقیقه
- ۱۲ ساعت
<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» داشته باشد. برای مثال، |
<PrivateKey/Value>
<PrivateKey> <Value ref="private.variable-name-here"/> </PrivateKey>
کلید خصوصی کدبندیشده با PEM را که برای امضای JWT استفاده میشود مشخص میکند. از مشخصه ref برای انتقال کلید در متغیر جاری استفاده کنید. فقط زمانی استفاده کنید که الگوریتم یکی از RS256/RS384/RS512، PS256/PS384/PS512، یا ES256/ES384/ES512 باشد.
| پیشفرض | موجود نیست |
| حضور | برای تولید JWT بااستفاده از الگوریتم RS256 الزامی است. |
| تایپ کردن | رشته |
| مقادیر معتبر |
متغیر جریانی که حاوی رشتهای است که مقدار کلید خصوصی RSA کدبندیشده با PEM را نشان میدهد.
توجه: متغیر جاری باید پیشوند «خصوصی» داشته باشد. برای مثال،
|
<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، ۳۲ بایت، برای HS384، ۴۸ بایت، و برای HS512، ۶۴ بایت است. استفاده از کلید با قدرت کمتر باعث خطای زمان اجرا میشود.
| پیشفرض | موجود نیست |
| حضور | برای الگوریتمهای HMAC لازم است. |
| تایپ کردن | رشته |
| مقادیر معتبر |
متغیر جاریسازی که به رشتهای ارجاع میدهد
توجه: اگر متغیر جاری باشد، باید پیشوند «خصوصی» داشته باشد. برای
مثال، |
<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 | برای کلیدی کمتر از ۳۲ بایت برای الگوریتم HS256، کمتر از ۴۸ بایت برای الگوریتم HS386، و کمتر از ۶۴ بایت برای الگوریتم 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 | در GenerateJWT، برای کلیدی که کمتر از اندازه حداقل برای الگوریتمهای 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.
|
build |
InvalidTypeForAdditionalClaim |
اگر ادعای استفادهشده در عنصر فرزند <Claim>
عنصر <AdditionalClaims> از نوع string، number،
boolean، یا map نباشد، استقرار ناموفق خواهد بود.
|
build |
MissingNameForAdditionalClaim |
اگر نام ادعا در عنصر فرزند <Claim>
عنصر <AdditionalClaims> مشخص نشده باشد، استقرار ناموفق خواهد بود.
|
build |
InvalidNameForAdditionalHeader |
این خطا زمانی رخ میدهد که نام ادعای استفادهشده در عنصر فرزند <Claim>
عنصر <AdditionalClaims> یا alg یا typ باشد.
|
build |
InvalidTypeForAdditionalHeader |
اگر نوع ادعای استفادهشده در عنصر فرزند <Claim>
عنصر <AdditionalClaims> از نوع string، number،
boolean، یا map نباشد، استقرار ناموفق خواهد بود.
|
build |
InvalidValueOfArrayAttribute |
این خطا زمانی رخ میدهد که مقدار مشخصه آرایه در عنصر فرزند <Claim>
عنصر <AdditionalClaims> روی true یا false تنظیم نشده باشد.
|
build |
InvalidConfigurationForActionAndAlgorithm |
اگر عنصر <PrivateKey> با الگوریتمهای «خانواده HS» استفاده شود یا
عنصر <SecretKey> با الگوریتمهای «خانواده RSA» استفاده شود،
استقرار ناموفق خواهد بود.
|
build |
InvalidValueForElement |
اگر مقدار مشخصشده در عنصر <Algorithm> مقدار پشتیبانیشدهای نباشد،
استقرار ناموفق خواهد بود.
|
build |
MissingConfigurationElement |
اگر عنصر <PrivateKey> با الگوریتمهای خانواده RSA استفاده نشود یا عنصر <SecretKey> با الگوریتمهای خانواده HS استفاده نشود، این خطا رخ میدهد.
|
build |
InvalidKeyConfiguration |
اگر عنصر فرزند <Value> در عناصر <PrivateKey>
یا <SecretKey> تعریف نشده باشد، استقرار ناموفق خواهد بود.
|
build |
EmptyElementForKeyConfiguration |
اگر مشخصه ref عنصر فرزند <Value> عنصر <PrivateKey>
یا <SecretKey> خالی یا نامشخص باشد، استقرار ناموفق خواهد بود.
|
build |
InvalidVariableNameForSecret |
این خطا زمانی رخ میدهد که نام متغیر جاریسازی مشخصشده در مشخصه ref عنصر فرزند
<Value> از عناصر <PrivateKey>
یا <SecretKey> پیشوند خصوصی (private.) را نداشته باشد.
|
build |
InvalidSecretInConfig |
این خطا زمانی رخ میدهد که عنصر فرزند <Value> از عناصر <PrivateKey>
یا <SecretKey> پیشوند خصوصی (private.) را نداشته باشد.
|
build |
InvalidTimeFormat |
اگر مقدار مشخصشده در عنصر <NotBefore> از قالب پشتیبانیشدهای استفاده نکند،
استقرار ناموفق خواهد بود.
|
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>