تحديد مشاكل وقت تشغيل سياسة المصادقة الأساسية وحلّها

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

UnresolvedVariable

رمز الخطأ

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

السبب

يحدث هذا الخطأ إذا كان المتغير الذي يحتوي على سلسلة Base64 المشفرة المحددة في العنصر <Source> في سياسة BasicAuth إما:

  • خارج النطاق (غير متاحة في المسار المحدّد الذي يتم فيه تنفيذ السياسة)
  • لا يمكن حلها (غير محددة)

على سبيل المثال، يحدث هذا الخطأ إذا كانت سياسة BasicAuth تتضمن متغيّرًا محدّدًا كـ request.header.Authorization في العنصر <Source>، ولكن لا يتم تمرير رأس التفويض كجزء من طلب البيانات من واجهة برمجة التطبيقات.

التشخيص

  1. حدِّد المتغيّر المستخدَم للعنصر <Source> في سياسة BasicAuth. يمكنك العثور على هذه المعلومات في العنصر faultstring ضمن استجابة الخطأ. على سبيل المثال، في faultstring, التالية، يكون المتغيّر المستخدَم للعنصر <Source> هو request.header.Authorization:

    "faultstring": "Unresolved variable : request.header.Authorization"
    
  2. افحص جميع سياسات BasicAuth في الخادم الوكيل لواجهة برمجة التطبيقات المحدَّد الذي حدث به الخطأ. قد تكون هناك سياسة أساسية أو أكثر من سياسات المصادقة الأساسية. حدِّد سياسة أو سياسات BasicAuth المحددة التي يتطابق فيها المتغيّر المحدَّد في العنصر <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. حدِّد ما إذا كان المتغيّر محدّدًا ومتاحًا في التدفق الذي يتم فيه تنفيذ سياسة BasicAuth.

  4. إذا كان المتغير إما:

    1. خارج النطاق (غير متاحة في المسار المحدّد الذي يتم فيه تنفيذ السياسة)
    2. لا يمكن حلها (غير محددة)

    بالتالي يكون هذا هو سبب الخطأ.

    في مثال سياسة Basicالمصادقة الموضح أعلاه، لم يتم تمرير المتغير request.header.Authorization كجزء من الطلب. ويعني ذلك أنّه تم تقديم طلب البيانات من واجهة برمجة التطبيقات بدون عنوان التفويض كما هو موضّح أدناه:

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

    نظرًا لأن المتغير المستخدَم في سياسة BasicAuth غير متاح، ستتلقى رمز الخطأ:

    steps.basicauthentication.UnresolvedVariable
    

درجة الدقّة

يُرجى التأكُّد من تحديد المتغيّر المستخدَم في سياسة BasicAuth أو تمريره كمدخلات وتوفيره في التدفق الذي يتم فيه تنفيذ السياسة.

لإصلاح المشكلة المتعلقة بنموذج سياسة Basicالمصادقة الذي تمت مناقشته أعلاه، يمكنك تقديم طلب بيانات من واجهة برمجة التطبيقات كما هو موضّح أدناه:

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

InvalidBasicAuthenticationSource

رمز الخطأ

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

الأسباب المحتملة

الأسباب المحتملة لهذا الخطأ هي:

السبب الوصف
متغيّر المصدر غير صالح متغير مصدر الإدخال لسياسة BasicAuth ليس سلسلة ترميز Base64 صالحة.
العنوان غير صالح العنوان الذي يحتوي على سلسلة Base64 المشفرة التي تم تمريرها إلى سياسة BasicAuth غير صحيح.

السبب: متغيّر المصدر غير صالح

يحدث هذا الخطأ إذا كان المتغير الذي يحتوي على سلسلة Base64 المشفرة المحددة في العنصر <Source> في سياسة BasicAuth لا يحتوي على قيمة صالحة.

على سبيل المثال، يحدث هذا الخطأ إذا كان المتغيّر المحدّد في العنصر <Source> في سياسة BasicAuth لا يحتوي على سلسلة Base64 مرمّزة صالحة.

