আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
ব্যর্থ করতে ডিকোড
ত্রুটি কোড
steps.jwt.FailedToDecode
ত্রুটি প্রতিক্রিয়া বডি
{
"fault": {
"faultstring": "Failed to Decode Token: policy({0})",
"detail": {
"errorcode": "steps.jwt.FailedToDecode"
}
}
}
কারণ
ডিকোড JWT নীতির <Source>
উপাদানে নির্দিষ্ট করা JSON ওয়েব টোকেন (JWT) ত্রুটিপূর্ণ, অবৈধ বা অন্যথায় ডিকোডযোগ্য না হলে এই ত্রুটি ঘটে।
একটি সঠিকভাবে কাঠামোবদ্ধ JWT-তে নিম্নলিখিত বিন্যাসে একটি হেডার, পেলোড এবং স্বাক্ষর থাকা উচিত: header.payload.signature
। ডিকোডজেডব্লিউটি নীতিতে পাস করা JWT যদি একটি উপাদান অংশ অনুপস্থিত থাকে, তাহলে আপনি ত্রুটিটি পাবেন। উদাহরণস্বরূপ, যদি JWT-এর শুধুমাত্র payload.signature
থাকে, কিন্তু তার header
অনুপস্থিত থাকে, তাহলে ত্রুটি ঘটবে।
রোগ নির্ণয়
ডিকোড JWT নীতির
<Source>
উপাদানে নির্দিষ্ট ভেরিয়েবলটি সনাক্ত করুন। এই ভেরিয়েবলে JWT থাকা উচিত।এখানে একটি নমুনা ডিকোড JWT নীতি:
<DecodeJWT name="JWT-Decode-HS256"> <DisplayName>JWT Verify HS256</DisplayName> <Source>request.header.authorization</Source> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </DecodeJWT>
উপরের উদাহরণে, JWT অনুমোদনের অনুরোধের শিরোনামে থাকা উচিত।
ধাপ 1 এ চিহ্নিত ভেরিয়েবল পরীক্ষা করুন এবং এটিতে থাকা JWT বৈধ কিনা তা পরীক্ষা করুন। যদি ইনপুট JWT বৈধ না হয়, তাহলে এটি ত্রুটির কারণ।
নীচের উদাহরণে API অনুরোধে, ইনপুট JWT অনুমোদন অনুরোধ শিরোনামে পাস করা হয়েছে:
curl -v "http://<org>-<env>.apigee.net/v1/decodeJWT" -H "Authorization: Bearer eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM"
JWT এর ক্লোজ পরীক্ষা দেখায় যে এটির বিন্যাস
payload.signature
আছে যা অবৈধ। JWT-এর প্রত্যাশিত বিন্যাস হলheader.payload.signature
। ফলস্বরূপ, ডিকোড JWT নীতি ত্রুটির সাথে ব্যর্থ হয়:"faultstring": "Failed to Decode Token: policy({0})"
রেজোলিউশন
নিশ্চিত করুন যে JWT ডিকোড JWT নীতিতে পাস করা তিনটি উপাদান রয়েছে, সঠিকভাবে ফর্ম্যাট করা হয়েছে এবং ডিকোডযোগ্য।
উপরে দেখানো উদাহরণটি সংশোধন করতে, আপনি একটি বৈধ JWT ফর্ম্যাট header.payload.signature
সহ পাস করতে পারেন। নিম্নলিখিত হিসাবে cURL কমান্ড ব্যবহার করে API কল করে এটি করা যেতে পারে:
curl -v "http://<org>-<env>.apigee.net/v1/decodeJWT" -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM"
অবৈধ টোকেন
ত্রুটি কোড
steps.jwt.InvalidToken
ত্রুটি প্রতিক্রিয়া বডি
{
"fault": {
"faultstring": "Invalid token: policy({0})",
"detail": {
"errorcode": "steps.jwt.InvalidToken"
}
}
}
কারণ
এই ত্রুটিটি ঘটে যদি ডিকোড JWT নীতির <Source>
উপাদানে নির্দিষ্ট করা ফ্লো ভেরিয়েবল হয়:
- সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে) বা
- সমাধান করা যাবে না (সংজ্ঞায়িত করা হয় না)
রোগ নির্ণয়
ডিকোড JWT নীতির
<Source>
উপাদানে নির্দিষ্ট ভেরিয়েবলটি সনাক্ত করুন। এই ভেরিয়েবলে JWT থাকা উচিত।এখানে একটি নমুনা ডিকোড JWT নীতি:
<DecodeJWT name="JWT-Decode-HS256"> <DisplayName>JWT Verify HS256</DisplayName> <Source>request.header.authorization</Source> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </DecodeJWT>
উপরের উদাহরণে, অনুমোদনের অনুরোধ শিরোনামে JWT থাকা উচিত।
ধাপ 1-এ চিহ্নিত পরিবর্তনশীলটি ডিকোড জেডব্লিউটি নীতি কার্যকর করা হয় এমন প্রবাহে সংজ্ঞায়িত এবং উপলব্ধ কিনা তা নির্ধারণ করুন।
যদি পরিবর্তনশীল হয়:
- সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে) বা
- সমাধান করা যাবে না (সংজ্ঞায়িত করা হয় না)
তাহলে এটি ত্রুটির কারণ।
নীচের উদাহরণে API অনুরোধে, ব্যবহারকারীর দ্বারা অনুমোদনের অনুরোধ শিরোনামে JWT পাস করা হয় না।
curl -v "http://<org>-<env>.apigee.net/v1/decodeJWT"
অনুমোদনের অনুরোধ শিরোনামটি পাস না হওয়ার কারণে, ডিকোড JWT নীতি ত্রুটির সাথে ব্যর্থ হয়:
"faultstring": "Invalid token: policy({0})"
রেজোলিউশন
নিশ্চিত করুন যে ডিকোড JWT নীতির <Source>
উপাদানে উল্লেখ করা ভেরিয়েবলটি সংজ্ঞায়িত করা হয়েছে, এতে একটি বৈধ (ডিকোডেবল) JWT রয়েছে এবং এটি নির্দিষ্ট প্রবাহে উপলব্ধ যেখানে ডিকোড JWT নীতিটি কার্যকর করা হচ্ছে।
উপরে দেখানো উদাহরণটি সংশোধন করতে, আপনি অনুরোধ অনুমোদন শিরোনামে একটি বৈধ JWT পাস করতে পারেন। নিম্নলিখিত হিসাবে cURL কমান্ড ব্যবহার করে API কল করে এটি করা যেতে পারে:
curl -v "http://<org>-<env>.apigee.net/v1/decodeJWT" -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiJiMDhmODZhZi0zNWRhLTQ4ZjItOGZhYi1jZWYzOTA0NjYwYmQifQ.-xN_h82PHVTCMA9vdoHrcZxH-x5mb11y1537t3rGzcM"