إخفاء مفتاح API

أود إجراء مكالمات إلى واجهة برمجة التطبيقات (JSON API) في نقاط مختلفة. أحيانًا، أحتاج إلى تقديم مفتاح API — لذا أقوم بإنشائه من لوحة التحكم الإدارية، وأحتاج إلى تضمينه في مكالمة واجهة برمجة التطبيقات. على سبيل المثال:

var token = [مفتاح API]
$.ajax({
     url: 'https://myforum.com/groups/[groupname].json',
      contentType: "application/json",
      headers: {
          "Api-Key": token,
          "Api-Username": "[اسم المستخدم]"
        },
        dataType: 'json',
        success: function(result){
             console.log('النتيجة = ' + result);
         }
})

هل توجد طريقة لحماية هذا المفتاح بحيث لا يكون مرئيًا للمستخدمين؟

حاليًا، حلّي هو تنفيذ هذه الدالة خارج تطبيق Discourse الخاص بي — بحيث يقوم تطبيقي باستدعاء نقطة نهاية مستضافة في مكان آخر تقوم بدورها بتنفيذ هذه الدالة. بهذه الطريقة، يكون مفتاح API موجودًا في دالة مخزنة بشكل منفصل عن تطبيق Discourse الخاص بي، ولا يعرف تطبيقي سوى نقطة النهاية.

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

هل توجد طريقة لإخفاء مفتاح API؟

التطبيق الذي يقوم بأي نوع من طلبات API الحساسة سيرغب في تنفيذها في الخلفية، وليس في الواجهة الأمامية.

تحصل على العديد من الفوائد، مثل التخزين المؤقت المخصص، وطلبات API المتوازية، والأمان، وما إلى ذلك. لا يُعدّ من الجيد القيام بذلك في كود JavaScript الذي يعمل على العميل.

شكرًا لك. لقد قمت بإعداد بنية خلفية للتعامل مع طلب الـ API، لكنها منفصلة عن مثيل discourse الخاص بي (غير متصلة بـ discourse على الإطلاق). هل توجد طريقة لجعل هذا يحدث في الخلفية لتطبيق discourse نفسه؟

أفترض أن الأمر يعتمد على كيفية ومكان استضافة مثيل discourse لديك. هل توجد طريقة لربطها بالخلفية لتطبيق مستضاف مع discourse.org؟

يجب عليك بنائه باستخدام إطار عمل Rails في شكل إضافة، وأن تكون مسجلاً في خطة تسمح بإضافة إضافات تابعة لجهات خارجية.