VerifyJWT নীতি

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

কী

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

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

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

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

ভিডিও

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

নমুনা

HS256 অ্যালগরিদম দিয়ে সই করা JWT যাচাই করা

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

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

<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 যাচাই করা

এই উদাহরণ নীতি RS256 অ্যালগরিদম দিয়ে সাইন করা JWT যাচাই করে। যাচাই করতে, আপনাকে পাবলিক কী দিতে হবে। JWT, 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-তে অন্তর্ভুক্ত "sub" দাবিটি নীতি কনফিগারেশনে নির্দিষ্ট করা "Subject" এলিমেন্টের প্রয়োজনীয় ভ্যালুর সাথে ম্যাচ করে না।

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

মূল এলিমেন্ট সেট করা

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

অ্যালগরিদম গুরুত্বপূর্ণ এলিমেন্ট
HS*
<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>
*কী সংক্রান্ত প্রয়োজনীয়তা সম্পর্কে আরও জানতে, সিগনেচার এনক্রিপশন অ্যালগরিদম সম্পর্কে দেখুন।

এলিমেন্ট রেফারেন্স

নীতি সংক্রান্ত রেফারেন্সে Verify JWT নীতির এলিমেন্ট ও অ্যাট্রিবিউট বর্ণনা করা আছে।

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

টপ-লেভেল এলিমেন্টে প্রযোজ্য অ্যাট্রিবিউট

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

সব নীতি সংক্রান্ত পেরেন্ট এলিমেন্টের ক্ষেত্রে নিম্নলিখিত অ্যাট্রিবিউট সাধারণ।

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

বিকল্প হিসেবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে অন্য, স্বাভাবিক-ভাষার নাম দিয়ে নীতি লেবেল করতে <displayname></displayname> এলিমেন্ট ব্যবহার করুন।

প্রযোজ্য নয় প্রয়োজনীয়
continueOnError নীতি কাজ না করলে সমস্যা দেখানোর জন্য false-এ সেট করা হয়। বেশিরভাগ নীতির ক্ষেত্রে এটি প্রত্যাশিত আচরণ।

true-এ সেট করা থাকলে, নীতি কাজ না করলেও ফ্লো এক্সিকিউশন চলতে থাকে।

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

নীতি "বন্ধ করতে" false হিসেবে সেট করুন। কোনও ফ্লোতে এটি অ্যাটাচ করা থাকলেও, নীতিটি প্রয়োগ করা হবে না ।

সত্য ঐচ্ছিক
async এই অ্যাট্রিবিউট আর কাজ করে না। মিথ্যা বন্ধ করে দেওয়া হয়েছে

<DisplayName>

<DisplayName>Policy Display Name</DisplayName>

ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিকে অন্য, স্বাভাবিক-ভাষার নাম দিয়ে লেবেল করার জন্য নাম অ্যাট্রিবিউটের সাথে এটি ব্যবহার করুন ।

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

<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

<Audience>

<Audience>audience-here</Audience>

or:

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

নীতিটি যাচাই করে যে JWT-তে থাকা অডিয়েন্স দাবিটি কনফিগারেশনে উল্লেখ করা ভ্যালুর সাথে মিলছে কিনা। কোনও ম্যাচ না থাকলে, নীতিটি একটি সমস্যা দেখায়। এই দাবিটি সেইসব প্রাপকদের শনাক্ত করে যাদের জন্য 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 পেলোডে নির্দিষ্ট অতিরিক্ত দাবি আছে কিনা এবং দাবি করা ভ্যালু ম্যাচ করছে কিনা তা যাচাই করে।

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

ডিফল্ট প্রযোজ্য নয়
উপস্থিতি ঐচ্ছিক
টাইপ করুন স্ট্রিং, সংখ্যা, বুলিয়ান বা ম্যাপ
অ্যারে ভ্যালু যদি কোনও ধরনের অ্যারে হয়, তাহলে true হিসেবে সেট করুন। ডিফল্ট: false
সঠিক ভ্যালু অতিরিক্ত দাবি জানানোর জন্য আপনি যে ভ্যালু ব্যবহার করতে চান।

<Claim> এলিমেন্ট এই অ্যাট্রিবিউটগুলি নেয়:

  • name - (আবশ্যক) দাবির নাম।
  • ref - (ঐচ্ছিক) ফ্লো ভেরিয়েবলের নাম। উপস্থিত থাকলে, নীতিটি এই ভেরিয়েবলের ভ্যালুকে দাবি হিসেবে ব্যবহার করবে। ref অ্যাট্রিবিউট ও স্পষ্ট দাবি ভ্যালু, দু'টিই উল্লেখ করা থাকলে, স্পষ্ট ভ্যালু ডিফল্ট হিসেবে ধরে নেওয়া হয় এবং রেফারেন্স করা ফ্লো ভেরিয়েবল সমাধান না করা গেলে এটি ব্যবহার করা হয়।
  • type - (ঐচ্ছিক) এগুলির মধ্যে একটি: string (ডিফল্ট), number, boolean বা map
  • array - (ঐচ্ছিক) ভ্যালু যদি কোনও ধরনের অ্যারে হয়, তাহলে তা বোঝাতে true হিসেবে সেট করুন। ডিফল্ট: false.

