Найти в Дзене
5 подписчиков

Модель Authenticator в связке Next.js, Auth.js (NextAuth) и PostgreSQL необходима для реализации поддержки WebAuthn (вход по отпечатку пальца, Face ID или физическим ключам вроде YubiKey).

Зачем нужны эти поля:

credentialID: уникальный идентификатор ключа, который генерирует устройство пользователя.
credentialPublicKey: открытый ключ, который хранится на вашем сервере (в PostgreSQL). Он используется для проверки подписи при входе; закрытый ключ при этом никогда не покидает устройство пользователя.
counter: счетчик использований. Помогает предотвратить атаки повторного воспроизведения (клонирование ключа).
transports: список поддерживаемых каналов связи (USB, NFC, Bluetooth, внутренняя биометрия), чтобы браузер знал, как именно запрашивать аутентификацию.

credentialDeviceType и credentialBackedUp: хранят информацию о типе устройства и наличии резервной копии ключа (например, в iCloud Keychain или Google Password Manager).
Основные функции модели:

Хранение публичных ключей: Без этой таблицы сервер не сможет сопоставить пользователя с его «железным» ключом.
Многофакторная аутентификация (MFA): Позволяет добавить Passkeys как второй фактор или полностью заменить ими пароли.
Безопасность: Защищает от фишинга, так как учетные данные жестко привязаны к вашему домену и не могут быть перехвачены.
Если вы не планируете использовать вход по биометрии или USB-ключам, эту модель можно не добавлять в схему Prisma. 
1 минута