JWT নীতি যাচাই করুন

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান
তথ্য

কি

ক্লায়েন্ট বা অন্যান্য সিস্টেম থেকে প্রাপ্ত একটি JWT-এ স্বাক্ষর যাচাই করে। এই নীতিটি প্রসঙ্গ ভেরিয়েবলগুলিতে দাবিগুলিকেও বের করে দেয় যাতে পরবর্তী নীতি বা শর্তগুলি অনুমোদন বা রাউটিং সিদ্ধান্ত নেওয়ার জন্য সেই মানগুলি পরীক্ষা করতে পারে। বিস্তারিত ভূমিকার জন্য JWS এবং JWT নীতি ওভারভিউ দেখুন।

যখন এই নীতিটি কার্যকর হয়, তখন এজ একটি JWT-এর স্বাক্ষর যাচাই করে এবং যাচাই করে যে JWT মেয়াদোত্তীর্ণ অনুযায়ী বৈধ এবং যদি তারা উপস্থিত থাকে তবে তার আগে নয়। নীতিটি ঐচ্ছিকভাবে JWT-তে নির্দিষ্ট দাবির মান যাচাই করতে পারে, যেমন বিষয়, ইস্যুকারী, দর্শক বা অতিরিক্ত দাবির মান।

যদি JWT যাচাই করা হয় এবং বৈধ হয়, তাহলে JWT-এর মধ্যে থাকা সমস্ত দাবি পরবর্তী নীতি বা শর্তাবলী দ্বারা ব্যবহারের জন্য প্রসঙ্গ ভেরিয়েবলে বের করা হয় এবং অনুরোধটি এগিয়ে যাওয়ার অনুমতি দেওয়া হয়। যদি JWT স্বাক্ষর যাচাই করা না যায় বা যদি JWT টাইমস্ট্যাম্পগুলির একটির কারণে অবৈধ হয়, তবে সমস্ত প্রক্রিয়াকরণ বন্ধ হয়ে যায় এবং প্রতিক্রিয়াতে একটি ত্রুটি ফিরে আসে।

একটি JWT-এর অংশগুলি এবং সেগুলি কীভাবে এনক্রিপ্ট করা এবং স্বাক্ষর করা হয় সে সম্পর্কে জানতে, RFC7519 পড়ুন।

ভিডিও

একটি JWT-তে স্বাক্ষর কীভাবে যাচাই করতে হয় তা জানতে একটি ছোট ভিডিও দেখুন।

নমুনা

HS256 অ্যালগরিদমের সাথে স্বাক্ষরিত একটি JWT যাচাই করুন

এই উদাহরণ নীতিটি একটি JWT যাচাই করে যা HS256 এনক্রিপশন অ্যালগরিদম, HMAC এর সাথে SHA-256 চেকসাম ব্যবহার করে স্বাক্ষরিত হয়েছিল। jwt নামক একটি ফর্ম প্যারামিটার ব্যবহার করে প্রক্সি অনুরোধে পাস করা হয়। কীটি private.secretkey নামের একটি ভেরিয়েবলের মধ্যে রয়েছে। নীতিতে অনুরোধ করার পদ্ধতি সহ একটি সম্পূর্ণ উদাহরণের জন্য উপরের ভিডিওটি দেখুন।

পলিসি কনফিগারেশনের মধ্যে রয়েছে JWT ডিকোড এবং মূল্যায়ন করার জন্য Edge-এর প্রয়োজনীয় তথ্য, যেমন JWT কোথায় পাওয়া যাবে (উৎস উপাদানে নির্দিষ্ট একটি ফ্লো ভেরিয়েবলে), প্রয়োজনীয় সাইনিং অ্যালগরিদম, গোপন কী কোথায় পাওয়া যাবে (একটি এজে সংরক্ষিত) ফ্লো ভেরিয়েবল, যা এজ কেভিএম থেকে পুনরুদ্ধার করা যেতে পারে, উদাহরণস্বরূপ), এবং প্রয়োজনীয় দাবি এবং তাদের মানগুলির একটি সেট।

<VerifyJWT name="JWT-Verify-HS256">
    <DisplayName>JWT Verify HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <Source>request.formparam.jwt</Source>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey encoding="base64">
        <Value ref="private.secretkey"/>
    </SecretKey>
    <Subject>monty-pythons-flying-circus</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>fans</Audience>
    <AdditionalClaims>
        <Claim name="show">And now for something completely different.</Claim>
    </AdditionalClaims>
</VerifyJWT>

নীতিটি প্রসঙ্গ ভেরিয়েবলে তার আউটপুট লেখে যাতে API প্রক্সিতে পরবর্তী নীতি বা শর্তগুলি সেই মানগুলি পরীক্ষা করতে পারে৷ এই নীতি দ্বারা সেট করা ভেরিয়েবলের তালিকার জন্য ফ্লো ভেরিয়েবল দেখুন।

RS256 অ্যালগরিদমের সাথে স্বাক্ষরিত একটি JWT যাচাই করুন

এই উদাহরণ নীতিটি একটি JWT যাচাই করে যা RS256 অ্যালগরিদমের সাথে স্বাক্ষরিত হয়েছিল। যাচাই করতে, আপনাকে সর্বজনীন কী প্রদান করতে হবে। jwt নামক একটি ফর্ম প্যারামিটার ব্যবহার করে প্রক্সি অনুরোধে পাস করা হয়। পাবলিক কীটি public.publickey নামের একটি ভেরিয়েবলের মধ্যে রয়েছে। নীতিতে অনুরোধ করার পদ্ধতি সহ একটি সম্পূর্ণ উদাহরণের জন্য উপরের ভিডিওটি দেখুন।

