واجهة برمجة التطبيقات العامة لـ 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 لموقع العرض التوضيحي.
كيفية المصادقة؟
معامل HTTP
GET
، تنسيق عنوان URL هو:/page?access_token=<The access token>
مثال موقع العرض التوضيحي:
https://door.casdoor.com/api/get-global-providers?access_token=eyJhbGciOiJSUzI1NiIs
رمز الحامل 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.
كيفية المصادقة؟
معامل HTTP
GET
، تنسيق عنوان URL هو:/page?clientId=<The client ID>&clientSecret=<the client secret>
مثال على موقع تجريبي:
https://door.casdoor.com/api/get-global-providers?clientId=294b09fbc17f95daf2fe&clientSecret=dd8982f7046ccba1bbd7851d5c1ece4e52bf039d
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
لتحديث هذه الحقول. ستكون أذونات استدعاءات الواجهة البرمجية هي نفسها كالمستخدم.
كيفية المصادقة؟
Create a pair of accessKey and accessSecret in account setting page.
معامل 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
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
كالمستخدم نفسه. يأخذ اسم المستخدم التنسيق <اسم منظمة المستخدم>/<اسم المستخدم>
. ستكون الأذونات لاستدعاءات واجهة برمجة التطبيقات هي نفسها كالمستخدم.
كيفية المصادقة؟
معامل
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