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

شما در حال مشاهده اسناد 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">

The following table describes attributes that are common to all policy parent elements:

Attribute Description Default Presence
name

The internal name of the policy. The value of the name attribute can contain letters, numbers, spaces, hyphens, underscores, and periods. This value cannot exceed 255 characters.

Optionally, use the <DisplayName> element to label the policy in the management UI proxy editor with a different, natural-language name.

N/A Required
continueOnError

Set to false to return an error when a policy fails. This is expected behavior for most policies.

Set to true to have flow execution continue even after a policy fails.

false Optional
enabled

Set to true to enforce the policy.

Set to false to turn off the policy. The policy will not be enforced even if it remains attached to a flow.

true Optional
async

This attribute is deprecated.

false Deprecated

<DisplayName> element

Use in addition to the name attribute to label the policy in the management UI proxy editor with a different, natural-language name.

<DisplayName>Policy Display Name</DisplayName>
Default

N/A

If you omit this element, the value of the policy's name attribute is used.

Presence Optional
Type String

عنصر <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>

طرحواره ها

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

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