Авторизация через OpenID Connect для доступа к пространству
Входные данные
SPACE_URL
: адрес пространстваLOGIN
: логин пользователяPASSWORD
: пароль пользователя
Сценарий авторизации
-
Получаем данные о конфигурации подключения к OIDC серверу:
GET {SPACE_URL}/api/.well-known/oidc
Response Body
{
"data": {
"authority": "https://id.sinica.ru/realms/ff10df50-9c35-4e51-b408-519342e584da", // Псевдоним – OIDC_AUTHORITY
"client_id": "space" // Псевдоним – OIDC_CLIENT_ID
}
} -
Получаем токен авторизации:
POST {OIDC_AUTHORITY}/protocol/openid-connect/token
Headers
Content-Type: application/x-www-form-urlencoded
Request Body
client_id={OIDC_CLIENT_ID}&grant_type=password&username={LOGIN}&password={PASSWORD}
Response Body
{
"access_token": "eyJhbGciOiJ...7UNNWDyyUUmRs9E8f0", // Псевдоним – ACCESS_TOKEN
"token_type": "Bearer", // Псевдоним – TOKEN_TYPE
"expires_in": 3600, // Псевдоним – EXSPIRES_IN
"refresh_token": "eyJhbGciOiJIUz...7XvF7UNNWDyyUUmRs9E8f0" // Псевдоним – REFRESH_TOKEN
} -
Запускаем фоновый процесс обновления токенов:
Процесс выполняется каждые
EXSPIRES_IN * 0.9
секунд.Если
REFRESH_TOKEN
закончился, повторяем шаг 2:POST {OIDC_AUTHORITY}/protocol/openid-connect/token
Headers
Content-Type: application/x-www-form-urlencoded
Request Body
client_id={OIDC_CLIENT_ID}&grant_type=refresh_token&refresh_token={REFRESH_TOKEN}
Response Body
{
"access_token": "e312tewr12334...7U312321wqedsa231", // Псевдоним – ACCESS_TOKEN
"token_type": "Bearer", // Псевдоним – TOKEN_TYPE
"expires_in": 3600, // Псевдоним – EXSPIRES_IN
"refresh_token": "ewqe213fdsfsdc...ewqe123gffdtre21" // Псевдоним – REFRESH_TOKEN
}
Завершение
После успешного завершения указанных шагов, вы получите авторизованный доступ к пространству
Авторизация происходит с использованием следующих параметров:
- Тип токена:
TOKEN_TYPE
- Значение токена:
ACCESS_TOKEN
Эти данные необходимы для верификации пользователя и предоставления доступа к защищенным ресурсам.
Пример получения данных
Request
GET {SPACE_URL}/api/lessons/1
Headers
Authorization: {TOKEN_TYPE} {YOUR_ACCESS_TOKEN}
Content-Type: application/json
Response
{
"data": {
"id": 1,
"space_id": 1,
"course_id": 1,
"name": "Урок",
"description": null,
"created_at": "2024-04-09T05:41:31.000000Z",
"updated_at": "2024-04-09T05:41:31.000000Z",
"deleted_at": null,
"content_file_id": null,
"attachment_files": [],
"content_file": null
}
}