سياسة المصادقة الأساسية

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

الموضوع

يمكّنك من استخدام المصادقة الأساسية السهلة الاستخدام لتوفير الأمان من نقطة الانطلاق إلى مكان العمل. تستخدم السياسة اسم المستخدم وكلمة المرور، ويشفّرهما Base64 ويكتب القيمة الناتجة إلى متغيّر. وتكون القيمة الناتجة على النحو التالي Basic Base64EncodedString. تكتب هذه القيمة عادةً في عنوان HTTP، مثل عنوان التفويض.

تتيح لك السياسة أيضًا فك ترميز بيانات الاعتماد المخزّنة في سلسلة 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 باسم تفويض، كما هو محدَّد في العنصر <AssignTo>، حيث تتم إضافته إلى رسالة الطلب الصادر المُرسَلة إلى خادم الخلفية:

Authorization: Basic TXlVc2VybmFtZTpNeVBhc3N3b3Jk

يتم ربط القيمتين <User> و<Password> مع نقطتين قبل ترميز Base64.

ضع في اعتبارك أن لديك خريطة مفتاح/قيمة مع الإدخال التالي:

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

أرفِق سياسات KeyValueMapOperations التالية قبل سياسة Basicمصادقة حتى تتمكن من استخراج قيم عناصر <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>

في نموذج السياسة هذا، تفك السياسة ترميز اسم المستخدم وكلمة المرور من عنوان HTTP Authorization على النحو المحدّد في عنصر <Source>. يجب أن تكون سلسلة Base64 المشفرة بالشكل Basic Base64EncodedString.

تكتب السياسة اسم المستخدم الذي تم فك ترميزه في المتغيّر request.header.username وكلمة المرور التي تم فك ترميزها إلى المتغيّر request.header.password.


معلومات عن سياسة المصادقة الأساسية

تتضمّن السياسة وضعَين للعمل:

  • التشفير: يشفّر Base64 اسم مستخدم وكلمة مرور مخزَّنَين في المتغيّرات.
  • فك الترميز: لفك ترميز اسم المستخدم وكلمة المرور من سلسلة Base64 مرمّزة

يتم عادةً تخزين اسم المستخدم وكلمة المرور في مخزن المفتاح/القيمة ثم قراءتهما من مخزن المفتاح/القيمة في وقت التشغيل. للحصول على تفاصيل حول استخدام مخزن المفتاح/القيمة، يُرجى الاطّلاع على سياسة عمليات ربط القيم الرئيسية.

مرجع العنصر

يصف مرجع العناصر عناصر وسمات سياسة BasicAuth.

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

سمات < BasicAuth>

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

يوضِّح الجدول التالي السمات الشائعة لجميع العناصر الرئيسية للسياسة:

السمة الوصف تلقائي التواجد في المنزل
name

الاسم الداخلي للسياسة وقد تحتوي قيمة السمة name على أحرف وأرقام ومسافات وواصلات وشرطات سفلية ونقاط. لا يمكن أن تتجاوز هذه القيمة 255 حرفًا.

ويمكنك اختياريًا استخدام العنصر <DisplayName> لتصنيف السياسة في محرِّر الخادم الوكيل لواجهة المستخدم الإدارية باستخدام اسم مختلف للغة طبيعية.

لا ينطبق مطلوبة
continueOnError

اضبط القيمة على false لعرض رسالة خطأ عند تعذُّر تنفيذ السياسة. وهو سلوك متوقّع لمعظم السياسات.

اضبط القيمة على true لمواصلة تنفيذ التدفق حتى بعد تعذُّر تنفيذ السياسة.

false إجراء اختياري
enabled

اضبط القيمة على true لفرض السياسة.

اضبط القيمة على false من أجل إيقاف السياسة. ولن يتم فرض السياسة حتى إذا ظلت مرتبطة بمسار.

صحيح إجراء اختياري
async

تم إيقاف هذه السمة نهائيًا.

false منهي العمل به

العنصر <DisplayName>

استخدِم هذه السمة بالإضافة إلى السمة name لتصنيف السياسة في محرِّر الخادم الوكيل لواجهة المستخدم الإدارية باستخدام اسم مختلف بلغة طبيعية.

<DisplayName>Policy Display Name</DisplayName>
تلقائي

لا ينطبق

إذا لم تستخدم هذا العنصر، سيتم استخدام قيمة السمة name الخاصة بالسياسة.

التواجد في المنزل إجراء اختياري
Type سلسلة

العنصر <Operation>

تحدِّد السياسة ما إذا كانت سياسة Base64 تعمل على ترميز بيانات الاعتماد أو فك ترميزها.

<Operation>Encode</Operation>
الخيار التلقائي: لا ينطبق
الحضور: مطلوبة
النوع:

سلسلة.

وتشمل القيم الصالحة ما يلي:

  • الترميز
  • Decode

عنصر <تجاهلUnresolvedVariables>

عند ضبط السياسة على true، لن تعرض السياسة أي خطأ إذا تعذّر حلّ المتغيّر. عند استخدام هذا الإعداد في سياق سياسة Basic Authenticator، يتم عادةً ضبط هذا الإعداد على false لأنه من المفيد بشكل عام عرض خطأ إذا تعذّر العثور على اسم المستخدم أو كلمة المرور في المتغيّرات المحددة.

