মৌলিক প্রমাণীকরণ নীতি রানটাইম ত্রুটি সমস্যা সমাধান

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

অমীমাংসিত পরিবর্তনশীল

ত্রুটি কোড

steps.basicauthentication.UnresolvedVariable

ত্রুটি প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "Unresolved variable : [variable_name]",
        "detail": {
            "errorcode": "steps.basicauthentication.UnresolvedVariable"
        }
    }
}

উদাহরণ ত্রুটি বার্তা

{
    "fault": {
        "faultstring": "Unresolved variable : request.header.Authorization",
        "detail": {
            "errorcode": "steps.basicauthentication.UnresolvedVariable"
        }
    }
}

কারণ

বেসিক প্রমাণীকরণ নীতির <Source> উপাদানে নির্দিষ্ট করা Base64 এনকোডেড স্ট্রিং ধারণকারী ভেরিয়েবলটি হয় তাহলে এই ত্রুটিটি ঘটে:

  • সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে)
  • সমাধান করা যাবে না (সংজ্ঞায়িত করা হয় না)

উদাহরণস্বরূপ, এই ত্রুটিটি ঘটে যদি বেসিক অথেন্টিকেশন নীতিতে একটি পরিবর্তনশীল থাকে যা request.header.Authorization হিসাবে নির্দিষ্ট করা থাকে <Source> উপাদানে, কিন্তু অনুমোদন শিরোনামটি API অনুরোধের অংশ হিসাবে পাস করা হয় না।

রোগ নির্ণয়

  1. বেসিক প্রমাণীকরণ নীতিতে <Source> উপাদানটির জন্য ব্যবহৃত ভেরিয়েবলটি সনাক্ত করুন। আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানটিতে এই তথ্যটি খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring, <Source> উপাদানের জন্য ব্যবহৃত ভেরিয়েবলটি হল request.header.Authorization :

    "faultstring": "Unresolved variable : request.header.Authorization"
    
  2. নির্দিষ্ট API প্রক্সিতে সমস্ত মৌলিক প্রমাণীকরণ নীতি পরীক্ষা করুন যেখানে ব্যর্থতা ঘটেছে। এক বা একাধিক মৌলিক প্রমাণীকরণ নীতি থাকতে পারে। নির্দিষ্ট মৌলিক প্রমাণীকরণ নীতি বা নীতিগুলি সনাক্ত করুন যেখানে <Source> উপাদানে নির্দিষ্ট ভেরিয়েবলটি ফল্ট স্ট্রিং-এ চিহ্নিত পরিবর্তনশীল নামের সাথে মেলে (উপরে ধাপ #1)।

    উদাহরণস্বরূপ, নিম্নলিখিত নীতিটি <Source> উপাদানটিকে request.header.Authorization নামের একটি ভেরিয়েবলে সেট করে, যা faultstring -এ যা আছে তার সাথে মেলে:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <BasicAuthentication name="DecodeBaseAuthHeaders">
      <DisplayName>Decode Basic Authentication Header</DisplayName>
      <Operation>Decode</Operation>
      <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
      <User ref="request.header.username"/>
      <Password ref="request.header.password"/>
      <Source>request.header.Authorization</Source>
    </BasicAuthentication>
    
  3. যে প্রবাহে বেসিক প্রমাণীকরণ নীতি কার্যকর করা হচ্ছে তাতে ভেরিয়েবলটি সংজ্ঞায়িত এবং উপলব্ধ কিনা তা নির্ধারণ করুন।

  4. যদি পরিবর্তনশীল হয়:

    1. সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে)
    2. সমাধান করা যাবে না (সংজ্ঞায়িত করা হয় না)

    তারপর যে ত্রুটি জন্য কারণ.

    উপরে দেখানো বেসিক অথেন্টিকেশন নীতির উদাহরণে, অনুরোধের অংশ হিসাবে পরিবর্তনশীল request.header.Authorization পাস করা হয়নি। অর্থাৎ, API অনুরোধটি অনুমোদন শিরোনাম ছাড়াই করা হয়েছিল যেমনটি নীচে দেখানো হয়েছে:

    curl -v "http://org-env.apigee.net/basicauth"

    যেহেতু বেসিক প্রমাণীকরণ নীতিতে ব্যবহৃত ভেরিয়েবলটি উপলব্ধ নয়, আপনি ত্রুটি কোডটি পাবেন:

    steps.basicauthentication.UnresolvedVariable
    

রেজোলিউশন

নিশ্চিত করুন যে বেসিক প্রমাণীকরণ নীতিতে ব্যবহৃত ভেরিয়েবলটি একটি ইনপুট হিসাবে সংজ্ঞায়িত বা পাস করা হয়েছে এবং যে প্রবাহে নীতিটি কার্যকর করা হচ্ছে সেখানে উপলব্ধ।

উপরে আলোচিত নমুনা বেসিক প্রমাণীকরণ নীতির সাথে সমস্যাটি সমাধান করতে, নীচে দেখানো হিসাবে একটি API অনুরোধ করুন:

curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"

InvalidBasicAuthentication Source

ত্রুটি কোড

steps.basicauthentication.InvalidBasicAuthenticationSource

ত্রুটি প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "Source variable : [variable_name] for basic authentication decode policy is not valid",
        "detail": {
            "errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
        }
    }
}

ত্রুটি উদাহরণ ত্রুটি বার্তা

{
    "fault": {
        "faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid",
        "detail": {
            "errorcode": "steps.basicauthentication.InvalidBasicAuthenticationSource"
        }
    }
}

সম্ভাব্য কারণ

এই ত্রুটির সম্ভাব্য কারণগুলি হল:

কারণ বর্ণনা
অবৈধ উৎস পরিবর্তনশীল BasicAuthentication Policy-এর ইনপুট সোর্স ভেরিয়েবল একটি বৈধ Base64 এনকোড করা স্ট্রিং নয়।
হেডার বিকৃত বেসিক প্রমাণীকরণ নীতিতে পাস করা Base64 এনকোডেড স্ট্রিং ধারণকারী হেডারটি ত্রুটিপূর্ণ।

কারণ: অবৈধ উৎস পরিবর্তনশীল

এই ত্রুটিটি ঘটে যদি বেসিক প্রমাণীকরণ নীতির <Source> উপাদানে নির্দিষ্ট করা Base64 এনকোডেড স্ট্রিং ধারণকারী ভেরিয়েবলে একটি বৈধ মান না থাকে।

উদাহরণস্বরূপ, এই ত্রুটিটি ঘটে যদি বেসিক প্রমাণীকরণ নীতির <Source> উপাদানে নির্দিষ্ট করা ভেরিয়েবলটির একটি বৈধ বেস64 এনকোডেড স্ট্রিং না থাকে।

