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

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

المزايا

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

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

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>

في نموذج السياسة هذا، تفكك السياسة ترميز اسم المستخدم وكلمة المرور من عنوان HTTP يتضمّن Authorization، على النحو الذي يحدّده العنصر &lt;Source&gt;. The 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>

&lt;BasicAuthentication&gt; السمات

<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 للسياسة على النحو التالي: استخدام البيانات المختلفة.

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

&lt;Operation&gt; عنصر

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

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

سلسلة.

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

  • ترميز
  • Decode

&lt;IgnoreUnresolvedVariables&gt; عنصر

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

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

منطقي

&lt;User&gt; عنصر

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

لا ينطبق

السمات

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

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

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

&lt;Password&gt; عنصر

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

لا ينطبق

السمات

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

يشير هذا المصطلح إلى المتغيّر الذي تقرأ منه السياسة كلمة المرور (التشفير) أو تكتبها بشكل ديناميكي. كلمة المرور (فك التشفير).

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

&lt;AssignTo&gt; عنصر

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

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

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

سلسلة

السمات

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

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

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

أنت تعين عادةً هذه السمة على "false" (الخيار الافتراضي).

خطأ اختياري

&lt;Source&gt; عنصر

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

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

لا ينطبق

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

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

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

مرجع الخطأ

يصف هذا القسم رموز الخطأ ورسائل الخطأ التي يتم عرضها ومتغيرات الأخطاء التي تم ضبطها من خلال 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>

المخططات

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

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