<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
الخيار التلقائي: صحيح
الحضور: إجراء اختياري
النوع:

منطقي

عنصر <User>

  • بالنسبة إلى الترميز، استخدِم العنصر <User> لتحديد المتغيّر الذي يحتوي على اسم المستخدم. يتم ربط قيم اسم المستخدم وكلمة المرور بنقطتين قبل ترميز Base64.
  • لفك الترميز، حدِّد المتغيّر الذي تتم فيه كتابة اسم المستخدم الذي تم فك ترميزه.
<User ref="request.queryparam.username" /> 
الخيار التلقائي: لا ينطبق
الحضور: مطلوبة
النوع:

لا ينطبق

السمات

السمة الوصف تلقائي التواجد في المنزل
المرجع

تمثّل هذه السمة المتغيّر الذي تقرأ منه السياسة اسم المستخدم (الترميز) بشكل ديناميكي أو تكتب اسم المستخدم (فك الترميز).

لا ينطبق مطلوبة

عنصر <كلمة المرور>

  • بالنسبة إلى الترميز، استخدِم العنصر <Password> لتحديد المتغيّر الذي يحتوي على كلمة المرور.
  • لفك الترميز، حدِّد المتغيّر الذي تتم فيه كتابة كلمة المرور التي تم فك ترميزها.
<Password ref="request.queryparam.password" />
الخيار التلقائي: لا ينطبق
الحضور: مطلوبة
النوع:

لا ينطبق

السمات

السمة الوصف تلقائي التواجد في المنزل
المرجع

تمثّل هذه السمة المتغيّر الذي تقرأ منه السياسة كلمة المرور بشكل ديناميكي (ترميزًا) أو تكتب كلمة المرور (فك الترميز).

لا ينطبق مطلوبة

عنصر <AssignTo>

تحدّد هذه السمة المتغيّر المستهدف المطلوب ضبطه باستخدام القيمة المشفرة أو فك ترميزها التي تم إنشاؤها بواسطة هذه السياسة.

يشير المثال التالي إلى أنّه يجب على السياسة ضبط عنوان Authorization للرسالة على القيمة التي تم إنشاؤها:

<AssignTo createNew="false">request.header.Authorization</AssignTo>
الخيار التلقائي: لا ينطبق
الحضور: مطلوبة
النوع:

سلسلة

السمات

السمة الوصف تلقائي التواجد في المنزل
createNew تحدِّد السياسة ما إذا كان يجب استبدال المتغيّر في السياسة إذا سبق ضبطه.

عند "خطأ"، يتم تحديد المتغيّر فقط إذا لم يتم ضبط المتغيّر حاليًا (فارغ).

عندما تكون القيمة "true"، تحدث التعيين إلى المتغير دائمًا.

وتضبط هذه السمة عادةً على "خطأ" (الخيار التلقائي).

false إجراء اختياري

عنصر <المصدر>

بالنسبة إلى فك الترميز، يكون المتغيّر الذي يحتوي على سلسلة Base64 المشفَّرة بالصيغة Basic Base64EncodedString. على سبيل المثال، حدِّد request.header.Authorization بما يتوافق مع عنوان التفويض.

<Source>request.header.Authorization</Source>
الخيار التلقائي: لا ينطبق
الحضور: مطلوب لعملية فك الترميز.
النوع:

لا ينطبق

متغيرات التدفق

يتم ضبط متغيّر التدفق التالي عند تعذُّر السياسة:

  • BasicAuthentication.{policy_name}.failed (بالقيمة true)

مرجع الخطأ

يصف هذا القسم رموز الأخطاء ورسائل الخطأ التي يتم عرضها ومتغيرات الأخطاء التي تضبطها Edge عندما تؤدي هذه السياسة إلى ظهور خطأ. هذه المعلومات مهمة لمعرفة ما إذا كنت تعمل على تطوير قواعد للأخطاء للتعامل مع الأخطاء. لمزيد من المعلومات، يمكنك الاطّلاع على المعلومات التي يجب معرفتها عن الأخطاء المتعلقة بالسياسات وأخطاء المعالجة.

أخطاء في وقت التشغيل

يمكن أن تحدث هذه الأخطاء عند تنفيذ السياسة.

رمز الخطأ رموز حالة HTTP السبب إصلاح
steps.basicauthentication.InvalidBasicAuthenticationSource 500 في عملية فك الترميز عندما لا تحتوي سلسلة Base64 المشفرة الواردة على قيمة صالحة أو يكون العنوان مكتوبًا بصيغة غير صحيحة (على سبيل المثال، لا تبدأ كلمة Base64 بكلمة أساسية).
steps.basicauthentication.UnresolvedVariable 500 لا توجد متغيرات المصدر المطلوبة لفك الترميز أو التشفير. ولا يمكن أن يحدث هذا الخطأ إلّا إذا كانت قيمة 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>

المخططات

مواضيع ذات صلة

سياسة عمليات "خريطة القيم الرئيسية"