شما در حال مشاهده اسناد 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>
خط مشی BasicAuthentication یکی از این موارد باشد:
- خارج از محدوده (در جریان خاصی که سیاست در آن اجرا می شود موجود نیست)
- قابل حل نیست (تعریف نشده است)
به عنوان مثال، این خطا در صورتی رخ می دهد که خط مشی BasicAuthentication متغیری به عنوان request.header.Authorization
در عنصر <Source>
تعیین شده باشد، اما سرصفحه Authorization به عنوان بخشی از درخواست API ارسال نشود.
تشخیص
متغیر مورد استفاده برای عنصر
<Source>
در خط مشی BasicAuthentication را شناسایی کنید. شما می توانید این اطلاعات را در عنصرfaultstring
پاسخ خطا پیدا کنید. به عنوان مثال، درfaultstring,
متغیر مورد استفاده برای عنصر<Source>
request.header.Authorization
است:"faultstring": "Unresolved variable : request.header.Authorization"
تمام خط مشی های BasicAuthentication را در پروکسی API خاصی که در آن شکست رخ داده است، بررسی کنید. ممکن است یک یا چند خط مشی 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
به عنوان بخشی از درخواست ارسال نشد. یعنی درخواست API بدون هدر Authorization مطابق شکل زیر انجام شده است:curl -v "http://org-env.apigee.net/basicauth"
از آنجایی که متغیر مورد استفاده در خط مشی BasicAuthentication در دسترس نیست، کد خطا را دریافت می کنید:
steps.basicauthentication.UnresolvedVariable
قطعنامه
اطمینان حاصل کنید که متغیر مورد استفاده در خط مشی BasicAuthentication به عنوان ورودی تعریف یا ارسال شده است و در جریانی که این خط مشی اجرا می شود موجود است.
برای رفع مشکل با نمونه خط مشی احراز هویت پایه که در بالا مورد بحث قرار گرفت، یک درخواست API را مطابق شکل زیر انجام دهید:
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 را در پروکسی API خاصی که در آن شکست رخ داده است، بررسی کنید. ممکن است یک یا چند خط مشی 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 که در بالا توضیح داده شد، یک درخواست API با ارسال یک رشته رمزگذاری شده معتبر Base64 در سرصفحه Authorization مطابق شکل زیر ایجاد کنید:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"
علت: هدر نادرست است/نامعتبر است
اگر هدر ارسال شده به خط مشی BasicAuthentication نادرست یا نامعتبر باشد، این خطا رخ می دهد.
برای مثال، این خطا در صورتی رخ میدهد که خطمشی BasicAuthentication دارای متغیری باشد که بهعنوان request.header.Authorization
مشخص شده است. مجوز در عنصر <Source>
و هدر ارسال شده به عنوان بخشی از درخواست API نادرست/نامعتبر باشد.
تشخیص
متغیر مورد استفاده برای عنصر
<Source>
در خط مشی BasicAuthentication را شناسایی کنید. شما می توانید این اطلاعات را در عنصرfaultstring
پاسخ خطا پیدا کنید. به عنوان مثال، در خطای زیر، متغیر مورد استفاده برای عنصر<Source>
request.header.Authorization
است:"faultstring": "Source variable : request.header.Authorization for basic authentication decode policy is not valid"
تمام خط مشی های BasicAuthentication را در پروکسی API خاصی که در آن شکست رخ داده است، بررسی کنید. ممکن است یک یا چند خط مشی 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>
اگر متغیر یک هدر باشد و بدشکل یا نامعتبر باشد، یعنی نوع احراز هویت را نداشته باشد یا اگر نوع احراز هویت "Basic" نباشد، این دلیل خطا است.
سربرگ Authorization به این شکل است:
Authorization: <Authentication type> <credentials>
هدر ناقص را می توان به دو روش به خط مشی BasicAuthentication ارسال کرد:
مثال 1 : بدون نوع احراز هویت در هدر:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: YWthc2g6MTIz"
در مثال بالا، هدر Authorization نوع Authentication را ندارد. اگر این هدر به خط مشی BasicAuthentication نشان داده شده در بالا ارسال شود، کد خطا را دریافت می کنید:
steps.basicauthentication.InvalidBasicAuthenticationSource
مثال 2 : نوع احراز هویت از نوع "Basic" نیست:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: OAuth YWthc2g6MTIz"
در مثال بالا، هدر Authorization نوع Authentication "Basic" را ندارد. اگر این به خطمشی BasicAuthentication نشان داده شده در بالا منتقل شود، کد خطا را دریافت میکنید:
steps.basicauthentication.InvalidBasicAuthenticationSource
به طور مشابه، اگر از نوع Authentication مانند Bearer، Digest Auth و غیره در هدر Authorization استفاده شود، این خطا نیز می تواند رخ دهد.
قطعنامه
اطمینان حاصل کنید که هدری که در آن ورودی خطمشی BasicAuthentication ارسال میشود، از نوع Authentication و از نوع "Basic" باشد.
برای رفع مشکل با نمونه خط مشی احراز هویت پایه که در بالا توضیح داده شد، با ارسال یک رشته رمزگذاری شده معتبر Base64 با نوع احراز هویت "Basic" در سرصفحه Authorization همانطور که در زیر نشان داده شده است، یک درخواست API ایجاد کنید:
curl -v "http://org-env.apigee.net/basicauth" -H "Authorization: Basic YWthc2g6MTIz"