OAuth plugin

triangle/oauth содержит OAuth-адаптеры. Пакет возвращает адаптер провайдера или HTTP-ответ перенаправления из authenticate(). Это библиотека для интеграции в приложение; конкретные маршруты, callback и хранение сессии настраивает приложение.

Совместимость и установка

Пакет требует PHP ^8.2, localzet/http ^2 и triangle/engine ^8.1; также необходимы ext-curl, ext-json и ext-mbstring. Совместимость фиксируется в матрице.

composer require triangle/oauth
 

Конфигурация и создание адаптера

Triangle\OAuth\OAuth принимает конфигурационный массив или путь к PHP-файлу, возвращающему массив. Для провайдера задайте enabled, ключи и callback-параметры. Точные поля зависят от адаптера:

use Triangle\OAuth\OAuth;
 
$oauth = new OAuth([
    'callback' => 'https://example.test/auth/callback',
    'providers' => [
        'GitHub' => [
            'enabled' => true,
            'keys' => [
                'id' => env('GITHUB_CLIENT_ID'),
                'secret' => env('GITHUB_CLIENT_SECRET'),
            ],
        ],
    ],
]);
 
$result = $oauth->authenticate('GitHub');
 

authenticate() может вернуть Triangle\Engine\Response с redirect на провайдера либо экземпляр адаптера. После callback приложение должно снова создать адаптер с тем же хранилищем, обработать callback через authenticate() и только затем читать токен/профиль средствами конкретного адаптера. Интерфейсы не одинаковы для всех провайдеров; сверяйте их классы в исходном репозитории.

Безопасность

  • Храните client secrets вне исходного кода и не журналируйте access/refresh tokens.
  • Используйте HTTPS для callback в production.
  • Реализуйте CSRF state и постоянное хранилище OAuth-состояния на стороне приложения. Пакет принимает StorageInterface, но автоматически не подключает Web session.
  • Проверьте список и фактическую реализацию провайдера до использования; наличие класса не означает актуальность OAuth endpoints стороннего сервиса.