VerifyJWS নীতি

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

কী

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

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

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

ভিডিও

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

নমুনা

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

এই উদাহরণ নীতিতে একটি অ্যাটাচ করা JWS যাচাই করা হয় যা HS256 এনক্রিপশন অ্যালগরিদম, HMAC ব্যবহার করে SHA-256 চেকসাম দিয়ে সই করা হয়েছে। JWS, proxy অনুরোধে 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>

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

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>

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

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

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

অ্যালগরিদম গুরুত্বপূর্ণ এলিমেন্ট
HS*
<SecretKey>
  <Value ref="private.secretkey"/>
</SecretKey>
RS*, ES*, PS*
<PublicKey>
  <Value ref="rsa_public_key"/>
</PublicKey>

অথবা:

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

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

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

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

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

<VerifyJWS name="JWS" 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

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

JWS হেডারে নির্দিষ্ট অতিরিক্ত দাবি সংক্রান্ত নাম/ভ্যালু পেয়ার আছে কিনা এবং দাবি করা ভ্যালু ম্যাচ করছে কিনা তা যাচাই করে।

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

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

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

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

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

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

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

<DetachedContent>

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

কন্টেন্ট পেলোড সহ জেনারেট করা JWS এই ফর্ম্যাটে থাকে:

header.payload.signature

আপনি যদি আলাদা করা পেলোড তৈরি করতে GenerateJWS নীতি ব্যবহার করেন, তাহলে জেনারেট করা JWS পেলোড বাদ দেয় এবং এটি এই ফর্ম্যাটে থাকে:

header..signature

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

এইসব ক্ষেত্রে নীতি সংক্রান্ত সমস্যা হয়:

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

<IgnoreCriticalHeaders>

<IgnoreCriticalHeaders>true|false</IgnoreCriticalHeaders>

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

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

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

<IgnoreUnresolvedVariables>

<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>

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

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

<KnownHeaders>

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

or:

<KnownHeaders ref=’variable_containing_headers’/>

GenerateJWS নীতি, টোকেনে crit হেডার পপুলেট করতে <CriticalHeaders> এলিমেন্ট ব্যবহার করে। যেমন:

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

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

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

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

<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 হলে তবেই ব্যবহার করুন।

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

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

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

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

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

<SecretKey/Value>

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

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

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

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

<Source>

<Source>JWS-variable</Source>

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

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

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

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

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

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

রানটাইম সমস্যা

নীতি এক্সিকিউট করার সময় এই সমস্যা হতে পারে।

সমস্যার কোড HTTP স্ট্যাটাস এটি তখন ঘটে যখন
steps.jws.AlgorithmInTokenNotPresentInConfiguration 401 যাচাইকরণ নীতিতে একাধিক অ্যালগরিদম থাকলে এটি ঘটে
steps.jws.AlgorithmMismatch 401 Generate নীতিতে হেডার দ্বারা নির্দিষ্ট করা অ্যালগরিদমটি Verify নীতিতে প্রত্যাশিত অ্যালগরিদমের সাথে ম্যাচ করেনি। উল্লেখ করা অ্যালগরিদম মিলতে হবে।
steps.jws.ContentIsNotDetached 401 JWS-এ আলাদা করা কন্টেন্ট পেলোড না থাকলে <DetachedContent> নির্দিষ্ট করা হয়।
steps.jws.FailedToDecode 401 নীতিটি JWS ডিকোড করতে পারেনি। JWS সম্ভবত খারাপ হয়ে গেছে।
steps.jws.InsufficientKeyLength 401 HS256 অ্যালগরিদমের জন্য ৩২ বাইটের কম কী
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 Verify JWS নীতির মাধ্যমে crit হেডারে পাওয়া হেডারটি 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>