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

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

কী

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

যদি JWS যাচাই করা এবং বৈধ হয়, তাহলে অনুরোধটি অগ্রসর হতে পারে। যদি JWS স্বাক্ষর যাচাই করা না যায় অথবা কোনো ধরনের ত্রুটির কারণে JWS অবৈধ হয়, তাহলে সমস্ত প্রক্রিয়াকরণ থেমে যায় এবং প্রতিক্রিয়ায় একটি ত্রুটি ফেরত দেওয়া হয়।

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

ভিডিও

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

নমুনা

HS256 অ্যালগরিদম দ্বারা স্বাক্ষরিত সংযুক্ত JWS যাচাই করুন।

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

সংযুক্ত JWS-টিতে এনকোড করা হেডার, পেলোড এবং সিগনেচার থাকে:

header.payload.signature

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

<VerifyJWS name="JWS-Verify-HS256">
    <DisplayName>JWS Verify HS256</DisplayName>
    <Algorithm>HS256</Algorithm>
    <Source>request.formparam.JWS</Source>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <SecretKey>
        <Value ref="private.secretkey"/>
    </SecretKey>
</VerifyJWS>

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

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

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

একটি বিচ্ছিন্ন JWS, JWS থেকে পেলোডটি বাদ দেয়:

header..signature

<DetachedContent> এলিমেন্টে পেলোড ধারণকারী ভেরিয়েবলের নামটি উল্লেখ করে VerifyJWS পলিসিতে পেলোডটি প্রেরণ করার দায়িত্ব আপনার। <DetachedContent> এ নির্দিষ্ট করা বিষয়বস্তু অবশ্যই সেই মূল, এনকোডবিহীন রূপে থাকতে হবে, যে রূপে JWS সিগনেচারটি তৈরি করা হয়েছিল।

<VerifyJWS name="JWS-Verify-RS256">
    <DisplayName>JWS Verify RS256</DisplayName>
    <Algorithm>RS256</Algorithm>
    <Source>request.formparam.JWS</Source>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <PublicKey>
        <Value ref="public.publickey"/>
    </PublicKey>
    <DetachedContent>private.payload</DetachedContent>
</VerifyJWS>

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

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

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

অ্যালগরিদম মূল উপাদান
এইচএস*
<SecretKey>
  <Value ref="private.secretkey"/>
</SecretKey>
আরএস*, ইএস*, পিএস*
<PublicKey>
  <Value ref="rsa_public_key"/>
</PublicKey>

অথবা:

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

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

পলিসি রেফারেন্সে ভেরিফাই JWS পলিসির উপাদান এবং বৈশিষ্ট্যগুলো বর্ণনা করা হয়েছে।

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

শীর্ষ-স্তরের উপাদানে প্রযোজ্য অ্যাট্রিবিউটসমূহ

<VerifyJWS name="JWS" continueOnError="false" enabled="true" async="false">

নিম্নলিখিত বৈশিষ্ট্যগুলি সকল পলিসি প্যারেন্ট এলিমেন্টের জন্য সাধারণ।

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
নাম পলিসির অভ্যন্তরীণ নাম। নামে আপনি যে অক্ষরগুলো ব্যবহার করতে পারবেন তা হলো: A-Z0-9._\-$ % । তবে, Edge ম্যানেজমেন্ট 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

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

<AdditionalHeaders>
    <Claim name='claim1'>explicit-value-of-claim-here</Claim>
    <Claim name='claim2' ref='variable-name-here'/>
    <Claim name='claim3' ref='variable-name-here' type='boolean'/>
    <Claim name='claim4' ref='variable-name' type='string' array='true'/>
 </AdditionalHeaders>

যাচাই করে যে JWS হেডারে নির্দিষ্ট অতিরিক্ত ক্লেইম নাম/মান জোড়া(গুলো) রয়েছে এবং অ্যাসার্ট করা ক্লেইম মানগুলো মিলে যায়।

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

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

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

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

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

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

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

<বিচ্ছিন্ন বিষয়বস্তু>

<DetachedContent>variable-name-here</DetachedContent>

কন্টেন্ট পেলোড সহ একটি জেনারেটেড JWS-এর গঠনটি হলো নিম্নরূপ:

header.payload.signature

