Skip to content
mxHeadless
REST API gateway для headless-фронтендов на MODX 3. Ресурсы, объекты, OpenAPI, API keys и OAuth
  1. Компоненты
  2. mxHeadless
  3. Аутентификация
  4. OAuth

OAuth

Bearer-токены mxt_* с коротким TTL. По умолчанию выключено.

Включение

КлючПо умолчаниюНазначение
mxheadless_oauth_enabledfalsePOST /api/v1/auth/token
mxheadless_oauth_token_ttl3600TTL access token (секунды)
mxheadless_oauth_password_grant_enabledfalseGrant password

Клиент

bash
php core/components/mxheadless/bin/oauth-client-create.php \
  --client-id=next-preview \
  --name='Next preview' \
  --scopes=resources.read,preview \
  --grants=client_credentials

Secret показывают один раз. Таблицы: mxheadless_oauth_clients, mxheadless_oauth_tokens (hash).

Выпуск токена

bash
curl -s -X POST https://example.com/api/v1/auth/token \
  -H 'Content-Type: application/json' \
  -d '{
    "grant_type": "client_credentials",
    "client_id": "next-preview",
    "client_secret": "YOUR_CLIENT_SECRET",
    "scope": "resources.read"
  }'

Ответ содержит access_token (mxt_...), token_type, expires_in. Дальше:

bash
curl -s https://example.com/api/v1/resources \
  -H "Authorization: Bearer mxt_..."

Поддерживаются application/json и application/x-www-form-urlencoded. Для client credentials допускается HTTP Basic с client_id/client_secret.

Grants

GrantКогда
client_credentialsMachine-to-machine (default)
passwordТолько если mxheadless_oauth_password_grant_enabled=true

Ошибка OAuth: 400 invalid_grant.

Key или token

CredentialКогда
mxh_*CI, долгие workers, без refresh
mxt_*TTL, ротация без redeploy секрета в каждом сервисе

Оба типа проходят один scope checker. CSRF не нужен.