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 стороннего сервиса.