আপনি যদি ডিটাচড পেলোড তৈরি করতে GenerateJWS পলিসি ব্যবহার করেন, তাহলে তৈরি হওয়া JWS-টি পেলোড বাদ দিয়ে নিম্নলিখিত রূপে থাকে:

header..signature

একটি ডিটাচড পেলোডের ক্ষেত্রে, <DetachedContent> এলিমেন্ট ব্যবহার করে পেলোডটিকে VerifyJWS পলিসিতে পাস করার দায়িত্ব আপনার। নির্দিষ্ট কন্টেন্ট পেলোডটি অবশ্যই সেই মূল, এনকোডবিহীন রূপে থাকতে হবে, যেটিতে JWS সিগনেচারটি তৈরি করার সময় ছিল।

পলিসিটি নিম্নলিখিত ক্ষেত্রে ত্রুটি দেখায়:

  • যখন JWS-এ কোনো ডিটাচড কন্টেন্ট পেলোড থাকে না (ফল্ট কোড হলো steps.jws.ContentIsNotDetached ), তখন <DetachedContent> নির্দিষ্ট করা হয়।
  • <DetachedContent> বাদ দেওয়া হয়েছে এবং JWS-টিতে একটি ডিটাচড কন্টেন্ট পেলোড রয়েছে (ফল্ট কোডটি হলো steps.jws.InvalidSignature )।
ডিফল্ট N/A
উপস্থিতি ঐচ্ছিক
প্রকার পরিবর্তনশীল রেফারেন্স

<গুরুত্বপূর্ণ শিরোনাম উপেক্ষা করুন>

<IgnoreCriticalHeaders>true|false</IgnoreCriticalHeaders>

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

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

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

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

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

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

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

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

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

or:

<KnownHeaders ref=variable_containing_headers/>

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

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

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

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

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

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

<!-- Specify the JWKS. -->
<PublicKey>
   <JWKS>jwks-value-here</JWKS>
</PublicKey>

or:

<!-- Specify a variable containing the JWKS. -->
<PublicKey>
   <JWKS ref="public.jwks"/>
</PublicKey>

or:

<!-- Specify a public URL that returns the JWKS.
The URL is static, meaning you cannot set it using a variable. -->
<PublicKey>
   <JWKS uri="jwks-url"/>
</PublicKey>

JWKS ফরম্যাটে ( RFC 7517 ) একটি মান নির্দিষ্ট করে, যাতে এক সেট পাবলিক কী থাকে। শুধুমাত্র তখনই ব্যবহার করুন যখন অ্যালগরিদমটি RS256/RS384/RS512, PS256/PS384/PS512, অথবা ES256/ES384/ES512-এর মধ্যে একটি হয়।

যদি আগত JWS-টিতে এমন একটি কী আইডি থাকে যা JWKS সেটে উপস্থিত, তাহলে পলিসিটি JWS সিগনেচার যাচাই করার জন্য সঠিক পাবলিক কী ব্যবহার করবে। এই বৈশিষ্ট্যটি সম্পর্কে বিস্তারিত জানতে, “Using a JSON Web Key Set (JWKS) to verify a JWS” দেখুন।

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

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

<পাবলিক কী/মান>

<PublicKey>
   <Value ref="public.publickey"/>
</PublicKey>
-or-
<PublicKey>
    <Value>
    -----BEGIN PUBLIC KEY-----
    MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAw2kPrRzcufvUNHvTH/WW
    Q0UrCw5c0+Y707KX3PpXkZGbtTT4nvU1jC0d1lHV8MfUyRXmpmnNxJHAC2F73IyN
    C5TBtXMORc+us7A2cTtC4gZV256bT4h3sIEMsDl0Joz9K9MPzVPFxa1i0RgNt06n
    Xn/Bs2UbbLlKP5Q1HPxewUDEh0gVMqz9wdIGwH1pPxKvd3NltYGfPsUQovlof3l2
    ALvO7i5Yrm96kknfFEWf1EjmCCKvz2vjVbBb6mp1ZpYfc9MOTZVpQcXSbzb/BWUo
    ZmkDb/DRW5onclGzxQITBFP3S6JXd4LNESJcTp705ec1cQ9Wp2Kl+nKrKyv1E5Xx
    DQIDAQAB
    -----END PUBLIC KEY-----
    </Value>
</PublicKey>

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

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

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

<SecretKey>
  <Value ref="private.your-variable-name"/>