আপনি <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>

<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 দাবির নামের মধ্যে পড়ে না। অতিরিক্ত দাবির ভ্যালু স্ট্রিং, সংখ্যা, বুলিয়ান, ম্যাপ বা অ্যারে হতে পারে। ম্যাপ হল নাম/ভ্যালু পেয়ারের একটি সেট। এইসব ধরনের কোনও দাবির ভ্যালু নীতি কনফিগারেশনে স্পষ্টভাবে বা ফ্লো ভেরিয়েবলের রেফারেন্সের মাধ্যমে পরোক্ষভাবে উল্লেখ করা যেতে পারে।

ডিফল্ট প্রযোজ্য নয়
উপস্থিতি ঐচ্ছিক
টাইপ করুন

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

কোনও ধরন উল্লেখ করা না থাকলে, ডিফল্ট হিসেবে ধরনটি String হয়।

অ্যারে ভ্যালু যদি কোনও ধরনের অ্যারে হয়, তাহলে true হিসেবে সেট করুন। ডিফল্ট: false
সঠিক ভ্যালু অতিরিক্ত দাবি জানানোর জন্য আপনি যে ভ্যালু ব্যবহার করতে চান।

<Claim> এলিমেন্ট এই অ্যাট্রিবিউটগুলি নেয়:

  • name - (আবশ্যক) দাবির নাম।
  • ref - (ঐচ্ছিক) ফ্লো ভেরিয়েবলের নাম। উপস্থিত থাকলে, নীতিটি এই ভেরিয়েবলের ভ্যালুকে দাবি হিসেবে ব্যবহার করবে। ref অ্যাট্রিবিউট ও স্পষ্ট দাবি ভ্যালু, দু'টিই উল্লেখ করা থাকলে, স্পষ্ট ভ্যালু ডিফল্ট হিসেবে ধরে নেওয়া হয় এবং রেফারেন্স করা ফ্লো ভেরিয়েবল সমাধান না করা গেলে এটি ব্যবহার করা হয়।
  • type - (ঐচ্ছিক) এগুলির মধ্যে একটি: string (ডিফল্ট), number, boolean বা map
  • array - (ঐচ্ছিক) ভ্যালু যদি কোনও ধরনের অ্যারে হয়, তাহলে তা বোঝাতে true হিসেবে সেট করুন। ডিফল্ট: false.

<CustomClaims>

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

<Id>

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

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

ডিফল্ট প্রযোজ্য নয়
উপস্থিতি ঐচ্ছিক
টাইপ করুন স্ট্রিং বা রেফারেন্স।
সঠিক ভ্যালু আইডি সহ ফ্লো ভেরিয়েবলের নাম বা স্ট্রিং।

<IgnoreCriticalHeaders>

<IgnoreCriticalHeaders>true|false</IgnoreCriticalHeaders>

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

এই এলিমেন্টকে 'true' হিসেবে সেট করার একটি কারণ হল, আপনি যদি টেস্টিং এনভায়রনমেন্টে থাকেন এবং কোনও হেডার না থাকার কারণে ব্যর্থতা ঘটানোর জন্য এখনও প্রস্তুত না হন।

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

<IgnoreIssuedAt>

<IgnoreIssuedAt>true|false</IgnoreIssuedAt>

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

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

<IgnoreUnresolvedVariables>

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

নীতিতে উল্লেখ করা কোনও ভেরিয়েবল সমাধান করা না গেলে, আপনি যদি চান যে নীতিটি একটি সমস্যা দেখাক, তাহলে এটি false হিসেবে সেট করুন। কোনও সমাধান করা যায় না এমন ভেরিয়েবলকে খালি স্ট্রিং (নাল) হিসেবে গণ্য করতে true হিসেবে সেট করুন।

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

<Issuer>

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

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

ডিফল্ট প্রযোজ্য নয়
উপস্থিতি ঐচ্ছিক
টাইপ করুন স্ট্রিং বা রেফারেন্স
সঠিক ভ্যালু যেকোনও

<KnownHeaders>

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

or:

<KnownHeaders ref=’variable_containing_headers’/>

