أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
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> من سياسة BasicAuthentication أحد الخيارَين التاليَين:
- خارج النطاق (غير متوفّر في المسار المحدّد الذي يتم فيه تنفيذ السياسة)
- لا يمكن حلّها (لم يتم تحديدها)
على سبيل المثال، يحدث هذا الخطأ إذا كانت سياسة BasicAuthentication تتضمّن متغيّرًا محدّدًا على النحوrequest.header.Authorization في العنصر<Source>، ولكن لم يتم تمرير عنوان Authorization كجزء من طلب بيانات من واجهة برمجة التطبيقات.
التشخيص
تحديد المتغيّر المستخدَم لعنصر
<Source>في سياسة BasicAuthentication يمكنك العثور على هذه المعلومات في العنصرfaultstringلردّ الخطأ. على سبيل المثال، فيfaultstring,التالي، يكون المتغيّر المستخدَم للعنصر<Source>هوrequest.header.Authorization:"faultstring": "Unresolved variable : request.header.Authorization"افحص جميع سياسات BasicAuthentication في خادم وكيل واجهة برمجة التطبيقات المحدّد الذي حدث فيه الخطأ. يمكن أن تكون هناك سياسة BasicAuthentication واحدة أو أكثر. حدِّد سياسة أو سياسات BasicAuthentication المحدّدة التي يتطابق فيها المتغيّر المحدّد في العنصر
<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>تحديد ما إذا كان المتغير محدّدًا ومتاحًا في التدفق الذي يتم فيه تنفيذ سياسة BasicAuthentication
إذا كان المتغير إما:
- خارج النطاق (غير متوفّر في المسار المحدّد الذي يتم فيه تنفيذ السياسة)
- لا يمكن حلّها (لم يتم تحديدها)
إذًا هذا هو سبب الخطأ.
في مثال سياسة BasicAuthentication الموضّح أعلاه، لم يتم تمرير المتغيّر
request.header.Authorizationكجزء من الطلب. أي أنّ طلب بيانات من واجهة برمجة التطبيقات تم إجراؤه بدون عنوان التفويض كما هو موضّح أدناه:curl -v "http://org-env.apigee.net/basicauth"
بما أنّ المتغيّر المستخدَم في سياسة BasicAuthentication غير متاح، سيظهر لك رمز الخطأ التالي:
steps.basicauthentication.UnresolvedVariable
الدقة
تأكَّد من تحديد المتغيّر المستخدَم في سياسة BasicAuthentication أو تمريره كإدخال وتوفّره في التدفق الذي يتم فيه تنفيذ السياسة.
لحلّ المشكلة المتعلّقة بسياسة BasicAuthentication النموذجية الموضّحة أعلاه، أرسِل طلب بيانات من واجهة برمجة التطبيقات كما هو موضّح أدناه:
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"
}
}
}
الأسباب المحتملة
في ما يلي الأسباب المحتملة لهذا الخطأ:
| السبب | الوصف |
|---|---|
| متغيّر المصدر غير صالح | متغيّر مصدر الإدخال في سياسة BasicAuthentication ليس سلسلة صالحة بترميز Base64. |
| العنوان مكتوب بشكلٍ غير صحيح | عنوان الطلب الذي يحتوي على السلسلة المرمّزة باستخدام Base64 والتي تم تمريرها إلى سياسة BasicAuthentication غير مكتمل. |
السبب: متغيّر المصدر غير صالح
يحدث هذا الخطأ إذا كان المتغيّر الذي يحتوي على السلسلة بترميز Base64 المحدّدة في العنصر <Source> من سياسة BasicAuthentication لا يحتوي على قيمة صالحة.
على سبيل المثال، يحدث هذا الخطأ إذا لم يكن المتغير المحدّد في العنصر<Source> من سياسة BasicAuthentication يحتوي على سلسلة صالحة بترميز Base64.
التشخيص
تحديد المتغيّر المستخدَم لعنصر
<Source>في سياسة BasicAuthentication يمكنك العثور على هذه المعلومات في العنصرfaultstringلردّ الخطأ. على سبيل المثال، فيfaultstring,التالي، يكون المتغيّر المستخدَم للعنصر<Source>هوrequest.header.Authorization:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"افحص جميع سياسات BasicAuthentication في خادم وكيل واجهة برمجة التطبيقات المحدّد الذي حدث فيه الخطأ. يمكن أن تكون هناك سياسة BasicAuthentication واحدة أو أكثر. حدِّد سياسات BasicAuthentication المحدّدة التي يتطابق فيها المتغيّر المحدّد في العنصر
<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>إذا لم تكن القيمة المخزّنة في المتغيّر المحدّد في العنصر
<Source>سلسلة صالحة بترميز Base64، سيكونذلك هو سبب الخطأ.في مثال سياسة BasicAuthentication الموضّح أعلاه، كان المتغيّر
request.header.Authorizationالذي أرسله العميل كعنوان غير صالح كما هو موضّح أدناه:curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic 23435"
بما أنّ المتغيّر
request.header.Authorizationيحتوي على سلسلة غير صالحة بترميز Base64 "23435"، سيظهر لك رمز الخطأ التالي:steps.basicauthentication.InvalidBasicAuthenticationSource
الدقة
تأكَّد من أنّ المتغيّر المحدّد للعنصر <Source> في سياسة BasicAuthentication يحتوي على سلسلة صالحة بترميز Base64.
لحلّ المشكلة المتعلّقة بسياسة BasicAuthentication النموذجية الموضّحة أعلاه، أرسِل طلب بيانات من واجهة برمجة التطبيقات من خلال تمرير سلسلة صالحة بترميز Base64 في عنوان Authorization كما هو موضّح أدناه:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
السبب: العنوان مكتوب بشكلٍ غير صحيح/غير صالح
يحدث هذا الخطأ إذا كان العنوان الذي تم تمريره إلى سياسة BasicAuthentication منسَّقًا بشكلٍ غير صحيح أو غير صالح.
على سبيل المثال، يحدث هذا الخطأ إذا كانت سياسة BasicAuthentication تتضمّن متغيّرًا محدّدًا على أنّهrequest.header.Authorization في العنصر<Source> وكان العنوان الذي تم تمريره كجزء من طلب بيانات من واجهة برمجة التطبيقات غير صالح أو مشوّه.
التشخيص
تحديد المتغيّر المستخدَم لعنصر
<Source>في سياسة BasicAuthentication يمكنك العثور على هذه المعلومات في العنصرfaultstringلردّ الخطأ. على سبيل المثال، في الخطأ التالي، يكون المتغيّر المستخدَم للعنصر<Source>هوrequest.header.Authorization:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"افحص جميع سياسات BasicAuthentication في خادم وكيل واجهة برمجة التطبيقات المحدّد الذي حدث فيه الخطأ. يمكن أن تكون هناك سياسة BasicAuthentication واحدة أو أكثر. حدِّد سياسات BasicAuthentication المحدّدة التي يتطابق فيها المتغيّر المحدّد في العنصر
<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>إذا كان المتغير عبارة عن عنوان غير صحيح أو غير صالح، أي لا يتضمّن نوع المصادقة أو إذا كان نوع المصادقة ليس "أساسي"، يكون ذلك هو سبب الخطأ.
يكون عنوان التفويض بهذا الشكل:
Authorization: <Authentication type> <credentials>يمكن تمرير عنوان مكتوب بشكلٍ غير صحيح إلى سياسة BasicAuthentication بطريقتَين:
المثال 1: عدم توفّر نوع المصادقة في العنوان:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: YWthc2g6MTIz"
في المثال أعلاه، لا يحتوي عنوان التفويض على نوع المصادقة. إذا تم تمرير هذا العنوان إلى سياسة BasicAuthentication الموضّحة أعلاه، ستتلقّى رمز الخطأ:
steps.basicauthentication.InvalidBasicAuthenticationSourceالمثال 2: نوع المصادقة ليس من النوع "أساسي":
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
في المثال أعلاه، لا يحتوي عنوان Authorization على نوع المصادقة "Basic". إذا تم تمرير هذا الرمز إلى سياسة BasicAuthentication الموضّحة أعلاه، سيظهر لك رمز الخطأ:
steps.basicauthentication.InvalidBasicAuthenticationSourceوبالمثل، يمكن أن يحدث هذا الخطأ أيضًا إذا تم استخدام نوع المصادقة، مثل Bearer وDigest Auth وما إلى ذلك، في عنوان التفويض.
الدقة
تأكَّد من أنّ العنوان الذي يتم فيه تمرير الإدخال إلى سياسة BasicAuthentication يتضمّن نوع المصادقة وهو من النوع "Basic".
لحلّ المشكلة في سياسة BasicAuthentication النموذجية الموضّحة أعلاه، أرسِل طلب بيانات من واجهة برمجة التطبيقات عن طريق تمرير سلسلة صالحة مرمّزة باستخدام Base64 مع نوع المصادقة "Basic" في عنوان Authorization كما هو موضّح أدناه:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"