ما هو اكتشاف OpenID Connect (OIDC)؟
اكتشاف OpenID Connect (OIDC)، المحدد في OpenID Connect Discovery 1.0 ، هو آلية تسمح لـ العملاء باكتشاف نقاط النهاية وتكوين موفر OpenID تلقائيًا. هذه طريقة حديثة لتبسيط الاتصال بين العملاء و موفري OpenID .
اكتشاف OIDC يحتوي على مكونين رئيسيين:
- اكتشاف موفر OpenID issuer: يمكن للعميل اكتشاف موقع (URL) issuer عبر WebFinger أو مستند خارجي.
- بيانات موفر OpenID الوصفية: يمكن للعميل استرداد ومعالجة المستند الوصفي لفهم قدرات ونقاط نهاية موفر OpenID.
كيف يعمل اكتشاف OIDC؟
اكتشاف موفر OpenID issuer
موفر OpenID issuer هو معرف فريد (عادة ما يكون نفسه URL) يمكن للعملاء استخدامه لاكتشاف تكوين موفر OpenID. ومع ذلك، يجب على العملاء معرفة موقع issuer قبل أن يتمكنوا من استرداد المستند الوصفي.
إذا كان موقع issuer معروفًا بالفعل، يمكن للعميل تخطي الخطوة التالية. خلاف ذلك، يمكن للعميل استخدام WebFinger لاكتشاف موقع issuer. المعلومات اللازمة لاكتشاف OIDC issuer هي:
host
: مكان استضافة خدمة WebFinger.resource
: عنوان البريد الإلكتروني أو URL لموفر OpenID.rel
: نوع العلاقة، والذي يجب أن يكون مضبوطًا علىhttp://openid.net/specs/connect/1.0/issuer
.
على سبيل المثال، يحاول مستخدم بعنوان البريد الإلكتروني [email protected]
اكتشاف موقع issuer على example.com
. ستبدو طلبية WebFinger كما يلي:
GET /.well-known/webfinger?resource=acct%3Afoo%40bar.com&
rel=http%3A%2F%2Fopenid.net%2Fspecs%2Fconnect%2F1.0%2Fissuer HTTP/1.1
Host: example.com
المعلمة resource
عند فك ترميزها تكون acct:[email protected]
، ومعلمة rel
تكون http://openid.net/specs/connect/1.0/issuer
.
بيانات موفر OpenID الوصفية
بمجرد أن يعرف العميل موقع issuer، يمكنه استرداد المستند الوصفي من نقطة النهاية المعروفة. المسار إلى المستند الوصفي هو /.well-known/openid-configuration
نسبياً إلى URL الخاص بـ issuer.
على سبيل المثال، إذا كان URL الخاص بالـ issuer هو https://oidc.example.com
، يمكن للعميل استرداد المستند الوصفي من https://oidc.example.com/.well-known/openid-configuration
. هنا مثال غير معياري للاستجابة الوصفية:
{
"issuer": "https://oidc.example.com",
"authorization_endpoint": "https://oidc.example.com/authorize",
"token_endpoint": "https://oidc.example.com/token",
//...
}
يحتوي المستند الوصفي على الكثير من المعلومات المفيدة حول موفر OpenID. دعونا نبرز بضع حقول رئيسية:
issuer
: المعرف الفريد لموفر OpenID. يجب استخدامه للتحقق من صحة الرموز.authorization_endpoint
: URL لبدء طلب مصادقة (Authentication request) .token_endpoint
: URL لإرسال طلب الرمز (Token request) .jwks_uri
: URL لاسترداد مجموعة مفاتيح شبكية جاسونية (JWKS) للتحقق من مفتاح التوقيع (Signing key) .response_types_supported
: أنواع الاستجابة المدعومة لـ طلب مصادقة (Authentication request) .scopes_supported
: النطاقات المدعومة لـ طلب مصادقة (Authentication request) .claims_supported
: الادعاءات المدعومة لـ رمز الهوية (ID token) .token_endpoint_auth_methods_supported
: طرق تحقيق العميل المدعومة لـ طلب الرمز (Token request) .
للحصول على قائمة شاملة بالحقول الوصفية، يرجى الرجوع إلى مواصفة OpenID Connect Discovery 1.0 .