GenerateJWT নীতি, JWT-তে crit হেডার পূরণ করতে <CriticalHeaders> এলিমেন্ট ব্যবহার করে। যেমন:

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

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

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

ডিফল্ট প্রযোজ্য নয়
উপস্থিতি ঐচ্ছিক
টাইপ করুন কমা দিয়ে আলাদা করা স্ট্রিংয়ের অ্যারে
সঠিক ভ্যালু অ্যারে বা অ্যারে থাকা ভেরিয়েবলের নাম।

<PublicKey/Certificate>

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

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

ডিফল্ট প্রযোজ্য নয়
উপস্থিতি 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 থেকে ভ্যালু ফেচ করলে, Edge ৩০০ সেকেন্ডের জন্য JWKS ক্যাশে করে। ক্যাশের মেয়াদ শেষ হয়ে গেলে, Edge আবার JWKS নিয়ে আসে।

ডিফল্ট প্রযোজ্য নয়
উপস্থিতি 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-এনকোডেড কী উল্লেখ করতে, ref অ্যাট্রিবিউট ব্যবহার করুন। শুধুমাত্র তখনই ব্যবহার করুন যখন অ্যালগরিদম RS256/RS384/RS512, PS256/PS384/PS512 অথবা ES256/ES384/ES512-এর মধ্যে কোনও একটি হয়।

ডিফল্ট প্রযোজ্য নয়
উপস্থিতি RSA অ্যালগরিদম দিয়ে সাইন করা JWT যাচাই করতে, আপনাকে অবশ্যই সার্টিফিকেট, JWKS বা ভ্যালু এলিমেন্ট ব্যবহার করতে হবে।
টাইপ করুন স্ট্রিং
সঠিক ভ্যালু ফ্লো ভেরিয়েবল বা স্ট্রিং।

<SecretKey/Value>

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

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

ডিফল্ট প্রযোজ্য নয়
উপস্থিতি HMAC অ্যালগরিদমের জন্য প্রয়োজন।
টাইপ করুন স্ট্রিং
সঠিক ভ্যালু

encoding-এর জন্য, সঠিক মান হল hex, base16, base64, অথবা base64url. এনকোডিং ভ্যালু hex ও base16 হল সমার্থক শব্দ।

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

মনে রাখবেন: এটি ফ্লো ভেরিয়েবল হলে, এর আগে "private" প্রিফিক্স থাকতে হবে। যেমন, private.mysecret

<Source>

<Source>jwt-variable</Source>

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

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

<Subject>

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

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

ডিফল্ট প্রযোজ্য নয়
উপস্থিতি ঐচ্ছিক
টাইপ করুন স্ট্রিং
সঠিক ভ্যালু কোনও বিষয়কে অনন্যভাবে শনাক্ত করে এমন যেকোনও ভ্যালু।

<TimeAllowance>

<TimeAllowance>120s</TimeAllowance>

times-এর জন্য "গ্রেস পিরিয়ড"। যেমন, সময়সীমা ৬০ সেকেন্ড হিসেবে কনফিগার করা থাকলে, JWT-এর মেয়াদ শেষ হয়ে গেলেও, দাবি করা মেয়াদ শেষ হওয়ার পরে ৬০ সেকেন্ড পর্যন্ত সেটি বৈধ হিসেবেই গণ্য করা হবে। not-before-time-এর ক্ষেত্রেও একই মূল্যায়ন করা হবে। ডিফল্ট মান হল ০ সেকেন্ড (কোনও গ্রেস পিরিয়ড নেই)।

ডিফল্ট ০ সেকেন্ড (কোনও গ্রেস পিরিয়ড নেই)
উপস্থিতি ঐচ্ছিক
টাইপ করুন স্ট্রিং
সঠিক ভ্যালু মান বা মান সহ ফ্লো ভেরিয়েবলের রেফারেন্স। সময়সীমা নিম্নলিখিতভাবে নির্দিষ্ট করা যেতে পারে:
  • s = সেকেন্ড
  • মি = মিনিট
  • ঘ = ঘণ্টা
  • 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 এর ক্ষেত্রে, এই ভেরিয়েবল সেট করা হয় না।

সমস্যার রেফারেন্স

এই নীতি কোনও সমস্যার কারণে ট্রিগার হলে, 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 Verify JWT নীতি দ্বারা crit হেডারে পাওয়া হেডারটি KnownHeaders-এ তালিকাভুক্ত নেই।
steps.jwt.UnknownException 401 অজানা ব্যতিক্রম ঘটেছে।
steps.jwt.WrongKeyType 401 ভুল ধরনের কী উল্লেখ করা হয়েছে। যেমন, আপনি যদি কোনও উপবৃত্তাকার কার্ভ অ্যালগরিদমের জন্য RSA কী বা RSA অ্যালগরিদমের জন্য কার্ভ কী নির্দিষ্ট করেন।