</SecretKey>

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

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

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

<উৎস>

<Source>JWS-variable</Source>

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

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

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

সফল হলে, JWS যাচাই করুন এবং JWS ডিকোড নীতিগুলি এই প্যাটার্ন অনুযায়ী প্রসঙ্গ ভেরিয়েবল সেট করে:

jws.{policy_name}.{variable_name}

উদাহরণ স্বরূপ, যদি পলিসির নাম verify-jws হয়, তাহলে পলিসি JWS-এ উল্লেখিত অ্যালগরিদমকে এই কনটেক্সট ভেরিয়েবলে সংরক্ষণ করবে: jws.verify-jws.header.algorithm

পরিবর্তনশীল নাম বর্ণনা
decoded.header. name পেলোডে হেডারের JSON- পার্সযোগ্য মান। পেলোডের প্রতিটি হেডারের জন্য একটি ভেরিয়েবল সেট করা আছে। আপনি header. name প্রবাহ ভেরিয়েবল, এটি একটি হেডার অ্যাক্সেস করার জন্য ব্যবহার করার জন্য প্রস্তাবিত ভেরিয়েবল।
header.algorithm JWS-এ ব্যবহৃত সাইনিং অ্যালগরিদম। উদাহরণস্বরূপ, RS256, HS384, এবং তাই। আরও জানতে (অ্যালগরিদম) হেডার প্যারামিটার দেখুন।
header.kid কী আইডি, যদি JWS তৈরি করার সময় যোগ করা হয়। একটি JWS যাচাই করতে JWT এবং JWS নীতি ওভারভিউ -এ "একটি JSON ওয়েব কী সেট (JWKS) ব্যবহার করা" দেখুন। আরও জানতে (কী আইডি) হেডার প্যারামিটার দেখুন।
header.type হেডার টাইপ মান। আরও জন্য (টাইপ) হেডার প্যারামিটার দেখুন।
header. name নামযুক্ত হেডারের মান (মান বা অতিরিক্ত)। JWS-এর হেডার অংশে প্রতিটি অতিরিক্ত হেডারের জন্য এর মধ্যে একটি সেট করা হবে।
header-json JSON ফর্ম্যাটে হেডার।
payload JWS পেলোড যদি JWS এর একটি সংযুক্ত পেলোড থাকে। একটি বিচ্ছিন্ন পেলোডের জন্য, এই ভেরিয়েবলটি খালি।
valid VerifyJWS-এর ক্ষেত্রে, এই ভেরিয়েবলটি সত্য হবে যখন স্বাক্ষর যাচাই করা হবে, এবং বর্তমান সময়টি টোকেনের মেয়াদ শেষ হওয়ার আগে এবং টোকেন NotBefore মানের পরে, যদি তারা উপস্থিত থাকে। অন্যথায় মিথ্যা।

DecodeJWS এর ক্ষেত্রে, এই ভেরিয়েবল সেট করা হয় না।

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

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

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

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

