مرحباً بك في خادم OAuth

هذا الخادم يدعم بروتوكول OAuth 2.0:

البدء

لاستخدام خادم OAuth هذا، يرجى الاتصال بنا لطلب تطبيق OAuth.

يرجى تقديم وصف قصير للتطبيق الذي تقوم بإنشائه، بالإضافة إلى التفاصيل أدناه. لا تقلق إذا كنت غير متأكد - يمكننا استخدام الوصف الذي تقدمه للمساعدة.

  1. نوع العميل: عام أم سري؟
  2. نوع المنح: تفويض، بيانات اعتماد العميل، أم جهاز؟
  3. معرفات الموارد الموحدة (URIs) المسموح بإعادة التوجيه إليها.
  4. الموارد التي ترغب في الوصول إليها. يرجى استكشاف وثائق واجهة برمجة التطبيقات (API) الخاصة بنا، و واجهة برمجة تطبيقات GraphQL الخاصة بنا.

مثال (ترخيص)

1. إنشاء رمز التحقق من PKCE والتحدي

// Generate a code verifier (random string)
const codeVerifier = crypto.randomUUID().replace(/-/g, '');

// Create a code challenge (SHA-256 hash of verifier)
const encoder = new TextEncoder();
const data = encoder.encode(codeVerifier);
const digest = await crypto.subtle.digest('SHA-256', data);
const codeChallenge = btoa(String.fromCharCode(...new Uint8Array(digest))).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');

2. طلب تفويض

قم بإعادة توجيه المستخدم إلى الرابط التالي:
https://auth.sesa-kraken.systems/authorize/?
  client_id=YOUR_CLIENT_ID&
  response_type=code&
  redirect_uri=YOUR_REDIRECT_URI&
  code_challenge=CODE_CHALLENGE&
  code_challenge_method=S256
لا تقم أبداً بتضمين سر في هذا الرابط لأنه مرئي في شريط العنوان الخاص بالمتصفح.
في هذه الخطوة، يتم عرض خيار للمستخدم للموافقة على الوصول أو رفضه. إذا وافق المستخدم، يقوم المتصفح بإعادة التوجيه إلى YOUR_REDIRECT_URI ويقوم بتضمين AUTH_CODE في معاملات استعلام الرابط.

3. استبدال رمز الترخيص برمز وصول

يحتاج المعالج الخاص بك في YOUR_REDIRECT_URI إلى تنفيذ الاتصال التالي:
POST https://auth.sesa-kraken.systems/token/
Content-Type: application/x-www-form-urlencoded

client_id=YOUR_CLIENT_ID&
client_secret=CLIENT_SECRET& # احذفه للعملاء العامين
grant_type=authorization_code&
code=AUTH_CODE&
redirect_uri=YOUR_REDIRECT_URI&
code_verifier=YOUR_CODE_VERIFIER
إذا كنت تنوي إجراء هذا الاتصال من الواجهة الأمامية، يجب أن يكون تطبيق OAuth عاماً ويتم حذف السر من الطلب.
إذا كنت تنوي إجراء هذا الاتصال من الواجهة الخلفية، يجب أن يكون تطبيق OAuth سرياً ويتم تضمين السر في الطلب.

4. الوصول إلى المورد المحمي

GET https://api.sesa-kraken.systems/resource/
Authorization: YOUR_ACCESS_TOKEN

مثال (بيانات اعتماد العميل)

1. تبادل بيانات الاعتماد للحصول على رمز وصول

POST https://auth.sesa-kraken.systems/token/
Authorization: Basic BASE64_ENCODED(client_id:client_secret)
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials

2. الوصول إلى المورد المحمي

GET https://api.sesa-kraken.systems/resource/
Authorization: YOUR_ACCESS_TOKEN

مثال (الجهاز)

1. تفويض الجهاز

POST https://auth.sesa-kraken.systems/device-authorization/
Content-Type: application/x-www-form-urlencoded

client_id=YOUR_CLIENT_ID

يجب على الجهاز استخدام الاستجابة لعرض أو إبلاغ user_code و verification_uri للمستخدم النهائي. يمكن للأجهزة المزودة بشاشات عرض هذه المعلومات بصرياً، بينما قد تستخدم الأجهزة التي لا تحتوي على شاشات بدائل مثل الصوت أو البلوتوث.

         +-----------------------------------------------+
         |                                               |
         |  Using a browser on another device, visit:    |
         |  https://auth.example.com/device              |
         |                                               |
         |  And enter the code:                          |
         |  ETE39050                                     |
         |                                               |
         +-----------------------------------------------+

يقوم المستخدم بزيارة verification_uri للمصادقة، وإدخال user_code وتفويض الجهاز.

2. تبادل رمز الجهاز للحصول على رمز وصول

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

POST https://auth.sesa-kraken.systems/token/
Content-Type: application/x-www-form-urlencoded

client_id=YOUR_CLIENT_ID&device_code=DEVICE_CODE&grant_type=urn:ietf:params:oauth:grant-type:device_code

3. الوصول إلى المورد المحمي

GET https://api.sesa-kraken.systems/resource/
Authorization: YOUR_ACCESS_TOKEN

مثال (تبادل الرموز)

يتم دعم دلالات تفويض RFC 8693. هذا يعني أنك ستستخدم رمز بيانات اعتماد العميل في كل من ترويسة Authorization و actor_token، كما هو موضح أدناه.

1. استرد رمز وصول لتطبيق بيانات اعتماد العميل الخاص بك، كما هو موضح في مثال (بيانات اعتماد العميل).

2. بافتراض أن EXTERNAL_IDP_USER_ACCESS_TOKEN قد تم إصداره بواسطة موفر الهوية الخارجي الخاص بك، قم بإجراء استدعاء تبادل الرموز:

POST https://auth.sesa-kraken.systems/token
Authorization: YOUR_CLIENT_CREDENTIALS_ACCESS_TOKEN
Content-Type: application/x-www-form-urlencoded

grant_type="urn:ietf:params:oauth:grant-type:token-exchange"&
actor_token_type="urn:ietf:params:oauth:token-type:access_token"&
actor_token=YOUR_CLIENT_CREDENTIALS_ACCESS_TOKEN&
subject_token_type="urn:ietf:params:oauth:token-type:access_token"&
subject_token=EXTERNAL_IDP_USER_ACCESS_TOKEN

3. الوصول إلى المورد المحمي

GET https://api.sesa-kraken.systems/resource/
Authorization: YOUR_ACCESS_TOKEN

الموارد