التشخيص

  1. حدِّد المتغيّر المستخدَم للعنصر <Source> في سياسة BasicAuth. يمكنك العثور على هذه المعلومات في العنصر faultstring ضمن استجابة الخطأ. على سبيل المثال، في faultstring, التالية، يكون المتغيّر المستخدَم للعنصر <Source> هو request.header.Authorization:

    "faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
    
  2. افحص جميع سياسات BasicAuth في الخادم الوكيل لواجهة برمجة التطبيقات المحدَّد الذي حدث به الخطأ. قد تكون هناك سياسة أساسية أو أكثر من سياسات المصادقة الأساسية. تحديد سياسة (سياسات) BasicAuth المحددة التي يتطابق فيها المتغيّر المحدَّد في العنصر <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> ليست سلسلة Base64 مرمّزة صالحة، يكون هذا هو سبب الخطأ.

    في مثال سياسة BasicSecurity الموضَّح أعلاه، كان المتغيّر request.header.Authorization الذي أرسله العميل كعنوان غير صالح كما هو موضّح أدناه:

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

    بما أنّ المتغيّر request.header.Authorizationيحتوي على سلسلة Base64 مرمّزة غير صالحة "23435""، ستتلقى رمز الخطأ:

    steps.basicauthentication.InvalidBasicAuthenticationSource

درجة الدقّة

تأكَّد من أنّ المتغيّر المحدّد للعنصر <Source> في سياسة BasicAUTH يتضمّن سلسلة Base64 مرمّزة صالحة.

لإصلاح المشكلة المتعلقة بنموذج سياسة BasicAuth المشار إليه أعلاه، يمكنك تقديم طلب بيانات من واجهة برمجة التطبيقات من خلال تمرير سلسلة Base64 مرمّزة صالحة في عنوان "التفويض" كما هو موضّح أدناه:

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

السبب: العنوان مشوه/غير صالح

يحدث هذا الخطأ إذا كان العنوان الذي تم تمريره إلى سياسة BasicAuth غير صحيح أو غير صالح.

على سبيل المثال، يحدث هذا الخطأ إذا كانت سياسة BasicAuth تضم متغيّرًا محدّدًا مثل request.header.Authorization في العنصر <Source> وكان العنوان الذي تم تمريره كجزء من طلب واجهة برمجة التطبيقات مكتوبًا بصيغة غير صحيحة أو غير صالح.

التشخيص

  1. حدِّد المتغيّر المستخدَم للعنصر <Source> في سياسة BasicAuth. يمكنك العثور على هذه المعلومات في العنصر faultstring ضمن استجابة الخطأ. على سبيل المثال، في الخطأ التالي، يكون المتغيّر المستخدَم للعنصر <Source> هو request.header.Authorization:

    "faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
    
  2. افحص جميع سياسات BasicAuth في الخادم الوكيل لواجهة برمجة التطبيقات المحدَّد الذي حدث به الخطأ. قد تكون هناك سياسة أساسية أو أكثر من سياسات المصادقة الأساسية. تحديد سياسة (سياسات) BasicAuth المحددة التي يتطابق فيها المتغيّر المحدَّد في العنصر <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>
    

    يمكن تمرير رأس مكتوب بشكلٍ غير صحيح إلى سياسة BasicAuth بطريقتين:

    مثال 1: عدم توفّر نوع مصادقة في العنوان:

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

    في المثال أعلاه، لا يحتوي عنوان "التفويض" على نوع المصادقة. إذا تم تمرير هذا الرأس إلى سياسة BasicAuth الموضح أعلاه، ستتلقى رمز الخطأ:

    steps.basicauthentication.InvalidBasicAuthenticationSource
    

    مثال 2: نوع المصادقة ليس من النوع "أساسي":

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

    في المثال أعلاه، لا يحتوي عنوان التفويض على نوع المصادقة "أساسية". إذا تم تمرير هذا إلى سياسة Basicمصادقة الموضحة أعلاه، ستتلقى رمز الخطأ:

    steps.basicauthentication.InvalidBasicAuthenticationSource
    

    وبالمثل، يمكن أن يحدث هذا الخطأ أيضًا إذا تم استخدام نوع المصادقة، مثل الحامل أو تفويض الملخص أو غير ذلك في عنوان التفويض.

درجة الدقّة

عليك التأكُّد من أن الرأس الذي يتم فيه تمرير الإدخال إلى سياسة BasicAuth يحتوي على نوع المصادقة، ومن النوع "أساسي".

لحل المشكلة المتعلقة بنموذج سياسة BasicAuth المشار إليه أعلاه، يمكنك تقديم طلب بيانات من واجهة برمجة التطبيقات من خلال تمرير سلسلة Base64 مرمّزة صالحة من نوع المصادقة "الأساسية" في عنوان "التفويض" كما هو موضّح أدناه:

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