مفتاح واجهة برمجة التطبيقات هو معرِّف فريد يُستخدَم لمصادقة البرامج والأنظمة التي تحاول الوصول إلى برامج أو أنظمة أخرى عبر واجهة برمجة التطبيقات (اختصارًا API).
تُعَد واجهة برمجة التطبيقات مجموعة من القواعد أو البروتوكولات التي تمكِّن تطبيقات البرامج من التواصل مع بعضها لتبادل البيانات والميزات والوظائف. وهي تمنح مالكي التطبيقات طريقة بسيطة وآمنة لإتاحة بيانات التطبيق ووظائفه للأقسام داخل مؤسستهم. ويمكن لمالكي التطبيقات أيضًا مشاركة أو تسويق البيانات والوظائف إلى شركاء الأعمال أو الجهات الخارجية. تسمح واجهات برمجة التطبيقات بمشاركة المعلومات الضرورية فقط، مع إبقاء تفاصيل النظام الداخلية الأخرى مخفية، ما يساعد في أمن النظام.
ونظرًا لقدرة واجهات برمجة التطبيقات على الوصول إلى البيانات الحساسة، فإنه من الضروري أن تتحقق الواجهة من أن التطبيق الذي يقدِّم الطلب لديه الإذن للقيام بذلك. يتيح استخدام مفاتيح واجهة برمجة التطبيقات لمطور التطبيق مصادقة التطبيقات التي تستدعي الواجهة الخلفية لواجهة برمجة التطبيقات للتأكد من أنها تمتلك التفويض اللازم.
على الرغم من أن مفاتيح واجهة برمجة التطبيقات يمكن أن تكون جانبًا من جوانب التأكد من أن واجهات برمجة التطبيقات الخاصة بالمؤسسة -والبيانات التي تتعامل معها- آمنة، إلا أنها ليست حلًا نهائيًا لأمان واجهة برمجة التطبيقات. والجدير بالذكر أن مفاتيح واجهة برمجة التطبيقات ليست آمنة مثل رموز المصادقة المميزة أو بروتوكول OAuth (التفويض المفتوح). تتناسب هذه الإجراءات بشكل أفضل لمصادقة مستخدمين بشريين محددين، وتتيح للمؤسسات تحكمًا أكبر في الوصول إلى وظائف واجهة برمجة التطبيقات، ويمكن ضبطها لتكون مؤقتة.
يمكن استخدام OAuth مع مفاتيح واجهة برمجة التطبيقات أو بمفردها. في بعض الأحيان قد تستخدم المؤسسة مفتاح واجهة برمجة التطبيقات لبعض المستخدمين ولكنها تستخدم OAuth للمستخدمين الآخرين. وهناك طرق أخرى لمصادقة استدعاءات واجهة برمجة التطبيقات، مثل رموز الويب JSON Web Tokens (JWT)، لكنها ليست شائعة الاستخدام.
تُعتبر مفاتيح واجهة برمجة التطبيقات جزءًا مهمًا من أمان الواجهة، حيث تساعد المؤسسات على مراقبة الاستدعاءات وتحسين إدارة استهلاك واجهات برمجة التطبيقات، ما يعزِّز الأمان ويضمن توافر النطاق الترددي الكافي.
مفتاح واجهة برمجة التطبيقات هو سلسلة فريدة من الأحرف الرقمية والحروف، تُنتَج عشوائيًا، وتستخدمها واجهات برمجة التطبيقات للتحقق من صحة التطبيقات التي تقوم بإجراء استدعاءات إلى واجهة برمجة التطبيقات. يرتبط كل مفتاح يصدره مزود واجهة برمجة التطبيقات بعميل معين، مثل وحدة برمجية. تعمل مفاتيح واجهة برمجة التطبيقات على تمكين خادم الواجهة من تحديد البرامج والتطبيقات التي ترسل استدعاءً إليها. يتم استخدام المفتاح الذي تم إنشاؤه لكل طلب يتم إرساله من ذلك التطبيق أو المشروع إلى واجهة برمجة التطبيقات المرتبطة (حتى يتم تحديث المفتاح أو حذفه).
عندما يُجري أحد التطبيقات استدعاءً إلى واجهة برمجة التطبيقات لطلب وظائف أو بيانات من تطبيق آخر، يستخدم خادم الواجهة مفتاح واجهة برمجة التطبيقات للتحقق من صحة التطبيق. بالنسبة لتطبيقات الويب وواجهات برمجة التطبيقات من نوع REST، يمكن إرسال المفتاح كرأس (Header) أو ضمن سلسلة استعلام (Query String) أو كملف تعريف ارتباط (Cookie). إذا تطابق مفتاح واجهة برمجة التطبيقات مع مفتاح معتمد، يُرجع الخادم البيانات المطلوبة. وإن لم يتطابق، يرفض الاستدعاء ويرسل رسالة رفض.
يمكن للمطورين إضافة المزيد من عمليات التحقق والقيود إذا لزم الأمر.
على سبيل المثال، يمكن للمطورين تكوين حقوق الوصول لتطبيق أو مشروع يسمح فقط بالوصول إلى أنواع معينة من البيانات أو الوظائف. ويمكن للمطورين أيضًا تعيين قيود التطبيق التي تحدد مواقع الويب وعناوين IP والتطبيقات (أو تطبيقات الأجهزة المحمولة) ومجموعات تطوير البرامج (SDKs) التي يمكنها استخدام مفتاح واجهة برمجة التطبيقات.
على الرغم من أن مفاتيح واجهة برمجة التطبيقات هي جزء من أمان واجهة برمجة التطبيقات، إلا أنها ينبغي ألَّا تكون الطريقة الوحيدة التي تتبعها المؤسسة لمصادقة الاستدعاءات التي يتم إجراؤها إلى واجهة برمجة التطبيقات والتحقق من صحتها. في الواقع، على الرغم من فائدة مفاتيح واجهة برمجة التطبيقات، إلا أنها ليست طريقة آمنة بشكل خاص لمصادقة الاستدعاءات. إذ يمكن لمفاتيح واجهة برمجة التطبيقات تحديد تطبيق أو مشروع معين، ولكن لا يمكنها التحقق من صحة المستخدم الفردي الذي يستخدم التطبيق الذي يُجري الاستدعاءات. وهذا يجعل مفاتيح واجهة برمجة التطبيقات خيارًا سيئًا لفرض التحكم في الوصول إلى واجهة برمجة التطبيقات. تقدِّم مفاتيح واجهة برمجة التطبيقات إمكانية تحديد المشروع وتفويضه فقط، وليس تعريف المستخدم أو تفويضه.
فكر في مفتاح واجهة برمجة التطبيقات على أنه كلمة مرور: إنه طبقة واحدة من الأمان، ولكنه أيضًا نقطة فشل محتملة لخرق الأمان. وكما هو الحال مع كلمة المرور، يمكن لأي شخص لديه حق الوصول إلى مفتاح واجهة برمجة التطبيقات استخدامه. ولا توجد طريقة للتحقق من الشخص الذي يستخدم المفتاح. ونادرًا ما تنتهي صلاحية المفاتيح ما لم يتم تجديدها على وجه التحديد.
لا تُعتبر مفاتيح واجهة برمجة التطبيقات المستخدمة مع تطبيقات الويب آمنة عبر بروتوكول نقل النص التشعبي العادي (HTTP)؛ لأنها ترسل بيانات اعتماد غير مشفرة. ولكي يتم اعتبار تطبيقات الويب آمنة، يجب أن تكون لها شهادة طبقة مآخذ توصيل آمنة (SSL)، والمعروفة باسم بروتوكول نقل النص التشعبي الآمن (HTTPS).
تتضمن طرق التحقق الأخرى من استدعاءات واجهة برمجة التطبيقات ما يلي:
تضيف الرموز المميزة للمصادقة، المعروفة أيضًا بالرموز المميزة لواجهة برمجة التطبيقات، طبقة إضافية من أمن واجهة برمجة التطبيقات؛ لأنها تستطيع تحديد مستخدم معين، وليس فقط التطبيق الذي يقدِّم الطلب. هذه الرموز المميزة هي مقتطفات من التعليمات البرمجية التي تحدِّد المستخدم لواجهة برمجة التطبيقات التي يطلب البيانات منها. ولأنها عبارة عن أسطر متعددة من التعليمات البرمجية بدلًا من سلسلة أبجدية رقمية واحدة، فإنها توفِّر مزيدًا من المعلومات لواجهة برمجة التطبيقات حول الشخص أو المشروع الذي يقدم طلبًا. يمكن أيضًا إنشاء الرموز المميزة لواجهة برمجة التطبيقات بنطاق محدود، ما يمنح الوصول إلى معلومات محددة فقط لفترة محدودة.
يُعَد بروتوكول OAuth (التفويض المفتوح) جزءًا من الطريقة القياسية في المجال لتفويض ومصادقة الاستدعاءات إلى واجهة برمجة التطبيقات عند استخدامها مع OpenID Connect (اختصارًا OIDC). وهو الجانب الذي يمنح المستخدمين حق الوصول إلى المعلومات المطلوبة ويُستخدَم في العملية الأوسع لمصادقة المستخدم.
يستخدم OAuth نوعًا من الرمز المميز لواجهة برمجة التطبيقات يُسمَّى الرمز المميز للوصول. تُصدِر واجهات برمجة التطبيقات الرموز المميزة للوصول للمستخدمين الذين يطلبون الوصول إليها. تمنح هذه الرموز المميزة، من خلال سلسلة من الاتصالات بين واجهة برمجة التطبيقات والمستخدم، الوصول إلى المعلومات المحددة التي طلبها المستخدم دون الحاجة إلى مشاركة بيانات الاعتماد أو غيرها من المعلومات الآمنة مع واجهة برمجة التطبيقات.
يُعَد OpenID Connect بروتوكول مصادقة مبنيًا على OAuth، والذي يمكِّن OAuth من مصادقة المستخدمين عن طريق إصدار رموز الهوية المميزة بالإضافة إلى رموز الوصول المميزة. تتضمن رموز الهوية المميزة هذه أيضًا معلومات حول الحساب المحدد الذي يقدِّم الطلب، بدلًا من المشروع فقط. يقوم OpenID Connect بإجراء تعديلات طفيفة على تدفق تفويض OAuth من خلال طلب كل من رمز الوصول المميز ورمز الهوية المميز قبل منح حق الوصول إلى واجهة برمجة التطبيقات.
يمكن استخدام مفاتيح واجهة برمجة التطبيقات مع أشكال أخرى من المصادقة لاستدعاءات واجهة برمجة التطبيقات، أو يمكن استخدامها بشكل منفصل. داخل المؤسسة، قد تستخدم واجهة برمجة التطبيقات أنواعًا مختلفة من المصادقة والتفويض اعتمادًا على من يطلب الوصول. قد تحتاج بعض أجزاء المؤسسة، مثل المطورين، إلى وصول غير مقيد إلى واجهة برمجة التطبيقات، بينما تحتاج الأقسام الأخرى إلى وصول أكثر إحكامًا.
هناك نوعان رئيسيان من مفاتيح واجهة برمجة التطبيقات وكلاهما له دور في مصادقة استدعاءات واجهة برمجة التطبيقات. وفي بعض الأحيان، يتم استخدامهما معًا.
هذه هي المفاتيح التي توفِّر الوصول إلى البيانات غير الحساسة، أو الوظائف التي لا تتطلب مصادقة المستخدم. يمكن مشاركتها بشكل مفتوح بين المطورين والأطراف المعنية الأخرى التي تعمل مع واجهة برمجة التطبيقات.
تُستخدَم المفاتيح الخاصة للوصول إلى البيانات الحساسة وقد تمنح مستخدم المفتاح أيضًا حق الوصول للكتابة. يمكن استخدام المفاتيح الخاصة لواجهة برمجة التطبيقات مع مفتاح عام لإضافة طبقة إضافية من الأمان.
على الرغم من أن مفاتيح واجهة برمجة التطبيقات ينبغي ألَّا تكون الطريقة الوحيدة لمصادقة استدعاءات واجهة برمجة التطبيقات، إلا أن استخدام المفاتيح العامة والخاصة معًا يمكن أن يوفِّر طبقة إضافية من الأمان. عند إجراء استدعاء إلى واجهة برمجة التطبيقات، يمكن استخدام المفتاح الخاص كنوع من التوقيع الرقمي لعملاء محددين يحتاجون إلى الوصول إلى وظائف محددة لواجهة برمجة التطبيقات. بعد ذلك، يمكن للمفتاح العام التحقق من التوقيع وإعادة تأكيد شرعية الاستدعاء إلى واجهة برمجة التطبيقات.
توفِّر مفاتيح واجهة برمجة التطبيقات وظائف مفيدة داخل المؤسسة تتجاوز المصادقة البسيطة. ولأن هذه المفاتيح تساعد على تحديد الوصول إلى واجهة برمجة التطبيقات، فيمكن أيضًا استخدامها للحفاظ على تشغيل التطبيقات وتوفير بيانات مفيدة حول كيفية استخدامها.
تُعد مفاتيح واجهة برمجة التطبيقات جانبًا مهمًا من إدارة الوصول، إذ تُمكّن المنظمة من التحكم في المستخدمين الذين يمكنهم الوصول إلى واجهات برمجة التطبيقات الخاصة بها. قد تكون حركة البيانات المجهولة إلى واجهة برمجة التطبيقات مؤشرًا على وجود نشاط ضار. ويُتيح استخدام مفاتيح واجهة برمجة التطبيقات للمنظمة حظر الوصول غير المصرح به إلى واجهات برمجة التطبيقات، مثل الاستدعاءات المجهولة، مما قد يُسهم في الحد من نطاق الهجوم الإلكتروني المحتمل. يساعد تقييد خدمة واجهة برمجة التطبيقات بهذه الطريقة أيضًا على منع تلقي تدفق هائل من الطلبات، ما يقلل من فرص تعطل التطبيقات المهمة.
يمكن استخدام مفاتيح واجهة برمجة التطبيقات لتقييد حركة البيانات على الواجهة، في إجراء يُعرف باسم تحديد المعدل. يتيح تحديد المعدل للمنظمة التحكم في عدد الطلبات التي يُجريها أحد العملاء إلى واجهة برمجة التطبيقات خلال فترة زمنية معينة. يتم رفض الوصول إلى واجهة برمجة التطبيقات بعد بلوغ حركة البيانات الحد المسموح به.
من خلال السماح بحركة مرور التطبيق ضمن المَعلمات المحددة فقط، يمكن للمؤسسة تحسين استخدام موارد واجهة برمجة التطبيقات والنطاق الترددي. ويمكن تحديد هذه الإعدادات في وثائق واجهة برمجة التطبيقات الخاصة بالمؤسسة.
نظرًا لأن مفاتيح واجهة برمجة التطبيقات تُعد معرّفات فريدة، يمكن للمنظمة استخدامها لتتبّع حركة البيانات والاستدعاءات التي تتم على الواجهات. باستخدام هذه المفاتيح، يمكن للمنظمات تتبُّع كل استدعاء يتم إجراؤه إلى واجهة برمجة التطبيقات وربطه بتطبيق معين. كما يمكنهم تحديد عدد الاستدعاءات التي يتم إجراؤها، ونوع هذه الاستدعاءات، ونطاق عناوين IP الخاصة بالمستخدم، وحتى معرفة ما إذا كان يستخدم نظام iOS أو Android.
إن تحليل أنماط الاستخدام يساعد المؤسسة على فهم أفضل لأجزاء المؤسسة التي تصل إلى نقاط نهاية محددة بشكل متكرر. وتُعَد مراقبة حركة المرور وتصفية السجلات مفيدةً أيضًا لأمن واجهة برمجة التطبيقات. ففي حالة حدوث هجوم إلكتروني، يمكن أن يؤدي التحقق من النشاط على خادم واجهة برمجة التطبيقات مقابل مفاتيح واجهة برمجة تطبيقات محددة إلى منح المؤسسة نظرة ثاقبة أكبر حول الهجوم والمفاتيح التي ربما تم اختراقها.
يمكن أن تساعد مفاتيح واجهة برمجة التطبيقات على حماية واجهات برمجة التطبيقات والبيانات والشبكات، ولكن فقط عند استخدامها بطريقة آمنة. تستخدم العديد من المؤسسات هذه الأساليب للتأكد من أن مفاتيح واجهة برمجة التطبيقات الخاصة بها آمنة ومنع واجهات برمجة التطبيقات من أن تصبح ناقلات لهجوم إلكتروني.
ليست مفاتيح واجهة برمجة التطبيقات آمنة بما يكفي لتكون الوسيلة الوحيدة لمصادقة استدعاءات الواجهة. فهي لا تستطيع التحقق من هوية المستخدمين الأفراد، ويمكن اختراقها بسهولة. يمكن أن تُضيف مفاتيح واجهة برمجة التطبيقات حاجز أمان إضافيًا إلى النظام البنائي لواجهات برمجة التطبيقات الخاصة بالمنظمة، عند استخدامها مع طريقة مصادقة أخرى مثل OAuth أو رموز الويب المميزة (JWT) أو رموز المصادقة.
ليس من غير المألوف أن تستخدم المؤسسات أكثر من طريقة مصادقة واحدة. على سبيل المثال، يمكن للمطورين استخدام مفاتيح واجهة برمجة التطبيقات داخليًا لتوفير وصول غير مقيد إلى واجهات برمجة التطبيقات في أثناء التطوير، ثم استخدام OAuth للعملاء الخارجيين لأنه يوفِّر رموزًا تنتهي صلاحيتها ويمكن إعدادها للسماح فقط بالوصول إلى بيانات محددة.
عند توليد المفاتيح، غالبًا ما يتم توليدها على شكل نص عادي. تمامًا مثل كلمات المرور، فإن أمان المفتاح يعتمد على كيفية ومكان تخزينه. يُوصي خبراء الأمان بتخزين هذه المفاتيح كـقيم مجزأة في قاعدة بيانات، لتجنّب تعرّضها للسرقة.
كما أن تضمين مفاتيح واجهة برمجة التطبيقات في التعليمات البرمجية المَصدر أو المستودع يجعلها عرضةً للمهاجمين، عند نشر التطبيق، وقد يتم كشف المفاتيح للجمهور أيضًا. إذا أمكن، فاستخدم مخزن بيانات آمنًا ومشفَّرًا لحفظ مفاتيح واجهة برمجة التطبيقات التي تم إنشاؤها.
لا تنتهي صلاحية مفاتيح واجهة برمجة التطبيقات إلا إذا قام المطورون بتحديد تاريخ انتهاء، أو إذا قام مُنشئ المفاتيح بإلغاء الوصول أو إعادة إنشاء المفتاح. وإذا حصل مستخدم غير مصرّح له على مفتاح واجهة برمجة التطبيقات، فقد يتمكن من الوصول إلى بيانات حساسة دون علم أي أحد داخل المنظمة. فهم في نهاية المطاف يستخدمون المفتاح الصحيح للحصول على البيانات التي يطلبونها.
يمكن أن يساعد تدوير وإنشاء مفاتيح جديدة لواجهة برمجة التطبيقات كل 90 إلى 180 يومًا في الحفاظ على أمان واجهات برمجة التطبيقات. ومن المستحسن أيضًا حذف مفاتيح واجهة برمجة التطبيقات التي لم تَعُد قيد الاستخدام. وللحصول على طبقة إضافية من الحماية، يمكن للمؤسسات الحد من نطاق الوصول لمفاتيح واجهة برمجة التطبيقات المشتركة مع العملاء من خلال فرض حقوق الوصول. تمنح هذه الحقوق المستخدمين إمكانية الوصول إلى نقاط النهاية التي يحتاجون إليها ولا شيء آخر. تعمل بعض المؤسسات على أتمتة عملية إنشاء المفاتيح الجديدة للتأكد من تغييرها بانتظام.