Перейти до основного вмісту

Публічний 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 для демонстраційного сайту.

Як автентифікуватися?

  1. HTTP GET параметр, формат URL:

    /page?access_token=<The access token>

    Приклад демонстраційного сайту: https://door.casdoor.com/api/get-global-providers?access_token=eyJhbGciOiJSUzI1NiIs

  2. 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.

Як автентифікуватися?

  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. За допомогою Access key та Access secret

Ми можемо використовувати access key та access secret користувача Casdoor для виклику Casdoor Public API як сам користувач. Access key та access secret можна налаштувати на сторінці налаштувань користувача адміністратором або самим користувачем. API update-user також може бути викликаний для оновлення цих полів. Дозволи для API-викликів будуть такими ж, як у користувача.

Як автентифікуватися?

  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'

4. За допомогою username та password

обережно

Цей метод автентифікації не є безпечним і зберігається тут лише для сумісності або демонстраційних цілей. Ми рекомендуємо використовувати попередні три методи автентифікації замість цього.

Що станеться?

Креденціали користувача будуть відкриті як параметри GET у URL запиту. Більше того, креденціали користувача будуть перехоплені у відкритому тексті мережею, якщо ви використовуєте HTTP замість HTTPS.

Ми можемо використовувати ім'я користувача та пароль користувача Casdoor для виклику Casdoor Public API як сам користувач. Ім'я користувача має формат <Назва організації користувача>/<Ім'я користувача>. Дозволи для API-викликів будуть такими ж, як у користувача.

Як автентифікуватися?

  1. 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