هذا هو وكيل GitHub API عديم الحالة الذي يسمح بإنشاء واستخدام رموز GitHub API المميزة ذات الوصول المحدود .
في الأساس، إنها إدارة الهوية والوصول لرموز GitHub API.
لا تسمح رموز واجهة برمجة التطبيقات الخاصة بـ GitHub بالتحكم الدقيق في الإجراءات التي يمكن أن يؤديها الرمز المميز (راجع مشكلة عزيزي GitHub). على سبيل المثال، يتعين عليك في الأساس إنشاء رمز مميز يتمتع بالتحكم الكامل في المستودع للسماح للرمز المميز بتطبيق التصنيفات على المشكلات فقط.
وهذه مشكلة على نطاق واسع. عندما يكون لديك العديد من الوظائف و/أو العمليات و/أو الروبوتات التي تتفاعل مع واجهة برمجة تطبيقات GitHub، فإنك تزيد من احتمالية تعرض الرمز المميز للخطر وتكون الرموز المميزة ذات الأذونات الواسعة لها عواقب وخيمة للغاية.
يتيح لك هذا الوكيل إنشاء رموز API المميزة بأذونات دقيقة ( رمز سحري ) ثم التحدث إلى GitHub API باستخدام تلك الرموز المميزة السحرية من خلال وكيل. يتحقق الوكيل من صحة الرمز السحري الذي يسمح له بتنفيذ الإجراء المطلوب ثم يعيد توجيه الطلب إلى GitHub API باستخدام رمز GitHub API الحقيقي.
لا يتطلب هذا الوكيل تخزينًا احتياطيًا ويقوم بتخزين كل حالته في الرمز السحري نفسه.
يستخدم الوكيل التشفير غير المتماثل (زوج مفاتيح عام وخاص) وJWTs لتشفير حالته في الرمز السحري.
كل رمز سحري عبارة عن JWT بسيط موقع بواسطة المفتاح الخاص للوكيل مع هذه المطالبات:
{
"iat": 1541616032,
"exp": 1699296032,
"github_token": "[long encrypted key]",
"scopes": [
"GET /user",
"GET /repos/theacodes/nox/issues"
]
}
تعد المطالبة github_token
نسخة مشفرة من الرمز المميز لـ GitHub API الخام. يتم تشفيره باستخدام المفتاح العام للوكيل، بحيث لا يتمكن سوى الوكيل نفسه من فك تشفيره (باستخدام مفتاحه الخاص ).
تحدد مطالبة النطاقات ما يمكن للرمز السحري الوصول إليه. يحتوي هذا الوكيل على تطبيق نطاق أساسي وبدائي موضح أدناه، ولكن يمكنك تنفيذ أي استراتيجية تحديد نطاق تريدها.
يتم إنشاء JWT وتوقيعه بواسطة الوكيل نفسه باستخدام مفتاحه الخاص . وهذا يعني أنه لا يمكن التلاعب بالمحتويات دون إبطال JWT.
افتراضيًا، يحتوي هذا الوكيل على إستراتيجية نطاق بسيطة باستخدام التنسيق:
METHOD /url/pattern
حيث يمكن أن تكون METHOD
عبارة عن GET
و POST
و PUT
وما إلى ذلك، ويمكن أن يكون /url/pattern
أي تعبير عادي يُستخدم للتحقق من عنوان URL.
على سبيل المثال، لإنشاء رمز مميز يمكنه الوصول إلى مشكلات أي مستودع في someorg
، يمكنك القيام بما يلي:
GET /repos/someorg/.+?/issues
المهام
هذا ليس أحد منتجات Google الرسمية، تجريبيًا أو غير ذلك. هذه ليست رصاصة سحرية للأمن. أنت تتحمل جميع المخاطر عند استخدام هذا المشروع.