এই নমুনা নীতিতে প্রতিটি উপাদানের জন্য প্রয়োজনীয়তা এবং বিকল্পগুলির বিশদ বিবরণের জন্য এলিমেন্ট রেফারেন্স দেখুন।

<VerifyJWT name="JWT-Verify-RS256">
    <Algorithm>RS256</Algorithm>
    <Source>request.formparam.jwt</Source>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <PublicKey>
        <Value ref="public.publickey"/>
    </PublicKey>
    <Subject>apigee-seattle-hatrack-montage</Subject>
    <Issuer>urn://apigee-edge-JWT-policy-test</Issuer>
    <Audience>urn://c60511c0-12a2-473c-80fd-42528eb65a6a</Audience>
    <AdditionalClaims>
        <Claim name="show">And now for something completely different.</Claim>    
    </AdditionalClaims>
</VerifyJWT>

উপরের কনফিগারেশনের জন্য, এই হেডার সহ একটি JWT …

{
  "typ" : "JWT", 
  "alg" : "RS256"
}

এবং এই পেলোড…

{ 
  "sub" : "apigee-seattle-hatrack-montage",
  "iss" : "urn://apigee-edge-JWT-policy-test",
  "aud" : "urn://c60511c0-12a2-473c-80fd-42528eb65a6a",
  "show": "And now for something completely different."
}

… বৈধ বলে গণ্য হবে, যদি স্বাক্ষরটি প্রদত্ত পাবলিক কী দিয়ে যাচাই করা যায়।

একই শিরোনাম সহ একটি JWT কিন্তু এই পেলোড সহ ...

{ 
  "sub" : "monty-pythons-flying-circus",
  "iss" : "urn://apigee-edge-JWT-policy-test",
  "aud" : "urn://c60511c0-12a2-473c-80fd-42528eb65a6a",
  "show": "And now for something completely different."
}

… অবৈধ বলে নির্ধারণ করা হবে, এমনকি যদি স্বাক্ষরটি যাচাই করা যায়, কারণ JWT-তে অন্তর্ভুক্ত "সাব" দাবি নীতি কনফিগারেশনে নির্দিষ্ট করা "বিষয়" উপাদানের প্রয়োজনীয় মানের সাথে মেলে না।

নীতিটি প্রসঙ্গ ভেরিয়েবলে তার আউটপুট লেখে যাতে API প্রক্সিতে পরবর্তী নীতি বা শর্তগুলি সেই মানগুলি পরীক্ষা করতে পারে৷ এই নীতি দ্বারা সেট করা ভেরিয়েবলের তালিকার জন্য ফ্লো ভেরিয়েবল দেখুন।

মূল উপাদান সেট করা

JWT যাচাই করার জন্য ব্যবহৃত কী নির্দিষ্ট করতে আপনি যে উপাদানগুলি ব্যবহার করেন তা নির্বাচিত অ্যালগরিদমের উপর নির্ভর করে, যেমনটি নিম্নলিখিত টেবিলে দেখানো হয়েছে:

অ্যালগরিদম মূল উপাদান
এইচএস*
<SecretKey encoding="base16|hex|base64|base64url">
  <Value ref="private.secretkey"/>
</SecretKey>
RS*, ES*, PS*
<PublicKey>
  <Value ref="rsa_public_key_or_value"/>
</PublicKey>

বা:

<PublicKey>
  <Certificate ref="signed_cert_val_ref"/>
</PublicKey>

বা:

<PublicKey>
  <JWKS ref="jwks_val_or_ref"/>
</PublicKey>
* মূল প্রয়োজনীয়তা সম্পর্কে আরও জানতে, স্বাক্ষর এনক্রিপশন অ্যালগরিদম সম্পর্কে দেখুন।

উপাদান রেফারেন্স

নীতির রেফারেন্স JWT যাচাই নীতির উপাদান এবং বৈশিষ্ট্য বর্ণনা করে।

দ্রষ্টব্য: আপনি যে এনক্রিপশন অ্যালগরিদম ব্যবহার করেন তার উপর নির্ভর করে কনফিগারেশন কিছুটা আলাদা হবে। নির্দিষ্ট ব্যবহারের ক্ষেত্রে কনফিগারেশন প্রদর্শন করে এমন উদাহরণগুলির জন্য নমুনাগুলি পড়ুন।

উচ্চ-স্তরের উপাদানে প্রযোজ্য বৈশিষ্ট্য

<VerifyJWT name="JWT" continueOnError="false" enabled="true" async="false">

নিম্নলিখিত বৈশিষ্ট্যগুলি সমস্ত নীতির মূল উপাদানগুলির জন্য সাধারণ৷

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
নাম নীতির অভ্যন্তরীণ নাম। আপনি নামের মধ্যে যে অক্ষরগুলি ব্যবহার করতে পারেন তাতে সীমাবদ্ধ: A-Z0-9._\-$ % । যাইহোক, এজ ম্যানেজমেন্ট UI অতিরিক্ত বিধিনিষেধ প্রয়োগ করে, যেমন স্বয়ংক্রিয়ভাবে অক্ষরগুলিকে অপসারণ করা যা আলফানিউমেরিক নয়।

