Labs · AAuth

Аутентификация WordPress без внешнего провайдера

AAuth выдаёт и проверяет JWT-токены силами самого сайта: источник истины по пользователям остаётся в таблице wp_users, отдельный Identity Provider не нужен.

Что умеет

Что работает в версии 0.1.0

  • Выдача JWT на RS256: пара ключей генерируется при активации, секрет настраивать не нужно.

  • Refresh-сессии с ротацией токенов и отзывом — выключены по умолчанию, включаются флагом.

  • Вход по ссылке из письма (magic link) с одноразовым погашением токена — тоже опция.

  • Список разрешённых origin для CORS с точным совпадением и корректным preflight.

  • Режим совместимости с jwt-authentication-for-wp-rest-api: старые клиенты продолжают ходить на прежний маршрут.

  • Команда `wp aauth doctor` и публичный JWKS для проверки конфигурации.

Для кого

Когда это нужно

Мобильное приложение или скрипт

Клиенту нужен Bearer-токен к REST API WordPress и ничего больше.

Фронтенд на своём домене

JS-приложение ходит в WordPress напрямую, и нужен список разрешённых origin вместо звёздочки в CORS.

Переезд с JWT-плагина

Существующие клиенты остаются на прежнем маршруте, выпуск токенов переезжает на AAuth.

Вход без пароля

Сценарий «пришлите ссылку на почту» с тем же выпуском токенов, что и обычный вход.

Как поставить

Установка и настройка

  1. 01

    Требования: WordPress 6.4 и PHP 8.1 или новее.

  2. 02

    Поставить плагин из репозитория и активировать — при активации создаются таблицы сессий, аудита и magic-ссылок и генерируется пара ключей.

  3. 03

    Переменные окружения и константы `wp-config.php` старше настроек в админке: заданное там поле становится доступным только для чтения.

  4. 04

    Проверить конфигурацию: `wp aauth doctor` и запрос к `/wp-json/aauth/v1/.well-known/jwks.json`.

Статус

Версия 0.1.0 и её границы

Ядро выпущено и покрыто тестами и интеграционным прогоном. Ниже — то, чего в плагине пока нет; это цели дорожной карты, а не возможности сегодняшней версии.

  • Вход через социальные сервисы не реализован.

  • Режим OIDC-провайдера не реализован.

  • Отдельного headless-режима CMS нет.

  • Выпуск и обновление токена по обычному HTTP заблокированы везде, кроме локальных и тестовых окружений.