ফল্ট কোড HTTP স্থিতি যখন ঘটে
steps.jws.AlgorithmInTokenNotPresentInConfiguration 401 যখন যাচাইকরণ নীতিতে একাধিক অ্যালগরিদম থাকে তখন ঘটে৷
steps.jws.AlgorithmMismatch 401 জেনারেট নীতি দ্বারা হেডারে নির্দিষ্ট করা অ্যালগরিদম যাচাই নীতিতে প্রত্যাশিত একটির সাথে মেলেনি৷ নির্দিষ্ট করা অ্যালগরিদম অবশ্যই মিলবে৷
steps.jws.ContentIsNotDetached 401 <DetachedContent> নির্দিষ্ট করা হয় যখন JWS-এ একটি বিচ্ছিন্ন কন্টেন্ট পেলোড থাকে না।
steps.jws.FailedToDecode 401 নীতি JWS ডিকোড করতে অক্ষম ছিল. JWS সম্ভবত দূষিত হয়.
steps.jws.InsufficientKeyLength 401 HS256 অ্যালগরিদমের জন্য 32 বাইটের কম একটি কী-এর জন্য
steps.jws.InvalidClaim 401 একটি অনুপস্থিত দাবি বা দাবি অমিল, বা একটি অনুপস্থিত শিরোনাম বা শিরোনাম অমিলের জন্য৷
steps.jws.InvalidCurve 401 কী দ্বারা নির্দিষ্ট করা বক্ররেখা উপবৃত্তাকার কার্ভ অ্যালগরিদমের জন্য বৈধ নয়।
steps.jws.InvalidJsonFormat 401 JWS হেডারে অবৈধ JSON পাওয়া গেছে।
steps.jws.InvalidJws 401 এই ত্রুটিটি ঘটে যখন JWS স্বাক্ষর যাচাইকরণ ব্যর্থ হয়।
steps.jws.InvalidPayload 401 JWS পেলোড অবৈধ।
steps.jws.InvalidSignature 401 <DetachedContent> বাদ দেওয়া হয়েছে এবং JWS-এর একটি বিচ্ছিন্ন কন্টেন্ট পেলোড রয়েছে।
steps.jws.KeyIdMissing 401 যাচাই নীতিতে পাবলিক কীগুলির উৎস হিসাবে একটি JWKS ব্যবহার করা হয়, কিন্তু স্বাক্ষরিত JWS শিরোনামে একটি kid সম্পত্তি অন্তর্ভুক্ত করে না।
steps.jws.KeyParsingFailed 401 প্রদত্ত মূল তথ্য থেকে সর্বজনীন কী পার্স করা যায়নি।
steps.jws.MissingPayload 401 JWS পেলোড অনুপস্থিত.
steps.jws.NoAlgorithmFoundInHeader 401 JWS অ্যালগরিদম হেডার বাদ দিলে ঘটে।
steps.jws.NoMatchingPublicKey 401 যাচাইকরণ নীতিতে একটি JWKS কে পাবলিক কীগুলির উৎস হিসেবে ব্যবহার করা হয়েছে, কিন্তু স্বাক্ষরিত JWS-এর kid JWKS-এ তালিকাভুক্ত নয়।
steps.jws.UnhandledCriticalHeader 401 crit হেডারে যাচাই JWS নীতি দ্বারা পাওয়া একটি হেডার KnownHeaders এ তালিকাভুক্ত নয়।
steps.jws.UnknownException 401 একটি অজানা ব্যতিক্রম ঘটেছে.
steps.jws.WrongKeyType 401 ভুল ধরনের কী নির্দিষ্ট করা হয়েছে। উদাহরণস্বরূপ, যদি আপনি একটি উপবৃত্তাকার কার্ভ অ্যালগরিদমের জন্য একটি RSA কী বা একটি RSA অ্যালগরিদমের জন্য একটি কার্ভ কী উল্লেখ করেন।

স্থাপনার ত্রুটি

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

ত্রুটির নাম যখন ঘটে
InvalidAlgorithm শুধুমাত্র বৈধ মানগুলি হল: RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384, ES512, HS256, HS384, HS512৷

EmptyElementForKeyConfiguration

FailedToResolveVariable

InvalidConfigurationForActionAndAlgorithmFamily

InvalidConfigurationForVerify

InvalidEmptyElement

InvalidFamiliesForAlgorithm

InvalidKeyConfiguration

InvalidNameForAdditionalClaim

InvalidNameForAdditionalHeader

InvalidPublicKeyId

InvalidPublicKeyValue

InvalidSecretInConfig

InvalidTypeForAdditionalClaim

InvalidTypeForAdditionalHeader

InvalidValueForElement

InvalidValueOfArrayAttribute

InvalidVariableNameForSecret

MissingConfigurationElement

MissingElementForKeyConfiguration

MissingNameForAdditionalClaim

MissingNameForAdditionalHeader

অন্যান্য সম্ভাব্য স্থাপনার ত্রুটি।

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

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

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

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

ত্রুটি পরিচালনার জন্য, সর্বোত্তম অনুশীলন হল ত্রুটি প্রতিক্রিয়ার errorcode অংশটি আটকে রাখা। faultstring -এ লেখার উপর নির্ভর করবেন না, কারণ এটি পরিবর্তন হতে পারে।

উদাহরণ দোষ নিয়ম

<FaultRules>
    <FaultRule name="JWS Policy Errors">
        <Step>
            <Name>JavaScript-1</Name>
            <Condition>(fault.name Matches "TokenExpired")</Condition>
        </Step>
        <Condition>JWS.failed=true</Condition>
    </FaultRule>
</FaultRules>