ঐচ্ছিকভাবে, <displayname></displayname> এলিমেন্টটি ব্যবহার করুন ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষার নামের সাথে লেবেল করতে।

N/A প্রয়োজন
continueOnError একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে false সেট করুন৷ এটি বেশিরভাগ নীতির জন্য প্রত্যাশিত আচরণ।

একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে true সেট করুন৷

মিথ্যা ঐচ্ছিক
সক্রিয় নীতি প্রয়োগ করতে true সেট করুন৷

নীতি "বন্ধ" করতে false সেট করুন৷ নীতিটি প্রবাহের সাথে সংযুক্ত থাকলেও তা কার্যকর করা হবে না।

সত্য ঐচ্ছিক
অ্যাসিঙ্ক এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷ মিথ্যা অবচয়

<DisplayName>

<DisplayName>Policy Display Name</DisplayName>

ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে নামের বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।

ডিফল্ট আপনি এই উপাদানটি বাদ দিলে, নীতির নামের বৈশিষ্ট্যের মান ব্যবহার করা হবে।
উপস্থিতি ঐচ্ছিক
টাইপ স্ট্রিং

<অ্যালগরিদম>

<Algorithm>HS256</Algorithm>

টোকেন সাইন ইন করতে এনক্রিপশন অ্যালগরিদম নির্দিষ্ট করে। RS*/PS*/ES* অ্যালগরিদমগুলি একটি পাবলিক/সিক্রেট কী জোড়া নিযুক্ত করে, যখন HS* অ্যালগরিদমগুলি একটি শেয়ার্ড সিক্রেট নিয়োগ করে৷ স্বাক্ষর এনক্রিপশন অ্যালগরিদম সম্পর্কে আরও দেখুন।

আপনি কমা দ্বারা পৃথক করা একাধিক মান নির্দিষ্ট করতে পারেন। যেমন "HS256, HS512" বা "RS256, PS256"। যাইহোক, আপনি HS* অ্যালগরিদমগুলিকে অন্যদের সাথে বা ES* অ্যালগরিদমগুলিকে অন্যদের সাথে একত্রিত করতে পারবেন না কারণ তাদের একটি নির্দিষ্ট কী ধরণের প্রয়োজন৷ আপনি RS* এবং PS* অ্যালগরিদম একত্রিত করতে পারেন।

ডিফল্ট N/A
উপস্থিতি প্রয়োজন
টাইপ কমা দ্বারা পৃথক করা মানগুলির স্ট্রিং৷
বৈধ মান HS256, HS384, HS512, RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512

<শ্রোতা>

<Audience>audience-here</Audience>

or:

<Audience ref='variable-name-here'/>

নীতিটি যাচাই করে যে JWT-এ শ্রোতাদের দাবি কনফিগারেশনে উল্লিখিত মানের সাথে মেলে। কোন মিল না থাকলে, নীতি একটি ত্রুটি নিক্ষেপ করে। এই দাবিটি প্রাপকদের চিহ্নিত করে যাদের জন্য JWT উদ্দেশ্যে করা হয়েছে। এটি RFC7519- এ উল্লেখিত নিবন্ধিত দাবিগুলির মধ্যে একটি।

ডিফল্ট N/A
উপস্থিতি ঐচ্ছিক
টাইপ স্ট্রিং
বৈধ মান একটি ফ্লো ভেরিয়েবল বা স্ট্রিং যা দর্শকদের সনাক্ত করে।

<অতিরিক্ত দাবি/দাবি>

<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 পেলোডে নির্দিষ্ট অতিরিক্ত দাবি(গুলি) রয়েছে এবং দাবি করা মানগুলি মিলে যায়৷

একটি অতিরিক্ত দাবি এমন একটি নাম ব্যবহার করে যা স্ট্যান্ডার্ড, নিবন্ধিত JWT দাবির নামগুলির মধ্যে একটি নয়। একটি অতিরিক্ত দাবির মান একটি স্ট্রিং, একটি সংখ্যা, একটি বুলিয়ান, একটি মানচিত্র বা একটি অ্যারে হতে পারে। একটি মানচিত্র হল নাম/মান জোড়ার একটি সেট। এই ধরনের যেকোনো একটি দাবির মান নীতি কনফিগারেশনে স্পষ্টভাবে বা পরোক্ষভাবে একটি ফ্লো ভেরিয়েবলের রেফারেন্সের মাধ্যমে নির্দিষ্ট করা যেতে পারে।

ডিফল্ট N/A
উপস্থিতি ঐচ্ছিক
টাইপ স্ট্রিং, সংখ্যা, বুলিয়ান বা মানচিত্র
অ্যারে মানটি ধরনগুলির একটি অ্যারে কিনা তা নির্দেশ করতে সত্যে সেট করুন। ডিফল্ট: মিথ্যা
বৈধ মান আপনি একটি অতিরিক্ত দাবির জন্য ব্যবহার করতে চান যে কোনো মান.

