Перейти к основному содержимому

Авторизация через OpenID Connect для доступа к пространству

Входные данные

  • SPACE_URL: адрес пространства
  • LOGIN: логин пользователя
  • PASSWORD: пароль пользователя

Сценарий авторизации

  1. Получаем данные о конфигурации подключения к 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
    }
    }
  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=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
    }
  3. Запускаем фоновый процесс обновления токенов:

    Процесс выполняется каждые 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
}
}