خط‌مشی BasicAuthentication

درحال مشاهده اسناد Apigee Edge هستید.
به اسناد Apigee X بروید.
اطلاعات

چه

به شما امکان می‌دهد از اصالت‌سنجی پایه سبک‌وزن برای امنیت مایل آخر استفاده کنید. این خط‌مشی نام کاربری و گذرواژه را می‌گیرد، آن‌ها را با Base64 کدبندی می‌کند، و مقدار حاصل را در متغیری می‌نویسد. مقدار حاصل در قالب Basic Base64EncodedString است. معمولاً این مقدار را در سرصفحه HTTP، مثل سرصفحه Authorization، می‌نویسید.

این خط‌مشی همچنین به شما امکان می‌دهد اطلاعات اعتباری ذخیره‌شده در رشته کدبندی‌شده Base64 را به نام کاربری و گذرواژه رمزگشایی کنید.

ویدیو: این ویدیو نحوه کدبندی base64 نام کاربری و گذرواژه را بااستفاده از خط‌مشی «احراز هویت پایه» نشان می‌دهد.

ویدیو: این ویدیو نحوه رمزگشایی نام کاربری و گذرواژه کدبندی‌شده با ۶۴ پایه را بااستفاده از خط‌مشی «احراز هویت پایه» نشان می‌دهد.

نمونه‌ها

کدبندی خروجی

<BasicAuthentication name="ApplyBasicAuthHeader">
   <DisplayName>ApplyBasicAuthHeader</DisplayName>
   <Operation>Encode</Operation>
   <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
   <User ref="credentials.username" />
   <Password ref="credentials.password" />
   <AssignTo createNew="false">request.header.Authorization</AssignTo>
</BasicAuthentication>

در پیکربندی خط‌مشی نمونه در بالا، نام کاربری و گذرواژه برای کدبندی از متغیرهای مشخص‌شده توسط ویژگی‌های ref در عناصر <User> و <Password> استخراج می‌شوند. متغیرها باید قبل‌از اجرای این خط‌مشی تنظیم شوند. معمولاً متغیرها با مقادیری که از نقشه کلید/مقدار خوانده می‌شوند پر می‌شوند. نقشه مقدار کلید خط‌مشی عملیات را ببینید.

این پیکربندی منجر به سرایند HTTP به‌نام Authorization (مجوز) می‌شود، همان‌طور که عنصر <AssignTo> مشخص کرده است، به پیام درخواست خروجی که به سرور زیرینه ارسال می‌شود اضافه می‌شود:

Authorization: Basic TXlVc2VybmFtZTpNeVBhc3N3b3Jk

مقادیر <User> و <Password> با دونقطه به هم متصل می‌شوند و سپس با کدبندی Base64 کدبندی می‌شوند.

درنظر بگیرید که نقشه کلید/مقدار با ورودی زیر دارید:

{
  "encrypted" : true,
  "entry" : [ {
    "name" : "username",
    "value" : "MyUsername"
  }, {
    "name" : "password",
    "value" : "MyPassword"
  } ],
  "name" : "BasicAuthCredentials"
}
      

خط‌مشی‌های KeyValueMapOperations زیر را قبل‌از خط‌مشی BasicAuthentication پیوست کنید تا بتوانید مقادیر عناصر <User> و <Password> را از فروشگاه کلید/مقدار استخراج کنید و آن‌ها را در متغیرهای credentials.username و credentials.password درج کنید.

<KeyValueMapOperations name="getCredentials" mapIdentifier="BasicAuthCredentials">
  <Scope>apiproxy</Scope>
  <Get assignTo="credentials.username" index='1'>
    <Key>
      <Parameter>username</Parameter>
    </Key>
  </Get>
  <Get assignTo="credentials.password" index='1'>
    <Key>
      <Parameter>password</Parameter>
    </Key>
  </Get>
</KeyValueMapOperations>
      

کدگشایی ورودی

<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 HTTP، همان‌طور که عنصر <Source> مشخص کرده است، رمزگشایی می‌کند. رشته کدبندی‌شده Base64 باید به‌صورت Basic Base64EncodedString. باشد

این خط‌مشی نام کاربری رمزگشایی‌شده را در متغیر request.header.username و گذرواژه رمزگشایی‌شده را در متغیر request.header.password می‌نویسد.


درباره خط‌مشی «اصالت‌سنجی پایه»

این خط‌مشی دو حالت عملیاتی دارد:

  • کدبندی: نام کاربری و گذرواژه ذخیره‌شده در متغیرها را با Base64 کدبندی می‌کند
  • رمزگشایی: نام کاربری و گذرواژه را از یک رشته کدبندی‌شده پایه ۶۴تایی رمزگشایی می‌کند

نام کاربری و گذرواژه معمولاً در فروشگاه کلید/مقدار ذخیره می‌شوند و سپس در زمان اجرا از فروشگاه کلید/مقدار خوانده می‌شوند. برای جزئیات استفاده از فروشگاه کلید/مقدار، خط‌مشی عملیات نقشه مقدار کلید را ببینید.

مرجع عنصر

