Skip to content

Аутентификация пользователей

В некоторых сценариях использования ваш кастомный сервер должен иметь возможность понять, какой пользователь инициирует запрос.

Когда это необходимо

Аутентификация пользователя на сервере необходима, если ваш кастомный endpoint должен выполнять действия от имени конкретного пользователя.

Например, серверу может потребоваться:

  • создать заказ для текущего пользователя;
  • получить данные пользователя и использовать их в бизнес-логике;
  • проверить права пользователя перед выполнением операции;
  • связать созданные данные с конкретным пользователем, инициировавшим запрос.

Как это работает

В Kodzero нет одного глобального verify-эндпоинта для всех проектов.

Проверка выполняется через verify-эндпоинт конкретной пользовательской коллекции, в которой вы ведете учет пользователей вашего приложения.

Пример URL:

http
GET https://api.kodzero.pro/v1/:projectId/:collectionId/:strategy/verify
Authorization: Bearer ACCESS_TOKEN

Подробнее о методе: Авторизация - Проверка токена (verify).

Алгоритм

text
Frontend
    ↓ Authorization: Bearer USER_TOKEN
Ваш сервер
    ↓ Authorization: Bearer USER_TOKEN
Kodzero verify (ваша user-коллекция)
    ↓ _id, _identity
Ваш сервер
    ↓ бизнес-логика
    ↓ Authorization: Bearer ADMIN_API_KEY
    ↓ X-Kodzero-Profile: admin
Kodzero API

Пример проверки токена на сервере

cURL

bash
curl -X GET "https://api.kodzero.pro/v1/:projectId/:collectionId/:strategy/verify" \
  -H "Authorization: Bearer $USER_TOKEN"

Node.js (fetch)

js
const verifyResponse = await fetch(
  'https://api.kodzero.pro/v1/:projectId/:collectionId/:strategy/verify',
  {
    method: 'GET',
    headers: {
      Authorization: `Bearer ${userToken}`
    }
  }
)

const verifyData = await verifyResponse.json()

if (!verifyData.ok) {
  return res.status(401).json({ message: 'Unauthorized user token' })
}

const kodzeroUser = verifyData.result
// kodzeroUser._id - ID пользователя
// kodzeroUser._identity - основная идентичность (например, email)

Результат проверки через verify

Успешная проверка:

json
{
  "ok": true,
  "result": {
    "_id": "123",
    "_identity": "user@example.com",
    "_workspace": "1234",
    "iat": 1111,
    "exp": 2222
  }
}

Неуспешная проверка:

json
{
  "ok": false
}

Дополнительная информация

  • User Token подтверждает личность конечного пользователя.
  • Admin API-ключ дает вашему серверу административный доступ к данным проекта.