Logo Logo
GitHub Designed by Logto

ما هو تدفق بيانات الاعتماد للعميل؟

تدفق بيانات الاعتماد للعميل (المنح) هو نوع من منح OAuth 2.0 (Grant) الذي يسمح للعملاء السريين بالحصول على رموز الوصول للوصول إلى الموارد المحمية. عادةً، يتم استخدام هذا التدفق في عمليات الاتصال اتصال الآلة بالآلة (Machine-to-machine) ، حيث يكون العميل هو الخادم أو الخدمة.

[!ملاحظة] تدفق بيانات الاعتماد للعميل غير مناسب لتفويض المستخدم النهائي. لتفويض المستخدم النهائي، يجب عليك استخدام طلب مصادقة (Authentication request) أو طلب الترخيص (Authorization request) .

كيف يعمل تدفق بيانات الاعتماد للعميل؟

تدفق بيانات الاعتماد للعميل هو عملية بسيطة مكونة من خطوتين:

  1. طلب الرمز: يرسل العميل طلب الرمز (Token request) ببيانات اعتماده (معرف العميل وسر العميل) والنطاقات المطلوبة ( scopes ).
  2. استجابة الرمز: يقوم خادم التفويض (Authorization server) بالتحقق من صحة بيانات اعتماد العميل ويصدر رمز الوصول إذا كان العميل مصرح له بذلك.

إليك تمثيل بسيط لتسلسل تدفق بيانات الاعتماد للعميل:

إليك مثال غير معياري لطلب رمز في تدفق بيانات الاعتماد للعميل:

POST /token HTTP/1.1
Host: your-authorization-server.com
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
  &client_id=YOUR_CLIENT_ID
  &client_secret=YOUR_CLIENT_SECRET
  &scope=read write

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

يرجى ملاحظة أنه يجب على خادم الموارد (Resource server) التحقق من صحة رمز الوصول وتطبيق سياسات التحكم في الوصول (Access control) للتأكد من أن العميل يمتلك الأذونات اللازمة للوصول إلى الموارد.

معايير رئيسية في طلب رمز تدفق بيانات الاعتماد للعميل

على عكس تدفقات OAuth 2.0 الأخرى، يحتوي تدفق بيانات الاعتماد للعميل على طلب الرمز (Token request) بسيط مع المعايير الرئيسية التالية:

  • grant_type: يجب تعيين نوع المنح إلى client_credentials للإشارة إلى تدفق بيانات الاعتماد للعميل.
  • client_id: معرف العميل الذي أصدره خادم التفويض.
  • client_secret: سر العميل الذي أصدره خادم التفويض.
  • scope: النطاقات المطلوبة scopes (الأذونات) لرمز الوصول.
  • resource: المعلمة الاختيارية التي تحدد مؤشر الموارد (Resource indicator) للموارد المطلوبة. يجب على خادم التفويض دعم RFC 8707 لاستخدام هذه المعلمة.

اعتبارات الأمان

العملاء السريين

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

انتهاء صلاحية الرمز

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

دوران سر العميل

لتعزيز الأمان، يوصى بتدوير سر العميل بشكل دوري. يجب أن يدعم خادم التفويض دوران سر العميل دون التأثير على قدرة العميل في الحصول على رموز الوصول. على سبيل المثال، يجب أن يدعم خادم التفويض عدة أسرار للعملاء لضمان التوافق مع الإصدارات السابقة خلال عملية التدوير.

انظر أيضا