Публічний API Casdoor
Веб-інтерфейс фронтенду Casdoor - це SPA (Single-Page Application), розроблений на React. Фронтенд на React використовує RESTful API Casdoor, який надається кодом бекенду на Go. Цей RESTful API називається Casdoor Public API
. Іншими словами, за допомогою HTTP-запитів ви можете робити все так само, як і сам веб-інтерфейс Casdoor. Немає інших обмежень. API може бути використаний наступним чином:
- Фронтенд Casdoor
- Клієнтські SDK 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-авторизації (тобто отримати токен за допомогою коду та стану). Дозволи для API-викликів будуть такими ж, як у користувача.
Нижче наведені приклади показують, як викликати функцію 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)
}
Всі надані токени доступу також можна переглянути через веб-інтерфейс адміністратором на сторінці Tokens. Наприклад, відвідайте: 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 Bearer token, формат HTTP-заголовка:
Authorization: Bearer <The access token>
2. За допомогою Client ID
та Client secret
Як отримати client ID та secret?
Сторінка редагування додатку (наприклад, https://door.casdoor.com/applications/casbin/app-vue-python-example) покаже client ID та secret для додатку. Ця автентифікація корисна, коли ви хочете викликати API як "машину", "додаток" або "сервіс" замість користувача. Дозволи для API-викликів будуть такими ж, як у додатку (тобто адміністратора організації).
Нижче наведені приклади показують, як викликати функцію 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. За допомогою Access key
та Access secret
Ми можемо використовувати access key та access secret користувача Casdoor для виклику Casdoor Public API
як сам користувач. Access key та access secret можна налаштувати на сторінці налаштувань користувача адміністратором або самим користувачем. API update-user
також може бути викликаний для оновлення цих полів. Дозволи для API-викликів будуть такими ж, як у користувача.
Як автентифікуватися?
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'
4. За допомогою username
та password
Цей метод автентифікації не є безпечним і зберігається тут лише для сумісності або демонстраційних цілей. Ми рекомендуємо використовувати попередні три методи автентифікації замість цього.
Що станеться?
Креденціали користувача будуть відкриті як параметри GET
у URL запиту. Більше того, креденціали користувача будуть перехоплені у відкритому тексті мережею, якщо ви використовуєте HTTP замість HTTPS.
Ми можемо використовувати ім'я користувача та пароль користувача Casdoor для виклику Casdoor Public API
як сам користувач. Ім'я користувача має формат <Назва організації користувача>/<Ім'я користувача>
. Дозволи для API-викликів будуть такими ж, як у користувача.
Як автентифікуватися?
HTTP
GET
параметр, формат URL:/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