أنت تعرض مستندات Apigee Edge.
انتقل إلى
مستندات Apigee X. معلومات
يحتسب رمز مصادقة الرسائل المستند إلى التجزئة (HMAC) ويتحقق منه. أحيانًا والمعروفة باسم رمز مصادقة الرسائل المشفرة أو التجزئة المشفرة، فإن بروتوكول HMAC يستخدم تجزئة مشفرة مثل SHA-1 أو SHA-224 أو SHA-256 أو SHA-384 أو SHA-512 أو MD-5، يتم تطبيقها على "رسالة"، إلى جانب المفتاح السري، لإنتاج رمز مصادقة أو توقيع على تلك الرسالة مصطلح "رسالة" هنا يشير إلى أي تدفق من وحدات البايت. كما يمكن لمرسل الرسالة أن يرسل أيضًا HMAC إلى المتلقي، ويمكن للمستلم استخدام بروتوكول HMAC لمصادقة الرسالة.
ولمعرفة المزيد من المعلومات عن دالة HMAC، راجِع القسم HMAC: التجزئة باستخدام المفاتيح لمصادقة الرسالة (mailto2104).
نماذج
إنشاء رمز مصادقة الرسائل المستندة إلى التجزئة (HMAC)
<HMAC name='HMAC-1'> <Algorithm>SHA256</Algorithm> <SecretKey ref='private.secretkey'/> <IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables> <!-- optional --> <!-- The "message" can include fixed and multiple variable parts, including newlines and static functions. Whitespace is significant. --> <Message>Fixed Part {a_variable} {timeFormatUTCMs(timeFormatString1,system.timestamp)} {nonce} </Message> <!-- default encoding is base64 --> <Output encoding='base16'>name_of_variable</Output> </HMAC>
التحقّق من مصادقة HMAC
<HMAC name='HMAC-1'> <Algorithm>SHA256</Algorithm> <SecretKey ref='private.secretkey'/> <IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables> <!-- optional --> <!-- The "message" can include fixed and multiple variable parts, including newlines and static functions. Whitespace is significant. --> <Message>Fixed Part {a_variable} {timeFormatUTCMs(timeFormatString1,system.timestamp)} {nonce} </Message> <!-- VerificationValue is optional. Include it to perform an HMAC check. --> <VerificationValue encoding='base16' ref='expected_hmac_value'/> <!-- default encoding is base64 --> <Output encoding='base16'>name_of_variable</Output> </HMAC>
تتم عملية حساب التوقيع والتحقق من هذا التوقيع بالطريقة نفسها الدفع. تحتسب سياسة HMAC رمز HMAC، ويمكنها اختياريًا التحقق من البيانات المحسوبة التوقيع مقابل قيمة متوقعة. العنصر الاختياري VerifyValue (في حال توفّره) توجّه السياسة للتحقق من القيمة المحسوبة مقابل قيمة معروفة أو معينة
مرجع عنصر لعنصر HMAC
يصف مرجع السياسة عناصر سياسة HMAC وسماتها.
السمات التي تطبيقها على عنصر المستوى الأعلى
<HMAC name="HMAC" continueOnError="false" enabled="true" async="false">
السمات التالية مشتركة بين جميع العناصر الرئيسية للسياسة.
السمة | الوصف | تلقائي | الحضور |
---|---|---|---|
الاسم |
الاسم الداخلي للسياسة. تقتصر الأحرف التي يمكنك استخدامها في الاسم على:
A-Z0-9._\-$ % ومع ذلك، تفرض واجهة مستخدم Apigee المزيد من
مثل الإزالة التلقائية للأحرف غير الأبجدية الرقمية.
يمكنك استخدام العنصر |
لا ينطبق | مطلوب |
continueOnError |
اضبط القيمة على false لعرض رسالة خطأ عند تعذُّر تنفيذ سياسة. هذا متوقّع
السلوك في معظم السياسات.
يمكنك ضبط القيمة على |
خطأ | اختياري |
مفعّلة |
اضبط القيمة على true لفرض السياسة.
ضبط على |
صحيح | اختياري |
غير متزامن | تم إيقاف هذه السمة نهائيًا. | خطأ | منهي العمل به |
<Algorithm>
<Algorithm>algorithm-name</Algorithm>
لتحديد خوارزمية التجزئة لحساب HMAC.
تلقائي | لا ينطبق |
الحضور | مطلوب |
النوع | سلسلة |
القيم الصالحة | "SHA-1 " و"SHA-224 " و"SHA-256 " و"SHA-384 "
SHA-512 وMD-5
تقبل إعدادات السياسة أسماء الخوارزمية بدون التفريق بين حالة الأحرف
مع أو بدون شرطة بين الأحرف والأرقام . على سبيل المثال، |
<DisplayName>
<DisplayName>Policy Display Name</DisplayName>
استخدِمه بالإضافة إلى سمة الاسم لتصنيف السياسة في أداة تعديل الخادم الوكيل لواجهة مستخدم Apigee. باسم آخر بلغة طبيعية
تلقائي | إذا لم تستخدم هذا العنصر، سيتم استخدام قيمة سمة اسم السياسة. |
الحضور | اختياري |
النوع | سلسلة |
<Message>
<Message>message_template_here</Message> or <Message ref='variable_here'/>
تُحدِّد حمولة الرسالة المطلوب توقيعها. يدعم إدخال هذا العنصر نماذج الرسائل (الاستبدال المتغير) للسماح بتضمين عناصر إضافية في وقت التشغيل، مثل الطوابع الزمنية والقيم المفقودة وقوائم العناصر أو الرؤوس أو المعلومات الأخرى. على سبيل المثال:
<Message>Fixed Part {a_variable} {timeFormatUTCMs(timeFormatString1,system.timestamp)} {nonce} </Message>
يمكن أن يتضمّن نموذج الرسالة أجزاءً ثابتة ومتغيّرة، بما في ذلك الأسطر الجديدة والدوال الثابتة. المسافات البيضاء مهمة.
تلقائي | لا ينطبق |
الحضور | مطلوب |
النوع | سلسلة |
القيم الصالحة | تكون أي سلسلة صالحة للقيمة النصية. في حال تقديم السمة ref :
على القيمة النصية. تقيّم السياسة النص
أو المتغير المشار إليه كنموذج رسالة. |
<Output>
<Output encoding='encoding_name'>variable_name</Output>
تُحدِّد هذه السياسة اسم المتغيّر الذي يجب أن تضبطه السياسة باستخدام قيمة HMAC المحسوبة. يحدد أيضًا الترميز الذي سيتم استخدامه للمخرجات.
تلقائي |
متغيّر الإخراج التلقائي هو القيمة التلقائية لسمة |
الحضور | اختياريّ. في حال عدم توفّر هذا العنصر، ستحدِّد السياسة متغيّر التدفق.
hmac.POLICYNAME.output ، بقيمة بترميز base64. |
النوع | سلسلة |
القيم الصالحة | بالنسبة إلى الترميز، القيم غير حساسة لحالة الأحرف؛ القيمة النصية للعنصر |
<SecretKey>
<SecretKey encoding='encoding_name' ref='private.secretkey'/>
تحدد المفتاح السري المستخدم لحساب HMAC. يتم الحصول على المفتاح من الملف المشار إليه المتغير، وفك ترميزه وفقًا للترميز المحدد.
تلقائي |
لا توجد قيمة افتراضية للمتغير المشار إليه؛
يجب إدخال السمة في حال عدم توفّر السمة |
الحضور | مطلوب |
النوع | سلسلة |
القيم الصالحة | بالنسبة إلى يتيح لك استخدام سمة ترميز تحديد مفتاح تتضمن وحدات بايت خارج نطاق أحرف UTF-8 القابلة للطباعة. على سبيل المثال، لنفترض أنّ إعدادات السياسة تتضمّن ما يلي: <SecretKey encoding='hex' ref='private.encodedsecretkey'/>
لنفترض أن
في هذه الحالة، سيتم فك ترميز وحدات البايت للمفتاح على النحو التالي: [ 53 65 63 72 65 74 31 32 33]
(تمثل كل بايت بست عشري). كمثال آخر، إذا كانت |
<VerificationValue>
<VerificationValue encoding='encoding_name' ref='variable_name'/> or <VerificationValue encoding='encoding_name'>string_value</VerificationValue>
(اختياري) يحدد قيمة التحقق، بالإضافة إلى خوارزمية التشفير التي المستخدمة لترميز قيمة التحقق. وستستخدم السياسة هذه الخوارزمية لفك ترميز القيمة.
تلقائي | لا تتوفّر قيمة تلقائية لإثبات الملكية. إذا كان العنصر موجودًا ولكن
السمة encoding غير موجودة، تستخدم السياسة الترميز التلقائي base64 |
الحضور | اختياري |
النوع | سلسلة |
القيم الصالحة |
القيمتان الصالحتان لسمة الترميز هما: ليس من الضروري أن يكون ترميز |
<IgnoreUnresolvedVariables>
<IgnoreUnresolvedVariables>true|false</IgnoreUnresolvedVariables>
يمكنك ضبط القيمة على false
إذا كنت تريد أن تعرض السياسة رسالة خطأ عند تحديد أي متغيّر مرجعي.
في السياسة غير قابل للحل. اضبط القيمة على true
للتعامل مع أي متغيّر غير قابل للتحليل كسلسلة فارغة.
(فارغ).
لا تؤثر القيمة المنطقية UnknownUnresolvedVariables فقط في المتغيرات المشار إليها بواسطة
نموذج الرسالة. في حين أن SecretKey
وVerificationValue
يمكن أن يشيرا إلى متغير، فإن كليهما
يجب حلّ بعضها، وبالتالي لا ينطبق الإعداد ignore
عليها.
تلقائي | خطأ |
الحضور | اختياري |
النوع | منطقي |
القيم الصالحة | صواب أم خطأ |
متغيّرات التدفق
يمكن للسياسة ضبط هذه المتغيّرات أثناء التنفيذ.
متغير | الوصف | مثال |
---|---|---|
hmac.policy_name.message |
وتحدد السياسة هذا المتغير مع الرسالة الفعالة،
نتيجة تقييم نموذج الرسالة المحدّد في Message
العنصر. |
hmac.HMAC-Policy.message = "Hello, World" |
hmac.policy_name.output |
تحصل على نتيجة
في حساب HMAC، عندما لا يكون العنصر Output
عدم تحديد اسم متغير. |
hmac.HMAC-Policy.output = /yyRjydfP+fBHTwXFgc5AZhLAg2kwCri+e35girrGw4= |
hmac.policy_name.outputencoding |
الحصول على اسم ترميز الإخراج. | hmac.HMAC-Policy.outputencoding = base64 |
مرجع الخطأ
يصف هذا القسم رموز الخطأ ورسائل الخطأ التي يتم عرضها ومتغيّرات الأخطاء التي تضبطها Apigee عندما تؤدي هذه السياسة إلى ظهور خطأ. هذه المعلومات مهمة لمعرفة ما إذا كنت تعمل على تطوير قواعد للأخطاء للتعامل معها. لمزيد من المعلومات، يمكنك الاطّلاع على المعلومات التي يجب معرفتها عن الأخطاء المتعلقة بالسياسات وأخطاء المعالجة.
أخطاء في وقت التشغيل
يمكن أن تحدث هذه الأخطاء عند تنفيذ السياسة.
رمز الخطأ | رموز حالة HTTP | يحدث عند |
---|---|---|
steps.hmac.UnresolvedVariable |
401 | يحدث هذا الخطأ إذا كان أحد المتغيّرات المحددة في سياسة HMAC إما:
|
steps.hmac.HmacVerificationFailed |
401 | تعذّر التحقّق من بروتوكول HMAC، لأنّ قيمة التحقّق المقدّمة لا تتطابق مع القيمة المحسوبة. |
steps.hmac.HmacCalculationFailed |
401 | تعذَّر على السياسة احتساب شهادة HMAC. |
steps.hmac.EmptySecretKey |
401 | قيمة متغير المفتاح السري فارغة. |
steps.hmac.EmptyVerificationValue |
401 | المتغيّر الذي يحمل قيمة إثبات الملكية فارغ. |
أخطاء النشر
يمكن أن تحدث هذه الأخطاء عند نشر خادم وكيل يحتوي على هذه السياسة.
اسم الخطأ | رموز حالة HTTP | يحدث عند |
---|---|---|
steps.hmac.MissingConfigurationElement |
401 | يحدث هذا الخطأ عند عدم توفّر عنصر أو سمة مطلوبة. |
steps.hmac.InvalidValueForElement |
401 | يحدث هذا الخطأ إذا لم تكن القيمة المحددة في عنصر الخوارزمية ضمن إحدى القيم التالية: SHA-1 أو SHA-224 أو SHA-256 أو SHA-512 أو MD-5 . |
steps.hmac.InvalidSecretInConfig |
401 | يحدث هذا الخطأ عند وجود قيمة نصية مقدّمة بشكل صريح إلى SecretKey . |
steps.hmac.InvalidVariableName |
401 | يحدث هذا الخطأ إذا لم يكن المتغيّر SecretKey يحتوي على البادئة private (private. ). |
متغيّرات الأخطاء
يتم ضبط هذه المتغيّرات عند حدوث خطأ في بيئة التشغيل. لمزيد من المعلومات يُرجى الاطّلاع على القسم ما تحتاج إلى معرفته حول أخطاء السياسة.
المتغيرات | المكان | مثال |
---|---|---|
fault.name="fault_name" |
تمثّل السمة fault_name اسم الخطأ، كما هو موضّح في جدول أخطاء وقت التشغيل أعلاه. اسم الخطأ هو الأخير من رمز الخطأ. | fault.name Matches "UnresolvedVariable" |
hmac.policy_name.failed |
تحدّد السياسة هذا المتغيّر في حال عدم اكتمال العملية. | hmac.HMAC-Policy.failed = true |
مثال على استجابة الخطأ
لمعالجة الخطأ، أفضل ممارسة هي رصد الجزء errorcode
من الخطأ
الاستجابة. لا تعتمد على النص في faultstring
، لأنه قد يتغير.
مثال على قاعدة الخطأ
<FaultRules> <FaultRule name="HMAC Policy Errors"> <Step> <Name>AM-Unauthorized</Name> <Condition>(fault.name Matches "HmacVerificationFailed")</Condition> </Step> <Condition>hmac.HMAC-1.failed = true</Condition> </FaultRule> </FaultRules>