التخطي إلى المحتوى الرئيسي

واجهة برمجة التطبيقات العامة لـ Casdoor

واجهة المستخدم الأمامية لـ Casdoor هي SPA (تطبيق صفحة واحدة) تم تطويرها في React. واجهة React الأمامية تستهلك واجهة برمجة التطبيقات RESTful التي يكشف عنها كود الخلفية Go. يُشار إلى هذه الواجهة البرمجية RESTful باسم Casdoor Public API. بعبارة أخرى، بواسطة استدعاءات HTTP، يمكنك القيام بكل شيء تمامًا كما تفعل واجهة المستخدم الويب لـ Casdoor نفسها. لا توجد قيود أخرى. يمكن استخدام الواجهة البرمجية من قبل الآتي:

  • واجهة المستخدم الأمامية لـ Casdoor
  • حزم تطوير العميل لـ Casdoor (مثل، casdoor-go-sdk)
  • أي شيفرة مخصصة أخرى من جانب التطبيق

يمكن العثور على المرجع الكامل لـ Casdoor Public API على Swagger: https://door.casdoor.com/swagger. تم إنشاء وثائق Swagger هذه تلقائيًا باستخدام أداة Bee من Beego. إذا كنت ترغب في إنشاء وثائق Swagger بنفسك، انظر: كيفية إنشاء ملف swagger

كيفية المصادقة مع Casdoor Public API

1. بواسطة Access token

يمكننا استخدام رمز الوصول الممنوح لمستخدم مصادق لاستدعاء Casdoor Public API كالمستخدم نفسه.

كيفية الحصول على رمز الوصول؟

يمكن للتطبيق الحصول على رمز الوصول لمستخدم Casdoor في نهاية عملية تسجيل الدخول OAuth (أي الحصول على الرمز بواسطة الكود والحالة). ستكون أذونات استدعاءات الواجهة البرمجية هي نفسها كالمستخدم.

توضح الأمثلة أدناه كيفية استدعاء وظيفة GetOAuthToken() في Go عبر casdoor-go-sdk.

func (c *ApiController) Signin() {
code := c.Input().Get("code")
state := c.Input().Get("state")

token, err := casdoorsdk.GetOAuthToken(code, state)
if err != nil {
c.ResponseError(err.Error())
return
}

claims, err := casdoorsdk.ParseJwtToken(token.AccessToken)
if err != nil {
c.ResponseError(err.Error())
return
}

if !claims.IsAdmin {
claims.Type = "chat-user"
}

err = c.addInitialChat(&claims.User)
if err != nil {
c.ResponseError(err.Error())
return
}

claims.AccessToken = token.AccessToken
c.SetSessionClaims(claims)

c.ResponseOk(claims)
}

يمكن أيضًا الوصول إلى جميع رموز الوصول الممنوحة عبر واجهة المستخدم الويب من قبل مستخدم مسؤول في صفحة الرموز. على سبيل المثال، قم بزيارة: https://door.casdoor.com/tokens لموقع العرض التوضيحي.

كيفية المصادقة؟

  1. معامل HTTP GET، تنسيق عنوان URL هو:

    /page?access_token=<The access token>

    مثال موقع العرض التوضيحي: https://door.casdoor.com/api/get-global-providers?access_token=eyJhbGciOiJSUzI1NiIs

  2. رمز الحامل HTTP، تنسيق رأس HTTP هو:

    Authorization: Bearer <The access token>

2. بواسطة Client ID و Client secret

كيفية الحصول على معرف العميل والسر؟

ستعرض صفحة تحرير التطبيق (مثل، https://door.casdoor.com/applications/casbin/app-vue-python-example) معرف العميل والسر لتطبيق. هذه المصادقة مفيدة عندما تريد استدعاء الواجهة البرمجية كـ "آلة"، "تطبيق" أو "خدمة" بدلاً من مستخدم. ستكون أذونات استدعاءات الواجهة البرمجية هي نفسها كالتطبيق (أي المسؤول عن المنظمة).

توضح الأمثلة أدناه كيفية استدعاء وظيفة GetOAuthToken() في Go عبر casdoor-go-sdk.

كيفية المصادقة؟

  1. معامل HTTP GET، تنسيق عنوان URL هو:

    /page?clientId=<The client ID>&clientSecret=<the client secret>

    مثال على موقع تجريبي: https://door.casdoor.com/api/get-global-providers?clientId=294b09fbc17f95daf2fe&clientSecret=dd8982f7046ccba1bbd7851d5c1ece4e52bf039d

  2. HTTP Basic Authentication، تنسيق رأس HTTP هو:

    Authorization: Basic <The Base64 encoding of client ID and client secret joined by a single colon ":">

إذا لم تكن معتادًا على ترميز Base64، يمكنك استخدام مكتبة للقيام بذلك لأن HTTP Basic Authentication هو معيار شائع يدعمه العديد من الأماكن.

3. بواسطة مفتاح الدخول و السر الخاص بالدخول

يمكننا استخدام مفتاح الدخول والسر الخاص بالدخول لمستخدم Casdoor لاستدعاء واجهة برمجة تطبيقات Casdoor العامة كالمستخدم نفسه. يمكن تكوين مفتاح الدخول والسر الخاص بالدخول في صفحة إعدادات المستخدم من قبل المدير أو المستخدم نفسه. يمكن أيضًا استدعاء واجهة برمجة التطبيقات update-user لتحديث هذه الحقول. ستكون أذونات استدعاءات الواجهة البرمجية هي نفسها كالمستخدم.

كيفية المصادقة؟

  1. Create a pair of accessKey and accessSecret in account setting page.

  2. معامل HTTP GET، تنسيق عنوان URL هو:

    /page?accessKey=<The user's access key>&accessSecret=<the user's access secret>"

مثال على موقع تجريبي: https://door.casdoor.com/api/get-global-providers?accessKey=b86db9dc-6bd7-4997-935c-af480dd2c796/admin&accessSecret=79911517-fc36-4093-b115-65a9741f6b14

User Api Key

curl --location 'http://door.casdoor.com/api/user?accessKey=b86db9dc-6bd7-4997-935c-af480dd2c796&accessSecret=79911517-fc36-4093-b115-65a9741f6b14'

٤. بواسطة username و password

تحذير

هذه الطريقة في المصادقة غير آمنة ومحتفظ بها هنا فقط لأغراض التوافق أو العرض التوضيحي. نوصي باستخدام الطرق الثلاثة السابقة للمصادقة بدلاً من ذلك.

ماذا سيحدث؟

سيتم كشف بيانات اعتماد المستخدم كمعاملات GET في عنوان URL للطلب. علاوة على ذلك، سيتم التقاط بيانات اعتماد المستخدم بنص عادي عبر الشبكة إذا كنت تستخدم HTTP بدلاً من HTTPS.

يمكننا استخدام اسم المستخدم وكلمة المرور لمستخدم Casdoor لاستدعاء Casdoor Public API كالمستخدم نفسه. يأخذ اسم المستخدم التنسيق <اسم منظمة المستخدم>/<اسم المستخدم>. ستكون الأذونات لاستدعاءات واجهة برمجة التطبيقات هي نفسها كالمستخدم.

كيفية المصادقة؟

  1. معامل GET لبروتوكول HTTP، تنسيق الرابط هو:

    /page?username=<The user's organization name>/<The user name>&password=<the user's password>"

مثال على موقع تجريبي: https://door.casdoor.com/api/get-global-providers?username=built-in/admin&password=123