Авторизация и доступ к API¶
Этот раздел описывает, как получить доступ к API CARGO.RUN и как передавать токен авторизации в запросах.
1. Общие принципы¶
Доступ к API CARGO.RUN защищён с помощью JWT-токена, который передаётся в HTTP-заголовке:
Заголовок передается во все методы, которым требуется авторизация. Формат значения: слово Bearer, пробел и токен доступа.
2. Базовый URL¶
Базовый URL API определяется для конкретного клиента при подключении:
Во всех примерах далее используется абстрактный <baseUrl>.
3. Получение токена доступа¶
Для получения токена используется метод:
3.1. Модель запроса¶
Для интеграции поле code может быть проигнорировано. Используется для авторизации водителей.
Полученный токен имеет ограниченный срок действия и не требует повторного запроса
при каждой операции. До его истечения или после ответа 401 обновите пару токенов.
Не вычисляйте срок действия самостоятельно: используйте accessToken.expiresIn
из ответа. Значение задаётся сервером и может отличаться между средами.
3.2. Пример запроса¶
POST <baseUrl>/api/Account/GenerateToken
Content-Type: application/json
{
"userName": "user@example.com",
"password": "P@ssw0rd",
"code": "999999"
}
3.3. Успешный ответ¶
Основные поля ответа:
| Поле | Тип | Описание |
|---|---|---|
accessToken.token |
string |
JWT для заголовка Authorization |
accessToken.expiresIn |
integer |
Срок действия access token в секундах |
refreshToken |
string |
Токен для обновления пары токенов |
requiresTwoFactor |
boolean |
Требуется ли второй фактор |
twoFactorToken |
object? |
Временный токен второго фактора, если он требуется |
currentUser |
object? |
Данные текущего пользователя |
Сокращённый пример без пользовательских данных:
{
"accessToken": {
"token": "<jwt>",
"expiresIn": 1800
},
"refreshToken": "<refresh_token>",
"requiresTwoFactor": false,
"twoFactorToken": null
}
3.4. Ограничения метода¶
Метод /api/Account/GenerateToken не предназначен для регулярного или частого вызова. На стороне сервера действуют ограничения (cooldown), и при слишком частом запросе токена сервер может вернуть ошибку 429.
Причина введения ограничения:
- метод должен использоваться только для начальной авторизации пользователя;
- дальнейшая работа с API должна выполняться через механизм обновления токена (
RefreshToken).
4. Обновление токена¶
Для обновления токена необходимо использовать метод:
4.1. Модель запроса¶
4.2. Пример запроса¶
POST <baseUrl>/api/Account/RefreshToken
Content-Type: application/json
{
"accessToken": "<старый_access_token>",
"refreshToken": "<refresh_token>"
}
При успехе метод возвращает новую пару в том же формате. Сохраните оба новых значения атомарно; не продолжайте использовать прежний refresh token, если сервер вернул новый.
5. Передача токена в запросах¶
Пример:
6. Ошибки авторизации¶
401 Unauthorized¶
- отсутствует заголовок
- токен просрочен или недействителен
403 Forbidden¶
- недостаточно прав
7. Рекомендации по безопасности¶
- не хранить токены в логах;
- ограничить доступ к файлам конфигурации;
- использовать только HTTPS;
- при утечке токена немедленно перевыпустить.