<Claim> উপাদানটি এই বৈশিষ্ট্যগুলি গ্রহণ করে:

  • নাম - (প্রয়োজনীয়) দাবির নাম।
  • ref - (ঐচ্ছিক) একটি ফ্লো ভেরিয়েবলের নাম। উপস্থিত থাকলে, নীতি দাবি হিসাবে এই ভেরিয়েবলের মান ব্যবহার করবে। যদি একটি রেফ অ্যাট্রিবিউট এবং একটি স্পষ্ট দাবি মান উভয়ই নির্দিষ্ট করা থাকে, তাহলে স্পষ্ট মানটি ডিফল্ট, এবং যদি উল্লেখিত ফ্লো ভেরিয়েবল অমীমাংসিত হয় তাহলে ব্যবহার করা হয়।
  • প্রকার - (ঐচ্ছিক) এর মধ্যে একটি: স্ট্রিং (ডিফল্ট), সংখ্যা, বুলিয়ান বা মানচিত্র
  • অ্যারে - (ঐচ্ছিক) মানটি ধরনগুলির একটি অ্যারে কিনা তা নির্দেশ করতে সত্যে সেট করুন। ডিফল্ট: মিথ্যা।

আপনি যখন <Claim> উপাদানটি অন্তর্ভুক্ত করেন, আপনি নীতি কনফিগার করার সময় দাবির নামগুলি স্ট্যাটিকভাবে সেট করা হয়। বিকল্পভাবে, আপনি দাবির নাম নির্দিষ্ট করতে একটি JSON অবজেক্ট পাস করতে পারেন। কারণ JSON অবজেক্ট একটি পরিবর্তনশীল হিসাবে পাস করা হয়েছে, দাবির নাম রানটাইমে নির্ধারিত হয়।

যেমন:

<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 }
  }
}

<অতিরিক্ত শিরোনাম/দাবি>

<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 হেডারে নির্দিষ্ট অতিরিক্ত দাবির নাম/মূল্যের জোড়া(গুলি) রয়েছে এবং দাবি করা মানগুলি মিলে যায়।

একটি অতিরিক্ত দাবি এমন একটি নাম ব্যবহার করে যা স্ট্যান্ডার্ড, নিবন্ধিত JWT দাবির নামগুলির মধ্যে একটি নয়। একটি অতিরিক্ত দাবির মান একটি স্ট্রিং, একটি সংখ্যা, একটি বুলিয়ান, একটি মানচিত্র বা একটি অ্যারে হতে পারে। একটি মানচিত্র হল নাম/মান জোড়ার একটি সেট। এই ধরনের যেকোনো একটি দাবির মান নীতি কনফিগারেশনে স্পষ্টভাবে বা পরোক্ষভাবে একটি ফ্লো ভেরিয়েবলের রেফারেন্সের মাধ্যমে নির্দিষ্ট করা যেতে পারে।

ডিফল্ট N/A
উপস্থিতি ঐচ্ছিক
টাইপ

স্ট্রিং (ডিফল্ট), সংখ্যা, বুলিয়ান বা মানচিত্র।

কোনো প্রকার নির্দিষ্ট না থাকলে টাইপটি স্ট্রিং-এ ডিফল্ট হয়।

অ্যারে মানটি ধরনগুলির একটি অ্যারে কিনা তা নির্দেশ করতে সত্যে সেট করুন। ডিফল্ট: মিথ্যা
বৈধ মান আপনি একটি অতিরিক্ত দাবির জন্য ব্যবহার করতে চান যে কোনো মান.

<Claim> উপাদানটি এই বৈশিষ্ট্যগুলি গ্রহণ করে:

  • নাম - (প্রয়োজনীয়) দাবির নাম।
  • ref - (ঐচ্ছিক) একটি ফ্লো ভেরিয়েবলের নাম। উপস্থিত থাকলে, নীতি দাবি হিসাবে এই ভেরিয়েবলের মান ব্যবহার করবে। যদি একটি রেফ অ্যাট্রিবিউট এবং একটি স্পষ্ট দাবি মান উভয়ই নির্দিষ্ট করা থাকে, তাহলে স্পষ্ট মানটি ডিফল্ট, এবং যদি উল্লেখিত ফ্লো ভেরিয়েবল অমীমাংসিত হয় তাহলে ব্যবহার করা হয়।
  • প্রকার - (ঐচ্ছিক) এর মধ্যে একটি: স্ট্রিং (ডিফল্ট), সংখ্যা, বুলিয়ান বা মানচিত্র
  • অ্যারে - (ঐচ্ছিক) মানটি ধরনগুলির একটি অ্যারে কিনা তা নির্দেশ করতে সত্যে সেট করুন। ডিফল্ট: মিথ্যা।

<কাস্টম দাবি>

দ্রষ্টব্য: বর্তমানে, আপনি যখন UI এর মাধ্যমে একটি নতুন GenerateJWT নীতি যোগ করেন তখন একটি CustomClaims উপাদান ঢোকানো হয়। এই উপাদানটি কার্যকরী নয় এবং উপেক্ষা করা হয়। পরিবর্তে ব্যবহার করার জন্য সঠিক উপাদান হল <অতিরিক্ত দাবি >। পরবর্তী সময়ে সঠিক উপাদান সন্নিবেশ করার জন্য UI আপডেট করা হবে।

<আইডি>

<Id>explicit-jti-value-here</Id>
 -or-
<Id ref='variable-name-here'/>
 -or-
<Id/>