مرجع عنصر عناصر و مشخصه‌های خط‌مشی BasicAuthentication را توصیف می‌کند.

<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1">
   <DisplayName>Basic Authentication 1</DisplayName>
   <Operation>Encode</Operation>
   <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
   <User ref="credentials.username" />
   <Password ref="credentials.password" />
   <AssignTo createNew="false">request.header.Authorization</AssignTo>
   <Source>request.header.Authorization</Source> 
</BasicAuthentication>

مشخصه‌های <BasicAuthentication>

<BasicAuthentication async="false" continueOnError="false" enabled="true" name="Basic-Authentication-1">

جدول زیر ویژگی هایی را توصیف می کند که برای همه عناصر اصلی خط مشی مشترک هستند:

صفت توضیحات پیش فرض حضور
name

نام داخلی سیاست. مقدار مشخصه name می تواند شامل حروف، اعداد، فاصله، خط تیره، زیرخط و نقطه باشد. این مقدار نمی تواند بیش از 255 کاراکتر باشد.

در صورت تمایل، از عنصر <DisplayName> برای برچسب گذاری خط مشی در ویرایشگر پروکسی UI مدیریت با نامی به زبان طبیعی دیگر استفاده کنید.

N/A مورد نیاز
continueOnError

برای بازگرداندن خطا در صورت شکست خط مشی، روی false تنظیم کنید. این رفتار مورد انتظار برای اکثر سیاست ها است.

روی true تنظیم کنید تا اجرای جریان حتی پس از شکست خط مشی ادامه یابد.

نادرست اختیاری
enabled

برای اجرای خط مشی روی true تنظیم کنید.

برای خاموش کردن خط مشی، روی false تنظیم کنید. این سیاست حتی اگر به یک جریان وابسته باشد اجرا نخواهد شد.

درست است اختیاری
async

این ویژگی منسوخ شده است.

نادرست منسوخ شده است

عنصر <DisplayName>

علاوه بر ویژگی name برای برچسب‌گذاری خط‌مشی در ویرایشگر پروکسی رابط کاربری مدیریت با نامی متفاوت و به زبان طبیعی، از آن استفاده کنید.

<DisplayName>Policy Display Name</DisplayName>
پیش فرض

N/A

اگر این عنصر را حذف کنید، از مقدار ویژگی name خط مشی استفاده می شود.

حضور اختیاری
تایپ کنید رشته

عنصر <Operation>

تعیین می‌کند که آیا خط‌مشی اطلاعات اعتباری را با Base64 کدبندی یا کدگشایی می‌کند.

<Operation>Encode</Operation>
پیش‌فرض: موجود نیست
حضور: الزامی
نوع:

رشته.

مقادیر معتبر شامل موارد زیر است:

  • کدبندی کردن
  • رمزگشایی

عنصر <IgnoreUnresolvedVariables>

وقتی روی true تنظیم شود، اگر متغیری قابل‌حل نباشد، خط‌مشی خطا نمی‌دهد. وقتی در زمینه خط‌مشی «احراز هویت پایه» استفاده می‌شود، این تنظیم معمولاً روی false تنظیم می‌شود زیرا اگر نام کاربری یا گذرواژه در متغیرهای مشخص‌شده پیدا نشود، معمولاً بهتر است خطا صادر شود.

<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
پیش‌فرض: درست
حضور: اختیاری
نوع:

بولی

عنصر <User>

  • برای کدبندی، از عنصر <User> برای مشخص کردن متغیر حاوی نام کاربری استفاده کنید. مقادیر نام کاربری و گذرواژه قبل‌از کدبندی Base64 با دونقطه به‌هم متصل می‌شوند.
  • برای رمزگشایی، متغیری را که نام کاربری رمزگشایی‌شده در آن نوشته می‌شود مشخص کنید.
<User ref="credentials.username" /> 
پیش‌فرض: موجود نیست
حضور: الزامی
نوع:

موجود نیست

مشخصه‌ها

مشخصه شرح پیش‌فرض حضور
مرجع

متغیری که خط‌مشی به‌طور پویا نام کاربری را از آن می‌خواند (کدبندی) یا نام کاربری را در آن می‌نویسد (کدگشایی).

موجود نیست الزامی

عنصر <Password>

  • برای کدبندی، از عنصر <Password> برای مشخص کردن متغیر حاوی گذرواژه استفاده کنید.
  • برای رمزگشایی، متغیری را که گذرواژه رمزگشایی‌شده در آن نوشته می‌شود مشخص کنید.
<Password ref="credentials.password" />
پیش‌فرض: موجود نیست
حضور: الزامی
نوع:

موجود نیست

مشخصه‌ها

مشخصه شرح پیش‌فرض حضور
مرجع

متغیری که خط‌مشی به‌طور پویا گذرواژه را از آن می‌خواند (کدبندی) یا گذرواژه را در آن می‌نویسد (کدگشایی).

موجود نیست الزامی

عنصر <AssignTo>

برای عملیات Encode، متغیر هدفی را که باید با مقدار کدبندی‌شده تولیدشده توسط این خط‌مشی تنظیم شود مشخص می‌کند.

