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

أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
info

الأدوات المستخدمة

يتيح لك استخدام المصادقة الأساسية البسيطة لتوفير الأمان في المرحلة الأخيرة. تتلقّى السياسة اسم مستخدم وكلمة مرور، وتشفّرهما باستخدام 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.


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

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

  • الترميز: يُرمّز 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> لتصنيف السياسة محرر الخادم الوكيل لواجهة مستخدم الإدارة باسم مختلف بلغة طبيعية.

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

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

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

خطأ اختياري
enabled

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

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

صحيح اختياري
async

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

خطأ منهي العمل به

&lt;DisplayName&gt; عنصر

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

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

لا ينطبق

إذا لم تستخدم هذا العنصر، سيتم ضبط قيمة السمة name للسياسة على النحو التالي: استخدام البيانات المختلفة.

التواجد في المنزل اختياري
النوع سلسلة

عنصر <Operation>

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

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

سلسلة.

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

  • ترميز
  • Decode

عنصر <IgnoreUnresolvedVariables>

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

<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
القيمة التلقائية: صحيح
الظهور: اختياري
النوع:

منطقي

العنصر <User>

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

لا ينطبق

السمات

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

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

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

عنصر <Password>

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

لا ينطبق

السمات

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

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

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

العنصر <AssignTo>

بالنسبة إلى عملية Encode، تحدّد هذه السمة المتغيّر المستهدَف الذي سيتم ضبطه باستخدام القيمة المشفرة التي تم إنشاؤها بواسطة هذه السياسة.

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

<AssignTo createNew="false">request.header.Authorization</AssignTo>
القيمة التلقائية: لا ينطبق
الظهور: مطلوب لإجراء عملية Encode.
النوع:

سلسلة

السمات

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

عندما تكون القيمة "false"، لا يتم تعيين المتغير إلا إذا كان غير مضبوط حاليًا (قيمة فارغة).

عندما تكون القيمة "صحيح"، يتم دائمًا تعيين القيمة للمتغيّر.

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

خطأ اختياري

العنصر <Source>

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

<Source>request.header.Authorization</Source>
القيمة التلقائية: لا ينطبق
الظهور: مطلوب لعملية فك التشفير.
النوع:

لا ينطبق

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

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

  • BasicAuthentication.{policy_name}.failed (بقيمة "صحيح")

مرجع الخطأ

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

أخطاء بيئة التشغيل

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

رمز الخطأ رموز حالة HTTP السبب إصلاح
steps.basicauthentication.InvalidBasicAuthenticationSource 500 على عملية فك ترميز عندما لا تحتوي سلسلة 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>

المخططات

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

سياسة عمليات Key Value Map