DecodeJWS নীতি

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

কী

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

একটি 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 সেট করুন। কোনো ফ্লো-এর সাথে সংযুক্ত থাকলেও পলিসিটি কার্যকর হবে না।

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

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

<DisplayName>Policy Display Name</DisplayName>

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

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

<উৎস>

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