Passkeys дозволяють забути про паролі. Замість них ви створюєте спеціальний ключ, що зберігається в 1Pass, стандартному менеджері паролів MacOS або будь-якому іншому застосунку на ваш смак.
Це максимально зручно для користувачів: не потрібно вводити email чи пароль, не потрібно чекати редиректу на сторонні сервіси для автентифікації, а сам вхід відбувається миттєво.
🔑 Авторизація через Passkey — це справжнє задоволення. Жодних паролів чи email, жодних редиректів, усе відбувається миттєво…
— Freek Van der Herten 🔭 (@freekmurze) 6 травня 2025
📦 Розробляю рішення, щоб зробити цей процес максимально простим у #Laravel. https://t.co/idt0nGCWCC
🫡 Напишу про це в блозі завтра pic.twitter.com/iH2QqfLRWm
Для розробників, однак, головним мінусом була складність реалізації Passkeys. Ми раді представити новий пакет spatie/laravel-passkeys, який робить додавання цієї функції в Laravel-застосунок максимально простим.
Як використовувати пакет
Пакет надає два компоненти, які закривають усі потреби у роботі з Passkeys:
- Livewire-компонент
livewire:passkeysдля генерації та відображення списку ключів користувача. - Blade-компонент, що рендерить посилання для запуску процесу авторизації.
Генерація та відображення ключів
Для керування ключами призначений Livewire-компонент livewire:passkeys.
Ось так виглядає створення Passkey у сервісі Mailcoach, який уже використовує наш пакет.
Після встановлення пакета (що потребує лише кількох кроків), вам достатньо просто додати компонент у ваш view-файл.
<livewire:passkeys />
Ми навмисно зробили початковий дизайн компонента мінімалістичним, щоб ви могли стилізувати його під свій інтерфейс. На відео вище ми адаптували його під UI Mailcoach.
Автентифікація за допомогою Passkeys
Щоб дозволити користувачам входити в систему, додайте Blade-компонент authenticate-passkey на сторінку логіну.
<x-authenticate-passkey />
Перегляньте, як працює вхід у Mailcoach: не потрібно вводити ані пошту, ані пароль. Просто натискаєте "Log in with passkey", а 1Pass (або інший застосунок) робить усе інше.
Як це працює зсередини
Passkey — це унікальна пара ключів, яку створює менеджер паролів або апаратний ключ безпеки. Один ключ — публічний — зберігається у таблиці passkeys вашого Laravel-застосунку, а інший — приватний — залишається у менеджері паролів.
Під час входу ваш застосунок генерує challenge (запит), який менеджер паролів "підписує" приватним ключем. Ця безпечна відповідь надсилається назад у Laravel. Якщо перевірка успішна — користувач авторизований.
Більше про технологію можна дізнатися тут. Також на Laracasts є чудовий курс про впровадження Passkeys у Laravel.
Допоможіть нам
Зараз пакет підтримує лише Livewire і не має готових компонентів для застосунків на Inertia. Проте ви можете використовувати класи Action із нашого пакета у власних компонентах для Inertia.
Якщо ви працюєте з Inertia на Vue або React, ми будемо вдячні за PR з документацією чи готовими компонентами.
На завершення
Passkeys — це неймовірно зручно. Для мене це улюблений спосіб авторизації в будь-якому сервісі. З новим пакетом spatie/laravel-passkeys додати таку можливість у ваш проект стане справою кількох хвилин.
Щоб почати роботу, переходьте до детальної документації.