JWT-এর নির্দিষ্ট jti দাবি আছে কিনা তা যাচাই করে। যখন টেক্সট মান এবং রেফ অ্যাট্রিবিউট উভয়ই খালি থাকে, তখন নীতিটি একটি এলোমেলো UUID ধারণকারী একটি jti তৈরি করবে। JWT আইডি (jti) দাবি JWT-এর জন্য একটি অনন্য শনাক্তকারী। jti সম্পর্কে আরও তথ্যের জন্য, RFC7519 দেখুন।

ডিফল্ট N/A
উপস্থিতি ঐচ্ছিক
টাইপ স্ট্রিং, বা রেফারেন্স।
বৈধ মান হয় একটি স্ট্রিং বা ID ধারণকারী একটি ফ্লো ভেরিয়েবলের নাম।

<CriticalHeaders> উপেক্ষা করুন

<IgnoreCriticalHeaders>true|false</IgnoreCriticalHeaders>

JWT-এর ক্রিট হেডারে তালিকাভুক্ত যেকোন হেডার <KnownHeaders> এলিমেন্টে তালিকাভুক্ত না থাকলে আপনি যদি নীতিটি ত্রুটি ছুঁড়তে চান তাহলে মিথ্যাতে সেট করুন। VerifyJWT পলিসি ক্রিট হেডার উপেক্ষা করার জন্য সত্যে সেট করুন।

এই উপাদানটিকে সত্য হিসাবে সেট করার একটি কারণ হল আপনি যদি একটি পরীক্ষার পরিবেশে থাকেন এবং একটি অনুপস্থিত শিরোনামে ব্যর্থতার জন্য এখনও প্রস্তুত না হন।

ডিফল্ট মিথ্যা
উপস্থিতি ঐচ্ছিক
টাইপ বুলিয়ান
বৈধ মান সত্য বা মিথ্যা

<IgnoreIssuedAt>

<IgnoreIssuedAt>true|false</IgnoreIssuedAt>

মিথ্যা (ডিফল্ট) তে সেট করুন যদি আপনি চান যে নীতিটি একটি ত্রুটি ছুঁড়তে পারে যখন একটি JWT-তে একটি iat (ইস্যু করা হয়েছে) দাবি থাকে যা ভবিষ্যতে একটি সময় নির্দিষ্ট করে। যাচাইকরণের সময় iat উপেক্ষা করার জন্য নীতিটি সত্যে সেট করুন৷

ডিফল্ট মিথ্যা
উপস্থিতি ঐচ্ছিক
টাইপ বুলিয়ান
বৈধ মান সত্য বা মিথ্যা

<অমীমাংসিত ভেরিয়েবলগুলিকে উপেক্ষা করুন>

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

পলিসিতে উল্লেখ করা যেকোন রেফারেন্স ভেরিয়েবল অমীমাংসিত হলে আপনি যদি নীতিটি একটি ত্রুটি ছুঁড়তে চান তাহলে মিথ্যাতে সেট করুন৷ কোনো অমীমাংসিত ভেরিয়েবলকে খালি স্ট্রিং (নাল) হিসাবে বিবেচনা করার জন্য সত্যে সেট করুন।

ডিফল্ট মিথ্যা
উপস্থিতি ঐচ্ছিক
টাইপ বুলিয়ান
বৈধ মান সত্য বা মিথ্যা

<ইস্যুকারী>

<Issuer ref='variable-name-here'/>
<Issuer>issuer-string-here</Issuer>

নীতিটি যাচাই করে যে JWT-এর ইস্যুকারী কনফিগারেশন এলিমেন্টে উল্লেখিত স্ট্রিংয়ের সাথে মেলে। একটি দাবি যা JWT প্রদানকারীকে চিহ্নিত করে। এটি RFC7519- এ উল্লিখিত দাবিগুলির একটি নিবন্ধিত সেট।

ডিফল্ট N/A
উপস্থিতি ঐচ্ছিক
টাইপ স্ট্রিং, বা রেফারেন্স
বৈধ মান যে কোন

<জানা শিরোনাম>

<KnownHeaders>a,b,c</KnownHeaders>

or:

<KnownHeaders ref=variable_containing_headers/>

জেনারেটজেডব্লিউটি নীতি একটি জেডব্লিউটি-তে ক্রিট শিরোলেখ তৈরি করতে <CriticalHeaders> উপাদান ব্যবহার করে। যেমন:

{
  “typ: “...”,
  “alg” : “...”,
  “crit” : [ “a”, “b”, “c” ],
}

VerifyJWT নীতি JWT-তে ক্রিট হেডার পরীক্ষা করে, যদি এটি বিদ্যমান থাকে, এবং তালিকাভুক্ত প্রতিটি হেডারের জন্য এটি চেক করে যে <KnownHeaders> উপাদানটিও সেই শিরোনামটি তালিকাভুক্ত করে। <KnownHeaders> উপাদানটিতে crit- এ তালিকাভুক্ত আইটেমগুলির একটি সুপারসেট থাকতে পারে। ক্রিটে তালিকাভুক্ত সমস্ত শিরোনাম <KnownHeaders> এলিমেন্টে তালিকাভুক্ত করা প্রয়োজন। যে কোনো শিরোনাম যা নীতির সমালোচনায় পাওয়া যায় যেটি <KnownHeaders> -এও তালিকাভুক্ত নয়, তার ফলে VerifyJWT নীতি ব্যর্থ হয়।