রোগ নির্ণয়

  1. বেসিক প্রমাণীকরণ নীতিতে <Source> উপাদানটির জন্য ব্যবহৃত ভেরিয়েবলটি সনাক্ত করুন। আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানটিতে এই তথ্যটি খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত faultstring, <Source> উপাদানের জন্য ব্যবহৃত ভেরিয়েবলটি হল request.header.Authorization :

    "faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
    
  2. নির্দিষ্ট API প্রক্সিতে সমস্ত মৌলিক প্রমাণীকরণ নীতি পরীক্ষা করুন যেখানে ব্যর্থতা ঘটেছে। এক বা একাধিক মৌলিক প্রমাণীকরণ নীতি থাকতে পারে। নির্দিষ্ট মৌলিক প্রমাণীকরণ নীতি (ies) সনাক্ত করুন যেখানে <Source> উপাদানে নির্দিষ্ট ভেরিয়েবলটি ফল্ট স্ট্রিং-এ চিহ্নিত পরিবর্তনশীল নামের সাথে মেলে (উপরের ধাপ #1)।

    উদাহরণস্বরূপ, নিম্নলিখিত নীতিটি <Source> উপাদানটিকে request.header.Authorization নামের একটি ভেরিয়েবলে সেট করে, যা faultstring -এ যা আছে তার সাথে মেলে:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <BasicAuthentication name="DecodeBaseAuthHeaders">
        <DisplayName>Decode Basic Authentication Header</DisplayName>
        <Operation>Decode</Operation>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <User ref="request.header.username"/>
        <Password ref="request.header.password"/>
        <Source>request.header.Authorization</Source>
    </BasicAuthentication>
    
  3. যদি <Source> উপাদানে নির্দিষ্ট ভেরিয়েবলে সংরক্ষিত মান একটি বৈধ বেস64 এনকোডেড স্ট্রিং না হয়, তাহলে যে ত্রুটি জন্য কারণ.

    উপরে দেখানো বেসিক অথেন্টিকেশন নীতির উদাহরণে, ভেরিয়েবল request.header.Authorization যেটি ক্লায়েন্ট দ্বারা হেডার হিসেবে পাঠানো হয়েছিল তা নিচের মত অবৈধ ছিল:

    curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic 23435"

    যেহেতু ভেরিয়েবল request.header.Authorization এর একটি অবৈধ Base64 এনকোডেড স্ট্রিং " 23435" আছে, আপনি ত্রুটি কোড পাবেন:

    steps.basicauthentication.InvalidBasicAuthenticationSource

রেজোলিউশন

নিশ্চিত করুন যে বেসিক প্রমাণীকরণ নীতিতে <Source> উপাদানের জন্য নির্দিষ্ট করা পরিবর্তনশীলটির একটি বৈধ বেস64 এনকোড করা স্ট্রিং আছে।

উপরে আলোচিত নমুনা বেসিক প্রমাণীকরণ নীতির সাথে সমস্যাটি সমাধান করতে, নীচে দেখানো হিসাবে অনুমোদন শিরোনামে একটি বৈধ Base64 এনকোডেড স্ট্রিং পাস করে একটি API অনুরোধ করুন:

curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"

কারণ: হেডার বিকৃত/অবৈধ

বেসিক প্রমাণীকরণ নীতিতে পাস করা হেডারটি ত্রুটিপূর্ণ বা অবৈধ হলে এই ত্রুটি ঘটে।

উদাহরণস্বরূপ, এই ত্রুটিটি ঘটে যদি বেসিক অথেন্টিকেশন নীতিতে একটি ভেরিয়েবল থাকে যা request.header.Authorization হিসাবে নির্দিষ্ট করা থাকে৷ <Source> উপাদানে অনুমোদন এবং API অনুরোধের অংশ হিসাবে পাস করা হেডারটি ত্রুটিপূর্ণ/অবৈধ।

রোগ নির্ণয়

  1. বেসিক প্রমাণীকরণ নীতিতে <Source> উপাদানটির জন্য ব্যবহৃত ভেরিয়েবলটি সনাক্ত করুন। আপনি ত্রুটি প্রতিক্রিয়ার faultstring উপাদানটিতে এই তথ্যটি খুঁজে পেতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত ত্রুটিতে, <Source> উপাদানটির জন্য ব্যবহৃত ভেরিয়েবলটি হল request.header.Authorization :

    "faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
    
  2. নির্দিষ্ট API প্রক্সিতে সমস্ত মৌলিক প্রমাণীকরণ নীতি পরীক্ষা করুন যেখানে ব্যর্থতা ঘটেছে। এক বা একাধিক মৌলিক প্রমাণীকরণ নীতি থাকতে পারে। নির্দিষ্ট মৌলিক প্রমাণীকরণ নীতি (ies) সনাক্ত করুন যেখানে <Source> উপাদানে নির্দিষ্ট ভেরিয়েবলটি ফল্ট স্ট্রিং-এ চিহ্নিত পরিবর্তনশীল নামের সাথে মেলে (উপরের ধাপ #1)।

    উদাহরণস্বরূপ, নিম্নলিখিত নীতিটি <Source> উপাদানটিকে request.header.Authorization নামের একটি ভেরিয়েবলে সেট করে, যা faultstring -এ যা আছে তার সাথে মেলে:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <BasicAuthentication name="DecodeBaseAuthHeaders">
        <DisplayName>Decode Basic Authentication Header</DisplayName>
        <Operation>Decode</Operation>
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <User ref="request.header.username"/>
        <Password ref="request.header.password"/>
        <Source>request.header.Authorization</Source>
    </BasicAuthentication>
    
  3. যদি ভেরিয়েবলটি একটি হেডার হয় এবং ত্রুটিপূর্ণ বা অবৈধ হয়, অর্থাৎ, এটিতে প্রমাণীকরণের ধরন নেই বা যদি প্রমাণীকরণের ধরনটি "বেসিক" না হয়, তাহলে এটি ত্রুটির কারণ।

    অনুমোদনের শিরোনামটি এই ফর্মের:

    Authorization: <Authentication type> <credentials>
    

    একটি বিকৃত হেডার দুটি উপায়ে মৌলিক প্রমাণীকরণ নীতিতে পাস করা যেতে পারে:

    উদাহরণ 1 : হেডারে কোনো প্রমাণীকরণের ধরন নেই:

    curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: YWthc2g6MTIz"

    উপরের উদাহরণে, অনুমোদন হেডারে প্রমাণীকরণের ধরন নেই। এই শিরোনামটি উপরে দেখানো বেসিক প্রমাণীকরণ নীতিতে পাস করা হলে, আপনি ত্রুটি কোড পাবেন:

    steps.basicauthentication.InvalidBasicAuthenticationSource
    

    উদাহরণ 2 : প্রমাণীকরণের ধরন "বেসিক" টাইপের নয়:

    curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"

    উপরের উদাহরণে, অনুমোদন শিরোনামে "বেসিক" এর প্রমাণীকরণ প্রকার নেই। উপরে দেখানো বেসিক প্রমাণীকরণ নীতিতে এটি পাস করা হলে, আপনি ত্রুটি কোড পাবেন:

    steps.basicauthentication.InvalidBasicAuthenticationSource
    

    একইভাবে, এই ত্রুটিটিও ঘটতে পারে যদি প্রমাণীকরণের ধরন যেমন Bearer, Digest Auth, ইত্যাদি ব্যবহার করা হয় অথরাইজেশন হেডারে।

রেজোলিউশন

নিশ্চিত করুন যে শিরোনামটিতে মৌলিক প্রমাণীকরণ নীতিতে ইনপুটটি পাস করা হয়েছে তার প্রমাণীকরণের ধরন রয়েছে এবং এটি "বেসিক" টাইপের।

উপরে আলোচিত নমুনা বেসিক প্রমাণীকরণ নীতির সাথে সমস্যাটি সমাধান করতে, নীচে দেখানো হিসাবে অনুমোদন শিরোনামে "বেসিক" প্রমাণীকরণ প্রকারের সাথে একটি বৈধ Base64 এনকোডেড স্ট্রিং পাস করে একটি API অনুরোধ করুন:

curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"