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

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

কী

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

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

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

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

ভিডিও

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

নমুনা

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

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

পলিসি কনফিগারেশনে সেইসব তথ্য অন্তর্ভুক্ত থাকে যা JWT ডিকোড এবং মূল্যায়ন করার জন্য Edge-এর প্রয়োজন হয়, যেমন JWT-টি কোথায় পাওয়া যাবে (Source এলিমেন্টে নির্দিষ্ট করা একটি ফ্লো ভেরিয়েবলে), প্রয়োজনীয় সাইনিং অ্যালগরিদম, সিক্রেট কী-টি কোথায় পাওয়া যাবে (যা একটি 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>

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

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' এলিমেন্টের প্রয়োজনীয় মানের সাথে মেলে না।

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

মূল উপাদানগুলি নির্ধারণ করা

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

অ্যালগরিদম মূল উপাদান
এইচএস*
<SecretKey encoding="base16|hex|base64|base64url">
  <Value ref="private.secretkey"/>
</SecretKey>
আরএস*, ইএস*, পিএস*
<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._\-$ % । তবে, Edge ম্যানেজমেন্ট UI অতিরিক্ত বিধিনিষেধ আরোপ করে, যেমন অ্যালফানিউমেরিক নয় এমন অক্ষর স্বয়ংক্রিয়ভাবে মুছে ফেলা।

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

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

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

মিথ্যা ঐচ্ছিক
সক্ষম নীতিটি কার্যকর করতে এটিকে true তে সেট করুন।

পলিসিটি 'বন্ধ' করতে এটিকে 'ফলস' false সেট করুন। কোনো ফ্লো-এর সাথে সংযুক্ত থাকলেও পলিসিটি কার্যকর হবে না।

সত্য ঐচ্ছিক
অ্যাসিঙ্ক এই অ্যাট্রিবিউটটি অপ্রচলিত। মিথ্যা অপ্রচলিত

<ডিসপ্লে নাম>

<DisplayName>Policy Display Name</DisplayName>

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

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

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

<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-here</Audience>

or:

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

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

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

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

<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> এলিমেন্টটি এই অ্যাট্রিবিউটগুলো গ্রহণ করে:

  • নাম - (আবশ্যক) দাবির নাম।
  • ref - (ঐচ্ছিক) একটি ফ্লো ভেরিয়েবলের নাম। এটি উপস্থিত থাকলে, পলিসি এই ভেরিয়েবলের মানটিকে ক্লেইম হিসেবে ব্যবহার করবে। যদি একটি ref অ্যাট্রিবিউট এবং একটি সুস্পষ্ট ক্লেইম মান উভয়ই নির্দিষ্ট করা থাকে, তবে সুস্পষ্ট মানটি ডিফল্ট হিসেবে গণ্য হবে এবং উল্লেখিত ফ্লো ভেরিয়েবলটি অমীমাংসিত থাকলে সেটিই ব্যবহৃত হবে।
  • ধরণ - (ঐচ্ছিক) নিম্নলিখিতগুলির মধ্যে একটি: স্ট্রিং (ডিফল্ট), সংখ্যা, বুলিয়ান, বা ম্যাপ
  • অ্যারে - (ঐচ্ছিক) মানটি বিভিন্ন টাইপের একটি অ্যারে কিনা তা নির্দেশ করতে ' 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 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 ক্লেইম নামগুলোর মধ্যে একটি নয়। একটি অতিরিক্ত ক্লেইমের মান একটি স্ট্রিং, একটি সংখ্যা, একটি বুলিয়ান, একটি ম্যাপ বা একটি অ্যারে হতে পারে। একটি ম্যাপ হলো মূলত নাম/মান জোড়ের একটি সেট। এই প্রকারগুলোর যেকোনোটির ক্লেইমের মান পলিসি কনফিগারেশনে স্পষ্টভাবে, অথবা একটি ফ্লো ভেরিয়েবলের রেফারেন্সের মাধ্যমে পরোক্ষভাবে নির্দিষ্ট করা যেতে পারে।

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

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

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

অ্যারে মানটি বিভিন্ন ধরনের অ্যারে কিনা তা নির্দেশ করতে ' true' সেট করুন। ডিফল্ট: false
বৈধ মান অতিরিক্ত দাবির জন্য আপনি যে কোনো মান ব্যবহার করতে পারেন।

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

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

কাস্টম দাবি

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

<আইডি>

<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>true|false</IgnoreCriticalHeaders>

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

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

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

<IgnoreIssuedAt>

<IgnoreIssuedAt>true|false</IgnoreIssuedAt>

যদি আপনি চান যে কোনো JWT-তে iat (Issued at) ক্লেইম ভবিষ্যতের কোনো সময় নির্দিষ্ট করলে পলিসিটি একটি এরর দেখাবে, তাহলে এটিকে false (ডিফল্ট) সেট করুন। ভেরিফিকেশনের সময় পলিসিটি যাতে iat উপেক্ষা করে, তার জন্য এটিকে true সেট করুন।

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

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

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

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

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

<ইস্যুকারী>

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

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

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

<পরিচিত শিরোনাম>

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

or:

<KnownHeaders ref=variable_containing_headers/>

GenerateJWT পলিসিটি একটি JWT-এর ক্রিটিক্যাল হেডার পূরণ করার জন্য <CriticalHeaders> এলিমেন্টটি ব্যবহার করে। উদাহরণস্বরূপ:

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

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

আপনি চাইলে <IgnoreCriticalHeaders> এলিমেন্টটিকে true সেট করে VerifyJWT পলিসিটিকে crit হেডার উপেক্ষা করার জন্য কনফিগার করতে পারেন।

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

<পাবলিক কী/সার্টিফিকেট>

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

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

<পাবলিককী/জেডব্লিউকেএস>

<!-- 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 সিগনেচার যাচাই করার জন্য সঠিক পাবলিক কী ব্যবহার করবে। এই বৈশিষ্ট্যটি সম্পর্কে বিস্তারিত জানতে, “Using a JSON Web Key Set (JWKS) to verify a JWT” দেখুন।

আপনি যদি কোনো পাবলিক ইউআরএল থেকে ভ্যালুটি ফেচ করেন, Edge ৩০০ সেকেন্ডের জন্য JWKS-টি ক্যাশ করে রাখে। ক্যাশের মেয়াদ শেষ হয়ে গেলে, Edge আবার JWKS-টি ফেচ করে।

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

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

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

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

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

ডিফল্ট প্রযোজ্য নয়
উপস্থিতি HMAC অ্যালগরিদমের জন্য আবশ্যক।
প্রকার স্ট্রিং
বৈধ মান

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

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

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

<উৎস>

<Source>jwt-variable</Source>

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

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

বিষয়

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

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

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

<সময় বরাদ্দ>

<TimeAllowance>120s</TimeAllowance>

সময়ের জন্য 'গ্রেস পিরিয়ড'। উদাহরণস্বরূপ, যদি সময়সীমা ৬০ সেকেন্ড হিসেবে কনফিগার করা থাকে, তাহলে একটি মেয়াদোত্তীর্ণ JWT-কে নির্ধারিত মেয়াদের পর আরও ৬০ সেকেন্ড পর্যন্ত বৈধ বলে গণ্য করা হবে। 'নট-বিফোর-টাইম'-ও একইভাবে মূল্যায়ন করা হবে। ডিফল্ট মান ০ সেকেন্ড (কোনো গ্রেস পিরিয়ড নেই)।

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

ত্রুটির রেফারেন্স

এই বিভাগটি ফল্ট কোড এবং ত্রুটির বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷

রানটাইম ত্রুটি

নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷

ফল্ট কোড 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 অ্যালগরিদমের জন্য 32 বাইটের কম, HS386 অ্যালগরিদমের জন্য 48 বাইটের কম এবং HS512 অ্যালগরিদমের জন্য 64 বাইটের কম।
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-কে পাবলিক কীগুলির উৎস হিসেবে ব্যবহার করা হয়, কিন্তু স্বাক্ষরিত JWT-এর kid JWKS-এ তালিকাভুক্ত নয়।
steps.jwt.SigningFailed 401 জেনারেটজেডব্লিউটি-তে, HS384 বা HS512 অ্যালগরিদমের ন্যূনতম আকারের চেয়ে কম একটি কী-এর জন্য
steps.jwt.TokenExpired 401 নীতি একটি মেয়াদ উত্তীর্ণ টোকেন যাচাই করার চেষ্টা করে।
steps.jwt.TokenNotYetValid 401 টোকেন এখনও বৈধ নয়.
steps.jwt.UnhandledCriticalHeader 401 crit হেডারে যাচাই JWT নীতির দ্বারা পাওয়া একটি হেডার 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 যদি চাইল্ড উপাদান <Value> <PrivateKey> বা <SecretKey> উপাদানে সংজ্ঞায়িত না হয়, তাহলে স্থাপনা ব্যর্থ হবে।
EmptyElementForKeyConfiguration যদি <PrivateKey> বা <SecretKey> এলিমেন্টের চাইল্ড এলিমেন্ট <Value> এর রেফ অ্যাট্রিবিউট খালি বা অনির্দিষ্ট থাকে, তাহলে ডিপ্লয়মেন্ট ব্যর্থ হবে।
InvalidConfigurationForVerify এই ত্রুটিটি ঘটে যদি <Id> উপাদানটি <SecretKey> উপাদানের মধ্যে সংজ্ঞায়িত করা হয়।
InvalidEmptyElement যাচাই JWT নীতির <Source> উপাদান খালি থাকলে এই ত্রুটি ঘটে। যদি উপস্থিত থাকে, এটি অবশ্যই একটি এজ ফ্লো পরিবর্তনশীল নাম দিয়ে সংজ্ঞায়িত করা উচিত।
InvalidPublicKeyValue যদি <PublicKey> এলিমেন্টের চাইল্ড এলিমেন্ট <JWKS> এ ব্যবহৃত মান RFC 7517- এ উল্লিখিত কোনো বৈধ বিন্যাস ব্যবহার না করে, তাহলে স্থাপনা ব্যর্থ হবে।
InvalidConfigurationForActionAndAlgorithm যদি <PrivateKey> উপাদানটি HS ফ্যামিলি অ্যালগরিদমের সাথে ব্যবহার করা হয় বা 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>
    

,

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

কী

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

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

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

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

ভিডিও

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

নমুনা

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

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

পলিসি কনফিগারেশনে সেইসব তথ্য অন্তর্ভুক্ত থাকে যা JWT ডিকোড এবং মূল্যায়ন করার জন্য Edge-এর প্রয়োজন হয়, যেমন JWT-টি কোথায় পাওয়া যাবে (Source এলিমেন্টে নির্দিষ্ট করা একটি ফ্লো ভেরিয়েবলে), প্রয়োজনীয় সাইনিং অ্যালগরিদম, সিক্রেট কী-টি কোথায় পাওয়া যাবে (যা একটি 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>

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

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' এলিমেন্টের প্রয়োজনীয় মানের সাথে মেলে না।

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

মূল উপাদানগুলি নির্ধারণ করা

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

অ্যালগরিদম মূল উপাদান
এইচএস*
<SecretKey encoding="base16|hex|base64|base64url">
  <Value ref="private.secretkey"/>
</SecretKey>
আরএস*, ইএস*, পিএস*
<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._\-$ % । তবে, Edge ম্যানেজমেন্ট UI অতিরিক্ত বিধিনিষেধ আরোপ করে, যেমন অ্যালফানিউমেরিক নয় এমন অক্ষর স্বয়ংক্রিয়ভাবে মুছে ফেলা।

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

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

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

মিথ্যা ঐচ্ছিক
সক্ষম নীতিটি কার্যকর করতে এটিকে true তে সেট করুন।

পলিসিটি 'বন্ধ' করতে এটিকে 'ফলস' false সেট করুন। কোনো ফ্লো-এর সাথে সংযুক্ত থাকলেও পলিসিটি কার্যকর হবে না।

সত্য ঐচ্ছিক
অ্যাসিঙ্ক এই অ্যাট্রিবিউটটি অপ্রচলিত। মিথ্যা অপ্রচলিত

<ডিসপ্লে নাম>

<DisplayName>Policy Display Name</DisplayName>

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

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

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

<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-here</Audience>

or:

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

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

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

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

<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> এলিমেন্টটি এই অ্যাট্রিবিউটগুলো গ্রহণ করে:

  • নাম - (আবশ্যক) দাবির নাম।
  • ref - (ঐচ্ছিক) একটি ফ্লো ভেরিয়েবলের নাম। এটি উপস্থিত থাকলে, পলিসি এই ভেরিয়েবলের মানটিকে ক্লেইম হিসেবে ব্যবহার করবে। যদি একটি ref অ্যাট্রিবিউট এবং একটি সুস্পষ্ট ক্লেইম মান উভয়ই নির্দিষ্ট করা থাকে, তবে সুস্পষ্ট মানটি ডিফল্ট হিসেবে গণ্য হবে এবং উল্লেখিত ফ্লো ভেরিয়েবলটি অমীমাংসিত থাকলে সেটিই ব্যবহৃত হবে।
  • ধরণ - (ঐচ্ছিক) নিম্নলিখিতগুলির মধ্যে একটি: স্ট্রিং (ডিফল্ট), সংখ্যা, বুলিয়ান, বা ম্যাপ
  • অ্যারে - (ঐচ্ছিক) মানটি বিভিন্ন টাইপের একটি অ্যারে কিনা তা নির্দেশ করতে ' 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 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 ক্লেইম নামগুলোর মধ্যে একটি নয়। একটি অতিরিক্ত ক্লেইমের মান একটি স্ট্রিং, একটি সংখ্যা, একটি বুলিয়ান, একটি ম্যাপ বা একটি অ্যারে হতে পারে। একটি ম্যাপ হলো মূলত নাম/মান জোড়ের একটি সেট। এই প্রকারগুলোর যেকোনোটির ক্লেইমের মান পলিসি কনফিগারেশনে স্পষ্টভাবে, অথবা একটি ফ্লো ভেরিয়েবলের রেফারেন্সের মাধ্যমে পরোক্ষভাবে নির্দিষ্ট করা যেতে পারে।

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

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

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

অ্যারে মানটি বিভিন্ন ধরনের অ্যারে কিনা তা নির্দেশ করতে ' true' সেট করুন। ডিফল্ট: false
বৈধ মান অতিরিক্ত দাবির জন্য আপনি যে কোনো মান ব্যবহার করতে পারেন।

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

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

কাস্টম দাবি

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

<আইডি>

<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>true|false</IgnoreCriticalHeaders>

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

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

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

<IgnoreIssuedAt>

<IgnoreIssuedAt>true|false</IgnoreIssuedAt>

যদি আপনি চান যে কোনো JWT-তে iat (Issued at) ক্লেইম ভবিষ্যতের কোনো সময় নির্দিষ্ট করলে পলিসিটি একটি এরর দেখাবে, তাহলে এটিকে false (ডিফল্ট) সেট করুন। ভেরিফিকেশনের সময় পলিসিটি যাতে iat উপেক্ষা করে, তার জন্য এটিকে true সেট করুন।

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

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

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

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

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

<ইস্যুকারী>

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

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

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

<পরিচিত শিরোনাম>

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

or:

<KnownHeaders ref=variable_containing_headers/>

GenerateJWT পলিসিটি একটি JWT-এর ক্রিটিক্যাল হেডার পূরণ করার জন্য <CriticalHeaders> এলিমেন্টটি ব্যবহার করে। উদাহরণস্বরূপ:

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

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

আপনি চাইলে <IgnoreCriticalHeaders> এলিমেন্টটিকে true সেট করে VerifyJWT পলিসিটিকে crit হেডার উপেক্ষা করার জন্য কনফিগার করতে পারেন।

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

<পাবলিক কী/সার্টিফিকেট>

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

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

<পাবলিককী/জেডব্লিউকেএস>

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

Specifies a value in JWKS format ( RFC 7517 ) containing a set of public keys. Use only when the algorithm is one of RS256/RS384/RS512, PS256/PS384/PS512, or ES256/ES384/ES512.

If the inbound JWT bears a key ID which present in the set of JWKS, then the policy will use the correct public key to verify the JWT signature. For details about this feature, see Using a JSON Web Key Set (JWKS) to verify a JWT .

If you fetch the value from a public URL, Edge caches the JWKS for a period of 300 seconds. When the cache expires, Edge fetches the JWKS again.

ডিফল্ট প্রযোজ্য নয়
উপস্থিতি To verify a JWT using an RSA algorithm, you must either either use the Certificate, JWKS, or Value element.
প্রকার স্ট্রিং
বৈধ মান A flow variable, string value, or 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>

Specifies the public key or public cert used to verify the signature on the JWT. Use the ref attribute to pass the key/cert in a flow variable, or specify the PEM-encoded key directly. Use only when the algorithm is one of RS256/RS384/RS512, PS256/PS384/PS512, or ES256/ES384/ES512.

ডিফল্ট প্রযোজ্য নয়
উপস্থিতি To verify a JWT signed with an RSA algorithm, you must either either use the Certificate, JWKS, or Value elements.
প্রকার স্ট্রিং
বৈধ মান A flow variable or string.

<SecretKey/Value>

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

Provides the secret key used to verify or sign tokens with an HMAC algorithm. Use only when the algorithm is one of HS256, HS384, HS512. .

ডিফল্ট প্রযোজ্য নয়
উপস্থিতি Required for HMAC algorithms.
প্রকার স্ট্রিং
বৈধ মান

For encoding , valid values are hex , base16 , base64 , or base64url . The encoding values hex and base16 are synonyms.

Use the ref attribute to pass the key in a flow variable.

Note: If a flow variable, it must have the prefix "private". For example, private.mysecret

<Source>

<Source>jwt-variable</Source>

If present, specifies the flow variable in which the policy expects to find the JWT to verify.

ডিফল্ট request.header.authorization (See the note above for important information about the default).
উপস্থিতি ঐচ্ছিক
প্রকার স্ট্রিং
বৈধ মান An Edge flow variable name.

<Subject>

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

The policy verifies that the subject in the JWT matches the string specified in the policy configuration. This claim identifies or makes a statement about the subject of the JWT. This is one of the standard set of claims mentioned in RFC7519 .

ডিফল্ট প্রযোজ্য নয়
উপস্থিতি ঐচ্ছিক
প্রকার স্ট্রিং
বৈধ মান Any value uniquely identifying a subject.

<TimeAllowance>

<TimeAllowance>120s</TimeAllowance>

The "grace period" for times. For example, if the time allowance is configured to be 60s, then an expired JWT would be treated as still valid, for 60s after the asserted expiry. The not-before-time will be evaluated similarly. Defaults to 0 seconds (no grace period).

ডিফল্ট 0 seconds (no grace period)
উপস্থিতি ঐচ্ছিক
প্রকার স্ট্রিং
বৈধ মান A value or a reference to a flow variable containing the value. Time spans can be specified as follows:
  • s = seconds
  • m = minutes
  • h = hours
  • d = days

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

সাফল্যের পরে, 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 এর ক্ষেত্রে, এই ভেরিয়েবল সেট করা হয় না।

ত্রুটির রেফারেন্স

এই বিভাগটি ফল্ট কোড এবং ত্রুটির বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷

রানটাইম ত্রুটি

নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷

ফল্ট কোড 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 অ্যালগরিদমের জন্য 32 বাইটের কম, HS386 অ্যালগরিদমের জন্য 48 বাইটের কম এবং HS512 অ্যালগরিদমের জন্য 64 বাইটের কম।
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-কে পাবলিক কীগুলির উৎস হিসেবে ব্যবহার করা হয়, কিন্তু স্বাক্ষরিত JWT-এর kid JWKS-এ তালিকাভুক্ত নয়।
steps.jwt.SigningFailed 401 জেনারেটজেডব্লিউটি-তে, HS384 বা HS512 অ্যালগরিদমের ন্যূনতম আকারের চেয়ে কম একটি কী-এর জন্য
steps.jwt.TokenExpired 401 নীতি একটি মেয়াদ উত্তীর্ণ টোকেন যাচাই করার চেষ্টা করে।
steps.jwt.TokenNotYetValid 401 টোকেন এখনও বৈধ নয়.
steps.jwt.UnhandledCriticalHeader 401 crit হেডারে যাচাই JWT নীতির দ্বারা পাওয়া একটি হেডার 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 যদি চাইল্ড উপাদান <Value> <PrivateKey> বা <SecretKey> উপাদানে সংজ্ঞায়িত না হয়, তাহলে স্থাপনা ব্যর্থ হবে।
EmptyElementForKeyConfiguration যদি <PrivateKey> বা <SecretKey> এলিমেন্টের চাইল্ড এলিমেন্ট <Value> এর রেফ অ্যাট্রিবিউট খালি বা অনির্দিষ্ট থাকে, তাহলে ডিপ্লয়মেন্ট ব্যর্থ হবে।
InvalidConfigurationForVerify এই ত্রুটিটি ঘটে যদি <Id> উপাদানটি <SecretKey> উপাদানের মধ্যে সংজ্ঞায়িত করা হয়।
InvalidEmptyElement যাচাই JWT নীতির <Source> উপাদান খালি থাকলে এই ত্রুটি ঘটে। যদি উপস্থিত থাকে, এটি অবশ্যই একটি এজ ফ্লো পরিবর্তনশীল নাম দিয়ে সংজ্ঞায়িত করা উচিত।
InvalidPublicKeyValue যদি <PublicKey> এলিমেন্টের চাইল্ড এলিমেন্ট <JWKS> এ ব্যবহৃত মান RFC 7517- এ উল্লিখিত কোনো বৈধ বিন্যাস ব্যবহার না করে, তাহলে স্থাপনা ব্যর্থ হবে।
InvalidConfigurationForActionAndAlgorithm যদি <PrivateKey> উপাদানটি HS ফ্যামিলি অ্যালগরিদমের সাথে ব্যবহার করা হয় বা 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>