আপনি ঐচ্ছিকভাবে <IgnoreCriticalHeaders> উপাদানটিকে true সেট করে ক্রিট হেডার উপেক্ষা করার জন্য VerifyJWT নীতি কনফিগার করতে পারেন।

ডিফল্ট N/A
উপস্থিতি ঐচ্ছিক
টাইপ স্ট্রিংগুলির কমা দ্বারা বিভক্ত অ্যারে
বৈধ মান হয় একটি অ্যারে বা অ্যারে ধারণকারী একটি ভেরিয়েবলের নাম।

<পাবলিককী/শংসাপত্র>

<PublicKey>
   <Certificate ref="signed_public.cert"/>
</PublicKey>
-or-
<PublicKey>
    <Certificate>
    -----BEGIN CERTIFICATE-----
    cert data
    -----END CERTIFICATE-----
    </Certificate>
</PublicKey>

JWT-তে স্বাক্ষর যাচাই করতে ব্যবহৃত স্বাক্ষরিত শংসাপত্রটি নির্দিষ্ট করে। একটি ফ্লো ভেরিয়েবলে স্বাক্ষরিত শংসাপত্র পাস করতে ref বৈশিষ্ট্য ব্যবহার করুন, অথবা সরাসরি PEM-এনকোডেড শংসাপত্র নির্দিষ্ট করুন৷ শুধুমাত্র তখনই ব্যবহার করুন যখন অ্যালগরিদমটি RS256/RS384/RS512, PS256/PS384/PS512, অথবা ES256/ES384/ES512-এর মধ্যে একটি হয়৷

ডিফল্ট N/A
উপস্থিতি একটি RSA অ্যালগরিদমের সাথে স্বাক্ষরিত একটি JWT যাচাই করতে, আপনাকে হয় সার্টিফিকেট, JWKS বা মান উপাদান ব্যবহার করতে হবে।
টাইপ স্ট্রিং
বৈধ মান একটি প্রবাহ পরিবর্তনশীল বা স্ট্রিং।

<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-এর মধ্যে একটি হয়৷

যদি ইনবাউন্ড JWT একটি কী আইডি বহন করে যা JWKS-এর সেটে উপস্থিত থাকে, তাহলে নীতি JWT স্বাক্ষর যাচাই করতে সঠিক পাবলিক কী ব্যবহার করবে। এই বৈশিষ্ট্য সম্পর্কে বিস্তারিত জানার জন্য, একটি JWT যাচাই করতে একটি JSON ওয়েব কী সেট (JWKS) ব্যবহার করা দেখুন।

যদি আপনি একটি সর্বজনীন URL থেকে মান আনেন, এজ 300 সেকেন্ডের জন্য JWKS কে ক্যাশ করে। ক্যাশের মেয়াদ শেষ হয়ে গেলে, এজ আবার JWKS নিয়ে আসে।

ডিফল্ট N/A
উপস্থিতি একটি RSA অ্যালগরিদম ব্যবহার করে একটি JWT যাচাই করতে, আপনাকে হয় সার্টিফিকেট, JWKS বা মান উপাদান ব্যবহার করতে হবে।
টাইপ স্ট্রিং
বৈধ মান একটি ফ্লো ভেরিয়েবল, স্ট্রিং মান, বা URL।

<PublicKey/Value>

<PublicKey>
   <Value ref="public.publickeyorcert"/>
</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>

JWT-তে স্বাক্ষর যাচাই করতে ব্যবহৃত পাবলিক কী বা সর্বজনীন শংসাপত্র নির্দিষ্ট করে। একটি ফ্লো ভেরিয়েবলে কী/সার্ট পাস করতে রেফ অ্যাট্রিবিউট ব্যবহার করুন, অথবা সরাসরি PEM-এনকোডেড কী নির্দিষ্ট করুন। শুধুমাত্র তখনই ব্যবহার করুন যখন অ্যালগরিদমটি RS256/RS384/RS512, PS256/PS384/PS512, অথবা ES256/ES384/ES512-এর মধ্যে একটি হয়৷

ডিফল্ট N/A
উপস্থিতি একটি RSA অ্যালগরিদমের সাথে স্বাক্ষরিত একটি JWT যাচাই করতে, আপনাকে হয় সার্টিফিকেট, JWKS বা মান উপাদান ব্যবহার করতে হবে।
টাইপ স্ট্রিং
বৈধ মান একটি প্রবাহ পরিবর্তনশীল বা স্ট্রিং।

<গোপন কী/মান>

<SecretKey encoding="base16|hex|base64|base64url">
  <Value ref="private.your-variable-name"/>
</SecretKey>

একটি HMAC অ্যালগরিদম দিয়ে টোকেন যাচাই বা স্বাক্ষর করতে ব্যবহৃত গোপন কী প্রদান করে। অ্যালগরিদম HS256, HS384, HS512-এর মধ্যে একটি হলেই ব্যবহার করুন। .

ডিফল্ট N/A
উপস্থিতি HMAC অ্যালগরিদমের জন্য প্রয়োজনীয়।
টাইপ স্ট্রিং
বৈধ মান

encoding জন্য, বৈধ মানগুলি হল hex , base16 , base64 , বা base64url ৷ এনকোডিং মান hex এবং base16 সমার্থক শব্দ।

একটি ফ্লো ভেরিয়েবলে কী পাস করতে রেফ অ্যাট্রিবিউট ব্যবহার করুন।

