DEV Community на русском
Подписаться
Auth для Laravel — headless мульти-аутентификация с 2FA, passkeys и JWT-сессиями
Auth for Laravel — это пакет с открытым исходным кодом, предназначенный для аутентификации учетных записей в приложениях Laravel с поддержкой API, устраняющий распространенные уязвимости безопасности, присущие пользовательским реализациям. Он предлагает четыре метода входа: пароль, волшебная ссылка, код по электронной почте и passkey, а также надежный механизм проверки для двухфакторной аутентификации, включая принудительную регистрацию. Пакет предоставляет токены доступа RS256 с ротируемыми токенами обновления, детальное управление сеансами устройств и такие функции, как регистрация, приглашения, проверка электронной почты и сброс пароля. Он включает журнал активности входа, ограничение скорости, оповещения о новых устройствах и настраиваемые хуки правил риска.Auth for Laravel поддерживает отдельные защитники для разных типов учетных записей (пользователи, клиенты, сотрудники), каждый со своими независимыми моделями, конфигурациями, конечными точками и аудиториями JWT. Конечные точки JSON являются необязательными и настраиваемыми для каждого защитника, при этом каждое изменение состояния запускает событие для расширяемости. Установка включает несколько команд composer и artisan, которые публикуют необходимые конфигурации и миграции, с проверкой установки для устранения неполадок. Разработчики интегрируют пакет, заставляя модель своего защитника реализовывать определенные контракты и трейты аутентификации.Вход в систему возвращает пару токенов или запрос на двухфакторную аутентификацию, которую можно завершить с помощью различных методов, таких как коды TOTP или passkeys. Пакет обеспечивает одноразовые запросы, хранящиеся в виде хэшей HMAC, и подсчитывает попытки ввода кода перед проверкой, чтобы предотвратить атаки параллельного угадывания. Конфигурация маршрутов гибка, позволяя настраивать префиксы, имена и промежуточное ПО для каждого защитника, при этом маршруты активны только в том случае, если соответствующая функция включена.Auth for Laravel тщательно обрабатывает настройки безопасности: попытки входа для незарегистрированных адресов возвращают тот же ответ, ограничение скорости происходит до хэширования пароля, а конфиденциальные ссылки/коды являются одноразовыми хэшами. По умолчанию изменения паролей, адресов электронной почты или настроек двухфакторной аутентификации аннулируют другие сеансы, а повторное использование ротируемых токенов обновления приводит к завершению сеанса и оповещениям. Тестирование предназначено для проверки реальных защитников и проверок токенов, а пакет предоставляет вспомогательные средства для работы в качестве учетной записи в тестах.Хотя социальный вход и SSO не встроены, существующие обратные вызовы SSO могут выдавать токены через API пакета. Пакет требует PHP ^8.4, Laravel 12 или 13, хранилище кэша с атомарными блокировками и транспорт электронной почты. Он лицензирован по MIT, а зависимости в основном ограничены Laravel, Symfony и другими пакетами Roundly.