ما هي بيانات خادم التفويض (OAuth 2.0 Authorization Server Metadata)؟
بيانات خادم التفويض (OAuth 2.0 Authorization Server Metadata) هي صيغة موحدة تم تعريفها في RFC 8414 تمكن عملاء OAuth 2.0 من اكتشاف والحصول على المعلومات اللازمة للتفاعل مع خوادم تفويض OAuth 2.0.
يشمل ذلك معلومات أساسية مثل مواقع النهايات، الميزات المدعومة، وقدرات الخادم.
توفر صيغة البيانات وثيقة تكوين قابلة للقراءة آليًا تساعد في تبسيط عملية التكامل بين العملاء وخوادم التفويض، مما يقلل الحاجة إلى التكوين اليدوي.
كيف تعمل بيانات خادم التفويض (OAuth 2.0 Authorization Server Metadata)؟
في نظام OAuth 2.0 البيئي، هناك عدة أدوار رئيسية:
- خادم التفويض (Authorization server) : يصدر رموز الوصول (access tokens) للعملاء بعد التحقق بنجاح من مالك المورد
- العميل (Client) : تطبيق يطلب الوصول إلى الموارد المحمية
- مالك المورد (Resource owner) : كيان قادر على منح الوصول إلى الموارد المحمية
- خادم الموارد (Resource server) : خادم يستضيف الموارد المحمية
توفر بيانات خادم التفويض طريقة موحدة للعملاء لاكتشاف وفهم كيفية التفاعل مع خادم التفويض. إليك كيف تعمل:
- يعرف العميل أو يكتشف عنوان URL الخاص بـ issuer لخادم التفويض
- يقوم العميل بإنشاء عنوان URL للبيانات عن طريق إضافة
/.well-known/oauth-authorization-server
إلى عنوان URL الخاص بـ issuer - يسترجع العميل وثيقة البيانات التي تحتوي على تكوين الخادم
- يستخدم العميل البيانات المسترجعة (النهايات، الميزات المدعومة، إلخ) لتكوين نفسه بشكل صحيح والتفاعل مع خادم التفويض
على سبيل المثال، إذا كان عنوان URL الخاص بـ issuer هو https://auth.example.com
، ستكون البيانات متاحة على:
https://auth.example.com/.well-known/oauth-authorization-server
تشمل وثيقة البيانات معلومات هامة مثل:
issuer
: معرف خادم التفويضauthorization_endpoint
: عنوان URL لنقطة التفويضtoken_endpoint
: عنوان URL لنقطة الرمزscopes_supported
: النطاقات المتاحةresponse_types_supported
: أنواع الاستجابة المدعومةtoken_endpoint_auth_methods_supported
: طرق مصادقة العميل المدعومة
للحصول على قائمة كاملة بحقول البيانات، يرجى الرجوع إلى RFC 8414 Section 2 .
مع هذه القيم من البيانات، يمكن للعملاء تكوين وتنفيذ تدفق OAuth 2.0 تلقائيًا:
-
الإعداد الأولي:
- يتحقق العميل من أن
issuer
يطابق خادم التفويض المتوقع - يتحقق العميل من
response_types_supported
للتأكد من أن نوع التدفق الخاص به (مثلcode
) مدعوم
- يتحقق العميل من أن
-
طلب التفويض:
- يستخدم العميل
authorization_endpoint
لإنشاء عنوان URL للتفويض - يختار العميل النطاقات المناسبة من
scopes_supported
بناءً على احتياجاته - مثال:
https://auth.example.com/authorize?response_type=code&scope=profile email
- يستخدم العميل
-
تبادل الرمز:
- بعد تلقي رمز التفويض، يستخدم العميل
token_endpoint
لتبادل الرمز - يتحقق العميل من
token_endpoint_auth_methods_supported
لتحديد كيفية المصادقة (مثلclient_secret_basic
) - مثال: إرسال طلب POST إلى نقطة الرمز مع بيانات اعتماد العميل ورمز التفويض
- بعد تلقي رمز التفويض، يستخدم العميل
يساعد هذا التدفق الأساسي العملاء على تكوين أنفسهم تلقائيًا والتفاعل مع خادم التفويض دون الحاجة إلى تكوين يدوي للنهايات أو اختيار النطاقات عن طريق التجربة والخطأ.
ما الفرق بين بيانات خادم التفويض (OAuth 2.0 Authorization Server Metadata) و OpenID Connect Discovery؟
الاختلافات الرئيسية هي:
-
النطاق والغرض:
- تركز بيانات خادم التفويض (OAuth 2.0 Authorization Server Metadata) بشكل خاص على تكوين بروتوكول OAuth 2.0
- اكتشاف OpenID Connect (OIDC) يشمل معلمات إضافية للميزات المتعلقة بالهوية، مثل:
userinfo_endpoint
: نقطة لاسترجاع معلومات المستخدمid_token_signing_alg_values_supported
: خوارزميات التوقيع المدعومة لرموز الهوية (ID Tokens)claims_supported
: المطالبات المتاحة للمستخدم التي يمكن إرجاعها في رمز الهوية أو من UserInfo Endpoint- يدعم نطاق
openid
للمصادقة - يشمل أنواع استجابة التدفق الهجين (مثل
code id_token
,code id_token token
)
-
نقطة البيانات:
- يستخدم OAuth 2.0
/.well-known/oauth-authorization-server
- يستخدم OpenID Connect
/.well-known/openid-configuration
- يستخدم OAuth 2.0
هل تتوافق بيانات خادم التفويض (OAuth 2.0 Authorization Server Metadata) مع OpenID Connect Discovery؟
نعم، بيانات خادم التفويض (OAuth 2.0 Authorization Server Metadata) متوافقة مع اكتشاف OpenID Connect (OIDC) .
تم استلهام مواصفات بيانات OAuth 2.0 (RFC 8414) من OpenID Connect Discovery 1.0، الذي كان قد تم اعتماده على نطاق واسع في الممارسة.
نقاط رئيسية حول الامتثال:
- تتبع صيغة البيانات نفس هيكل JSON
- يمكن لخوادم التفويض دعم كلا النقطتين في نفس الوقت
- عادة ما تعرض موفرو OpenID كلا النقطتين للتوافق مع الإصدارات السابقة
- يمكن توسيع بيانات OAuth 2.0 مع حقول محددة لـ OpenID Connect عند الحاجة
يضمن هذا التوافق أن خوادم التفويض يمكنها خدمة كل من عملاء OAuth 2.0 البحتة وأطراف OpenID Connect المعتمدة دون تعارضات.