দ্রষ্টব্য: একটি ফ্লো ভেরিয়েবল হলে, এটি অবশ্যই "ব্যক্তিগত" উপসর্গ থাকতে হবে। উদাহরণস্বরূপ, private.mysecret

<উৎস>

<Source>jwt-variable</Source>

যদি উপস্থিত থাকে, তাহলে ফ্লো ভেরিয়েবল নির্দিষ্ট করে যেখানে পলিসি যাচাই করার জন্য JWT খুঁজে পাওয়ার আশা করে।

ডিফল্ট request.header.authorization (ডিফল্ট সম্পর্কে গুরুত্বপূর্ণ তথ্যের জন্য উপরের নোটটি দেখুন)।
উপস্থিতি ঐচ্ছিক
টাইপ স্ট্রিং
বৈধ মান একটি এজ ফ্লো পরিবর্তনশীল নাম।

<বিষয়>

<Subject>subject-string-here</Subject>

নীতিটি যাচাই করে যে JWT-এর বিষয় পলিসি কনফিগারেশনে উল্লেখিত স্ট্রিংয়ের সাথে মেলে। এই দাবি JWT এর বিষয় সম্পর্কে একটি বিবৃতি সনাক্ত করে বা করে। এটি RFC7519- এ উল্লিখিত দাবিগুলির একটি আদর্শ সেট।

ডিফল্ট N/A
উপস্থিতি ঐচ্ছিক
টাইপ স্ট্রিং
বৈধ মান যে কোনো মান অনন্যভাবে একটি বিষয় চিহ্নিত করে।

<সময় ভাতা>

<TimeAllowance>120s</TimeAllowance>

সময়ের জন্য "গ্রেস পিরিয়ড"। উদাহরণ স্বরূপ, যদি সময় ভাতা 60 এর জন্য কনফিগার করা হয়, তাহলে মেয়াদ শেষ হয়ে যাওয়া JWTকে বৈধ বলে গণ্য করা হবে, দাবিকৃত মেয়াদ শেষ হওয়ার পর 60 এর জন্য। পূর্ববর্তী সময়ের একইভাবে মূল্যায়ন করা হবে। ডিফল্ট 0 সেকেন্ড (কোন গ্রেস পিরিয়ড নেই)।

ডিফল্ট 0 সেকেন্ড (কোন গ্রেস পিরিয়ড নেই)
উপস্থিতি ঐচ্ছিক
টাইপ স্ট্রিং
বৈধ মান একটি মান বা মান ধারণকারী একটি ফ্লো ভেরিয়েবলের একটি রেফারেন্স। সময় স্প্যান নিম্নলিখিত হিসাবে নির্দিষ্ট করা যেতে পারে:
  • s = সেকেন্ড
  • m = মিনিট
  • h = ঘন্টা
  • d = দিন

ফ্লো ভেরিয়েবল

সাফল্যের পরে, JWT যাচাই করুন এবং 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 জেডব্লিউটি দর্শকদের দাবি। এই মান একটি স্ট্রিং, বা স্ট্রিং একটি অ্যারে হতে পারে.
claim.expiry মেয়াদ শেষ হওয়ার তারিখ/সময়, যুগ থেকে মিলিসেকেন্ডে প্রকাশ করা হয়।
claim.issuedat টোকেন ইস্যু করার তারিখ, যুগ থেকে মিলিসেকেন্ডে প্রকাশ করা হয়েছে।
claim.issuer JWT ইস্যুকারী দাবি.
claim.notbefore যদি JWT একটি nbf দাবি অন্তর্ভুক্ত করে, তাহলে এই ভেরিয়েবলের মান থাকবে, যুগ থেকে মিলিসেকেন্ডে প্রকাশ করা হবে।
claim.subject JWT বিষয় দাবি.
claim. name পেলোডে নামযুক্ত দাবির মান (মান বা অতিরিক্ত)। এর মধ্যে একটি পেলোডের প্রতিটি দাবির জন্য সেট করা হবে।
decoded.claim. name পেলোডে নামযুক্ত দাবির (স্ট্যান্ডার্ড বা অতিরিক্ত) JSON-পার্সেবল মান। পেলোডের প্রতিটি দাবির জন্য একটি পরিবর্তনশীল সেট করা আছে। উদাহরণ স্বরূপ, আপনি জেডব্লিউটি-এর জারি-সময় পুনরুদ্ধার করতে decoded.claim.iat ব্যবহার করতে পারেন, যুগের পর থেকে কয়েক সেকেন্ডে প্রকাশ করা হয়েছে। যখন আপনি 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 তৈরি করার সময় যোগ করা হয়। একটি JWT যাচাই করার জন্য JWT নীতি ওভারভিউতে "একটি JSON ওয়েব কী সেট (JWKS) ব্যবহার করা" দেখুন। আরও জানতে (কী আইডি) হেডার প্যারামিটার দেখুন।
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 এর ক্ষেত্রে, এই ভেরিয়েবল সেট করা হয় না।

