DecodeJWS নীতি

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

কী

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

JWS-এ অ্যাটাচ করা পেলোড থাকতে পারে, যেমন এই ফর্ম্যাটে:

header.payload.signature

অথবা, JWS, পে-লোড বাদ দিতে পারে, যাকে আলাদা করা পে-লোড বলা হয় এবং এটি এই ফর্ম্যাটে থাকে:

header..signature

DecodeJWS নীতিটি দুটি ফর্মের সাথেই কাজ করে কারণ এটি শুধুমাত্র JWS-এর হেডার অংশটি ডিকোড করে। JWS-এ সই করার জন্য যে অ্যালগরিদম ব্যবহার করা হয়েছে তা নির্বিশেষে DecodeJWS নীতি কাজ করে।

বিস্তারিত ভূমিকা এবং JWS-এর ফর্ম্যাট সম্পর্কে এক ঝলকে জানতে JWS ও JWT নীতি সংক্রান্ত ওভারভিউ দেখুন।

ভিডিও

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

নমুনা: JWS ডিকোড করা

নিচে দেখানো নীতিটি ফ্লো ভেরিয়েবল var.JWS-এ পাওয়া JWS-কে ডিকোড করে। এই ভেরিয়েবেল অবশ্যই থাকতে হবে এবং এতে একটি উপযুক্ত (ডিকোড করা যায় এমন) JWS থাকতে হবে। নীতিটি যেকোনও ফ্লো ভেরিয়েবল থেকে JWS পেতে পারে।

<DecodeJWS name="JWS-Decode-HS256">
    <DisplayName>JWS Verify HS256</DisplayName>
    <Source>var.JWS</Source>
</DecodeJWS>

JWS-এর হেডার অংশে থাকা প্রতিটি হেডারের জন্য, নীতিটি নিম্নলিখিত নামে একটি ফ্লো ভেরিয়েবল সেট করে:

jws.policy-name.header.header-name

JWS-এ অ্যাটাচ করা পেলোড থাকলে, এটি পেলোডের জন্য jws.policy-name.header.payload ফ্লো ভেরিয়েবল সেট করে। ডিটাচ করা পেলোডের জন্য, payload খালি থাকে। এই নীতি দ্বারা সেট করা ভেরিয়েবলের সম্পূর্ণ তালিকা দেখতে ফ্লো ভেরিয়েবল দেখুন।

Decode JWS-এর জন্য এলিমেন্ট রেফারেন্স

নীতি রেফারেন্সে, 'ডিকোড JWS' নীতির এলিমেন্ট ও অ্যাট্রিবিউট বর্ণনা করা হয়েছে।

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

<DecodeJWS 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 প্রক্সি এডিটরে নীতিকে অন্য, স্বাভাবিক-ভাষার নাম দিয়ে লেবেল করার জন্য নাম অ্যাট্রিবিউটের সাথে এটি ব্যবহার করুন ।

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

<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.FailedToDecode 401 নীতিটি JWS ডিকোড করতে পারেনি। JWS সম্ভবত খারাপ হয়ে গেছে।
steps.jws.FailedToResolveVariable 401 নীতির <Source> এলিমেন্টে নির্দিষ্ট করা ফ্লো ভেরিয়েবেল না থাকলে এটি ঘটে।
steps.jws.InvalidClaim 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.MissingPayload 401 JWS পেলোড নেই।
steps.jws.NoAlgorithmFoundInHeader 401 JWS-এ অ্যালগরিদম হেডার না থাকলে এটি ঘটে।
steps.jws.UnknownException 401 অজানা ব্যতিক্রম ঘটেছে।

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

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

সমস্যার নাম এটি তখন ঘটে যখন
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>