Авторизация в SaaS-приложении: полная настройка без кода
Ключевые тезисы:
Настройка регистрации, входа, сброса пароля и входа через Google без написания кода
Хэширование паролей — базовое требование безопасности для защиты данных пользователей
Сессии (куки) — механизм, позволяющий серверу "помнить" авторизованного пользователя
Верификация email — обязательный шаг для защиты от спама и подтверждения пользователя
OAuth-авторизация (через Google) — удобный и безопасный способ входа для пользователей
Безопасность и внутреннее устройство
Хэширование паролей
Хэширование паролей — это процесс преобразования пароля в нечитаемую строку символов, которую невозможно обратно восстановить до оригинала. Пароль никогда не хранится в базе данных в открытом виде.
- Причина: Базы данных могут утекать. Если пароли хэшированы, злоумышленник не сможет ими воспользоваться.
- Дополнительный риск: Пользователи часто используют одни и те же пароли на разных сервисах.
Механизм сессий
HTTP-протокол не сохраняет состояние. Для запоминания пользователя используется механизм сессий:
- После успешного ввода пароля сервер создаёт запись о сессии.
- Браузеру выдаётся уникальный идентификатор сессии (куки).
- При каждом новом запросе браузер отправляет этот идентификатор.
- Сервер проверяет его и предоставляет доступ к личному кабинету.
- Время жизни сессии можно настраивать (например, 30 минут) для повышения безопасности.
Верификация email
- Зачем это нужно? Чтобы предотвратить регистрацию на чужой email, что может привести к жалобам на спам и блокировке вашего почтового сервиса.
- Как работает? После регистрации на указанный адрес отправляется письмо со ссылкой для подтверждения. Аккаунт активируется только после перехода по ней.
OAuth-авторизация (Вход через Google)
- Пользователь авторизуется на стороне Google, который затем передаёт вашему приложению только разрешённые данные (email, имя).
- Преимущества:
- Удобство для пользователя (не нужно запоминать новый пароль).
- Для разработчика: email уже подтверждён Google, отдельная верификация не требуется.
Практическая настройка в проекте (One Shot)
Что уже реализовано в шаблоне:
- Формы регистрации, входа, восстановления пароля.
- Автоблокировка при многократном неверном вводе пароля.
- Одноразовые ссылки для сброса пароля (действуют 1 час).
- Панель администратора для управления всеми настройками авторизации.
Настройка отправки писем (SMTP)
Для работы регистрации и восстановления пароля необходимо подключить почтовый сервис (на примере Resend):
- Регистрация в Resend: Бесплатный тариф (100 писем/день).
- Добавление домена: Необходимо для отправки писем с вашего адреса (
user@yourdomain.com) и избегания спама. Требует добавления DNS-записей. - Создание API-ключа: Копируется один раз в настройках Resend.
- Заполнение настроек в панели One Shot: В разделе "Почта" вводятся:
- Host, Port
- Username:
resend - Пароль: API-ключ
- From Email и From Name
Настройка входа через Google
- Создание проекта в Google Cloud Console.
- Настройка экрана согласия (OAuth consent screen):
- Тип приложения:
External. - После настройки необходимо опубликовать приложение (Publish App). Верификация не требуется для запроса только email и имени.
- Тип приложения:
- Создание учётных данных (Credentials):
- Тип:
Web application. - Важный шаг: В
Authorized redirect URIsнеобходимо вставить Google Callback URL из настроек One Shot. - Копируем
Client IDиClient Secret.
- Тип:
- Активация в One Shot: Включаем Google в настройках, вставляем полученные ключи.
Итоги и следующий шаг
Результат: После выполнения настроек в проекте полностью работают:
Регистрация с подтверждением email
Вход по паролю
Сброс пароля
Отправка писем с вашего домена
Вход через Google
Следующий этап: Деплой приложения на сервер, чтобы сделать его доступным в интернете.