ত্রুটি উল্লেখ

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Occurs when
steps.jwt.AlgorithmInTokenNotPresentInConfiguration 401 Occurs when the verification policy has multiple algorithms.
steps.jwt.AlgorithmMismatch 401 The algorithm specified in the Generate policy did not match the one expected in the Verify policy. The algorithms specified must match.
steps.jwt.FailedToDecode 401 The policy was unable to decode the JWT. The JWT is possibly corrupted.
steps.jwt.GenerationFailed 401 The policy was unable to generate the JWT.
steps.jwt.InsufficientKeyLength 401 For a key less than 32 bytes for the HS256 algorithm, less than 48 bytes for the HS386 algortithm, and less than 64 bytes for the HS512 algorithm.
steps.jwt.InvalidClaim 401 For a missing claim or claim mismatch, or a missing header or header mismatch.
steps.jwt.InvalidCurve 401 The curve specified by the key is not valid for the Elliptic Curve algorithm.
steps.jwt.InvalidJsonFormat 401 Invalid JSON found in the header or payload.
steps.jwt.InvalidToken 401 This error occurs when the JWT signature verification fails.
steps.jwt.JwtAudienceMismatch 401 The audience claim failed on token verification.
steps.jwt.JwtIssuerMismatch 401 The issuer claim failed on token verification.
steps.jwt.JwtSubjectMismatch 401 The subject claim failed on token verification.
steps.jwt.KeyIdMissing 401 The Verify policy uses a JWKS as a source for public keys, but the signed JWT does not include a kid property in the header.
steps.jwt.KeyParsingFailed 401 The public key could not be parsed from the given key information.
steps.jwt.NoAlgorithmFoundInHeader 401 Occurs when the JWT contains no algorithm header.
steps.jwt.NoMatchingPublicKey 401 The Verify policy uses a JWKS as a source for public keys, but the kid in the signed JWT is not listed in the JWKS.
steps.jwt.SigningFailed 401 In GenerateJWT, for a key less than the minimum size for the HS384 or HS512 algorithms
steps.jwt.TokenExpired 401 The policy attempts to verify an expired token.
steps.jwt.TokenNotYetValid 401 The token is not yet valid.
steps.jwt.UnhandledCriticalHeader 401 A header found by the Verify JWT policy in the crit header is not listed in KnownHeaders.
steps.jwt.UnknownException 401 An unknown exception occurred.
steps.jwt.WrongKeyType 401 Wrong type of key specified. For example, if you specify an RSA key for an Elliptic Curve algorithm, or a curve key for an RSA algorithm.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
InvalidNameForAdditionalClaim The deployment will fail if the claim used in the child element <Claim> of the <AdditionalClaims> element is one of the following registered names: kid, iss, sub, aud, iat, exp, nbf, or jti.
InvalidTypeForAdditionalClaim If the claim used in the child element <Claim> of the <AdditionalClaims> element is not of type string, number, boolean, or map, the deployment will fail.
MissingNameForAdditionalClaim If the name of the claim is not specified in the child element <Claim> of the <AdditionalClaims> element, the deployment will fail.
InvalidNameForAdditionalHeader This error ccurs when the name of the claim used in the child element <Claim> of the <AdditionalClaims> element is either alg or typ.
InvalidTypeForAdditionalHeader If the type of claim used in the child element <Claim> of the <AdditionalClaims> element is not of type string, number, boolean, or map, the deployment will fail.
InvalidValueOfArrayAttribute This error occurs when the value of the array attribute in the child element <Claim> of the <AdditionalClaims> element is not set to true or false.
InvalidValueForElement If the value specified in the <Algorithm> element is not a supported value, the deployment will fail.
MissingConfigurationElement This error will occur if the <PrivateKey> element is not used with RSA family algorithms or the <SecretKey> element is not used with HS Family algorithms.
InvalidKeyConfiguration If the child element <Value> is not defined in the <PrivateKey> or <SecretKey> elements, the deployment will fail.
EmptyElementForKeyConfiguration If the ref attribute of the child element <Value> of the <PrivateKey> or <SecretKey> elements is empty or unspecified, the deployment will fail.
InvalidConfigurationForVerify This error occurs if the <Id> element is defined within the <SecretKey> element.
InvalidEmptyElement This error occurs if the <Source> element of the Verify JWT policy is empty. If present, it must be defined with an Edge flow variable name.
InvalidPublicKeyValue If the value used in the child element <JWKS> of the <PublicKey> element does not use a valid format as specified in RFC 7517, the deployment will fail.
InvalidConfigurationForActionAndAlgorithm If the <PrivateKey> element is used with HS Family algorithms or the <SecretKey> element is used with RSA Family algorithms, the deployment will fail.

ফল্ট ভেরিয়েবল

রানটাইম ত্রুটি ঘটলে এই ভেরিয়েবলগুলি সেট করা হয়। আরও তথ্যের জন্য, নীতি ত্রুটি সম্পর্কে আপনার যা জানা দরকার তা দেখুন।

ভেরিয়েবল যেখানে উদাহরণ
fault.name=" fault_name " fault_name হল ফল্টের নাম, যা উপরে রানটাইম ত্রুটির সারণীতে তালিকাভুক্ত করা হয়েছে। ফল্ট নামটি ফল্ট কোডের শেষ অংশ। fault.name Matches "TokenExpired"
JWT.failed সমস্ত JWT নীতি ব্যর্থতার ক্ষেত্রে একই পরিবর্তনশীল সেট করে। JWT.failed = true

উদাহরণ ত্রুটি প্রতিক্রিয়া

JWT পলিসি ফল্ট কোড

ত্রুটি পরিচালনার জন্য, সর্বোত্তম অনুশীলন হল ত্রুটি প্রতিক্রিয়ার 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>