خط مشی احراز هویت اولیه

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

چی

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

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

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

ویدئو: این ویدئو نحوه رمزگشایی نام کاربری و رمز عبور کدگذاری شده با base64 را با استفاده از خط مشی احراز هویت اولیه نشان می دهد.

نمونه ها

رمزگذاری خروجی

<BasicAuthentication name="ApplyBasicAuthHeader">
   <DisplayName>ApplyBasicAuthHeader</DisplayName>
   <Operation>Encode</Operation>
   <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
   <User ref="BasicAuth.credentials.username" />
   <Password ref="BasicAuth.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 می نویسد.


درباره سیاست احراز هویت اولیه

این سیاست دارای دو حالت عملیاتی است:

  • Encode : Base64 نام کاربری و رمز عبور ذخیره شده در متغیرها را رمزگذاری می کند
  • رمزگشایی : نام کاربری و رمز عبور را از یک رشته کدگذاری شده 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="request.queryparam.username" />
   <Password ref="request.queryparam.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>
پیش فرض: N/A
حضور: مورد نیاز
نوع:

رشته

مقادیر معتبر عبارتند از:

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

عنصر <IgnoreUnresolvedVariables>

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

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

بولی

عنصر <کاربر>

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

N/A

صفات

صفت توضیحات پیش فرض حضور
رجوع کنید

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

N/A مورد نیاز

عنصر <گذرواژه>

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

N/A

صفات

صفت توضیحات پیش فرض حضور
رجوع کنید

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

N/A مورد نیاز

عنصر <AssignTo>

متغیر هدف را برای تنظیم با مقدار رمزگذاری شده یا رمزگشایی شده ایجاد شده توسط این خط مشی مشخص می کند.

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

<AssignTo createNew="false">request.header.Authorization</AssignTo>
پیش فرض: N/A
حضور: مورد نیاز
نوع:

رشته

صفات

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

وقتی "نادرست" است، انتساب به متغیر تنها در صورتی اتفاق می افتد که متغیر در حال حاضر تنظیم نشده باشد (تهی).

وقتی "درست" باشد، انتساب به متغیر همیشه اتفاق می افتد.

شما معمولاً این ویژگی را روی "false" (پیش فرض) تنظیم می کنید.

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

عنصر <منبع>

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

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

N/A

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

متغیر جریان زیر در صورت شکست خط مشی تنظیم می شود:

  • BasicAuthentication.{policy_name}.failed (با مقدار true)

مرجع خطا

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle errors. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.basicauthentication.InvalidBasicAuthenticationSource 500 On a decode when the incoming Base64 encoded string does not contain a valid value or the header is malformed (e.g., does not start with "Basic").
steps.basicauthentication.UnresolvedVariable 500 The required source variables for the decode or encode are not present. This error can only occur if IgnoreUnresolvedVariables is false.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Occurs when Fix
UserNameRequired The <User> element must be present for the named operation.
PasswordRequired The <Password> element must be present for the named operation.
AssignToRequired The <AssignTo> element must be present for the named operation.
SourceRequired The <Source> element must be present for the named operation.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "UnresolvedVariable"
BasicAuthentication.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. BasicAuthentication.BA-Authenticate.failed = true

Example error response

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

Example fault rule

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

طرحواره ها

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

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