ডিপ্লয়মেন্ট সংক্রান্ত সমস্যা

এই নীতি থাকা কোনও প্রক্সি আপনি প্রয়োগ করলে, এই সমস্যা হতে পারে।

সমস্যার নাম কারণ এর সমাধান করুন
InvalidNameForAdditionalClaim <AdditionalClaims> এলিমেন্টের চাইল্ড এলিমেন্টে <Claim> ব্যবহৃত দাবিটি নিম্নলিখিত রেজিস্টার করা নামের মধ্যে একটি হলে, ডিপ্লয়মেন্ট ব্যর্থ হবে: kid, iss, sub, aud, iat, exp, nbf, বা jti.
InvalidTypeForAdditionalClaim <AdditionalClaims> এলিমেন্টের চাইল্ড এলিমেন্ট <Claim>-এ ব্যবহৃত দাবিটি string, number, boolean বা map ধরনের না হলে, ডেপ্লয়মেন্ট ব্যর্থ হবে।
MissingNameForAdditionalClaim <AdditionalClaims> এলিমেন্টের চাইল্ড এলিমেন্ট <Claim> -এ দাবির নাম উল্লেখ করা না থাকলে, ডিপ্লয়মেন্ট সম্পূর্ণ হবে না।
InvalidNameForAdditionalHeader <AdditionalClaims> এলিমেন্টের চাইল্ড এলিমেন্টে <Claim> ব্যবহৃত দাবিটির নাম alg বা typ হলে এই সমস্যা হয়।
InvalidTypeForAdditionalHeader <AdditionalClaims> এলিমেন্টের <Claim> চাইল্ড এলিমেন্টে ব্যবহৃত দাবির ধরন string, number, boolean বা map ধরনের না হলে, ডেপ্লয়মেন্ট সফল হবে না।
InvalidValueOfArrayAttribute <AdditionalClaims> এলিমেন্টের চাইল্ড এলিমেন্ট <Claim>-এর মধ্যে থাকা অ্যারে অ্যাট্রিবিউটের ভ্যালু true বা false হিসেবে সেট করা না থাকলে এই সমস্যা হয়।
InvalidValueForElement <Algorithm> এলিমেন্টে উল্লেখ করা মান ব্যবহারযোগ্য না হলে, ডেপ্লয়মেন্ট সফল হবে না।
MissingConfigurationElement <PrivateKey> এলিমেন্ট RSA ফ্যামিলি অ্যালগরিদম অথবা <SecretKey> এলিমেন্ট HS ফ্যামিলি অ্যালগরিদমের সাথে ব্যবহার করা না হলে এই সমস্যা হবে।
InvalidKeyConfiguration <PrivateKey> বা <SecretKey> এলিমেন্টে চাইল্ড এলিমেন্ট <Value> নির্দিষ্ট করা না থাকলে, ডেপ্লয়মেন্ট সম্পূর্ণ হবে না।
EmptyElementForKeyConfiguration <Value> চাইল্ড এলিমেন্টের ref অ্যাট্রিবিউট <PrivateKey> বা <SecretKey> এলিমেন্ট খালি বা অনির্দিষ্ট হলে, ডেপ্লয়মেন্ট ব্যর্থ হবে।
InvalidConfigurationForVerify <Id> এলিমেন্টটি <SecretKey> এলিমেন্টের মধ্যে ডিফাইন করা থাকলে এই সমস্যা হয়।
InvalidEmptyElement Verify JWT নীতির <Source> এলিমেন্ট খালি থাকলে এই সমস্যা হয়। উপস্থিত থাকলে, এটিকে অবশ্যই Edge ফ্লো ভেরিয়েবলের নাম দিয়ে সংজ্ঞায়িত করতে হবে।
InvalidPublicKeyValue <PublicKey> এলিমেন্টের চাইল্ড এলিমেন্ট <JWKS>-এ ব্যবহৃত ভ্যালু RFC 7517-এ নির্দিষ্ট করা সঠিক ফর্ম্যাট ব্যবহার না করলে, ডেপ্লয়মেন্ট ব্যর্থ হবে।
InvalidConfigurationForActionAndAlgorithm HS ফ্যামিলি অ্যালগরিদমের সাথে <PrivateKey> এলিমেন্ট ব্যবহার করা হলে অথবা RSA ফ্যামিলি অ্যালগরিদমের সাথে <SecretKey> এলিমেন্ট ব্যবহার করা হলে, ডেপ্লয়মেন্ট কাজ করবে না।

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

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

ভেরিয়েবল যেখানে উদাহরণ
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>