مثال زیر نشان می‌دهد که خط‌مشی باید سرصفحه پیام Authorization را روی مقدار تولیدشده تنظیم کند:

<AssignTo createNew="false">request.header.Authorization</AssignTo>
پیش‌فرض: موجود نیست
حضور: برای عملیات Encode الزامی است.
نوع:

رشته

مشخصه‌ها

مشخصه شرح پیش‌فرض حضور
createNew تعیین می‌کند که اگر متغیر ازقبل تنظیم شده باشد، آیا خط‌مشی باید متغیر را ملغی کند یا نه.

وقتی «false» باشد، تخصیص به متغیر فقط درصورتی انجام می‌شود که متغیر درحال‌حاضر تنظیم نشده باشد (تهی باشد).

وقتی «درست» باشد، تخصیص به متغیر همیشه انجام می‌شود.

معمولاً این مشخصه را روی «false» (پیش‌فرض) تنظیم می‌کنید.

نادرست اختیاری

عنصر <Source>

برای رمزگشایی، متغیری که حاوی رشته کدبندی‌شده Base64 است، در قالب Basic Base64EncodedString. برای مثال، request.header.Authorization را مشخص کنید که با سرصفحه مجوز مطابقت دارد.

<Source>request.header.Authorization</Source>
پیش‌فرض: موجود نیست
حضور: برای عملیات «رمزگشایی» الزامی است.
نوع:

موجود نیست

متغیرهای جریان

متغیر جاری زیر زمانی تنظیم می‌شود که خط‌مشی ناموفق باشد:

  • ‫BasicAuthentication.{policy_name}.failed (با مقدار درست)

مرجع خطا

این بخش کدهای خطا و پیام‌های خطایی را که برگردانده می‌شوند و متغیرهای خطایی را که Edge هنگام راه‌اندازی خطا در این خط‌مشی تنظیم می‌کند شرح می‌دهد. این اطلاعات برای زمانی که درحال توسعه قوانین خطا برای مدیریت خطاها هستید مهم است. برای کسب اطلاعات بیشتر، آنچه باید درباره خطاهای خط‌مشی بدانیدو رسیدگی به اشکالات را ببینید.

خطاهای زمان اجرا

این خطاها ممکن است هنگام اجرای خط‌مشی رخ دهند.

کد خطا وضعیت HTTP علت رفع اشکال
steps.basicauthentication.InvalidBasicAuthenticationSource ۵۰۰ در رمزگشایی، زمانی‌که رشته کدبندی‌شده Base64 ورودی مقدار معتبری نداشته باشد یا سرایند بدساخته باشد (برای نمونه، با «Basic» شروع نشود).
steps.basicauthentication.UnresolvedVariable ۵۰۰ متغیرهای منبع موردنیاز برای رمزگشایی یا کدبندی وجود ندارد. این خطا فقط درصورتی رخ می‌دهد که IgnoreUnresolvedVariables نادرست باشد.

خطاهای استقرار

این خطاها ممکن است زمانی رخ دهند که یک پراکسی حاوی این خط‌مشی را مستقر می‌کنید.

نام خطا وقتی رخ می‌دهد رفع اشکال
UserNameRequired عنصر <User> باید برای عملیات نام‌گذاری‌شده وجود داشته باشد.
PasswordRequired عنصر <Password> باید برای عملیات نام‌گذاری‌شده وجود داشته باشد.
AssignToRequired عنصر <AssignTo> باید برای عملیات نام‌گذاری‌شده وجود داشته باشد.
SourceRequired عنصر <Source> باید برای عملیات نام‌گذاری‌شده وجود داشته باشد.

متغیرهای خطا

این متغیرها زمانی تنظیم می‌شوند که خطای زمان اجرا رخ دهد. برای اطلاعات بیشتر، آنچه باید درباره خطاهای خط‌مشی بدانیدرا ببینید.

متغیر مکان مثال
fault.name="fault_name" ‫fault_name نام خطا است، همان‌طور که در جدول خطاهای زمان اجرا در بالا فهرست شده است. نام خطا آخرین بخش کد خطا است. fault.name Matches "UnresolvedVariable"
BasicAuthentication.policy_name.failed ‫policy_name نام مشخص‌شده کاربر برای خط‌مشی‌ای است که خطا را ایجاد کرده است. BasicAuthentication.BA-Authenticate.failed = true

نمونه پاسخ خطا

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

قانون خطای نمونه

<FaultRule name="Basic Authentication Faults">
    <Step>
        <Name>AM-UnresolvedVariable</Name>
        <Condition>(fault.name Matches "UnresolvedVariable") </Condition>
    </Step>
    <Step>
        <Name>AM-AuthFailedResponse</Name>
        <Condition>(fault.name = "InvalidBasicAuthenticationSource")</Condition>
    </Step>
    <Condition>(BasicAuthentication.BA-Authentication.failed = true) </Condition>
</FaultRule>

طرح‌واره‌ها

موضوعات مرتبط

خط‌مشی عملیات نقشه مقدار کلید