JWT-аутентификация в FastAPI
Аутентификация отвечает на вопрос: «Кто вы?» Авторизация отвечает на вопрос: «Что вы можете делать?»
Если вы создаете ИИ-платформу без защиты, любой сможет получить доступ к конфиденциальным данным. Злоумышленники могут изменять профили пользователей или просматривать успеваемость студентов. Вы обязаны защищать свои ресурсы.
JWT (JSON Web Token) решает эту проблему. Вместо того чтобы отправлять пароль с каждым запросом, пользователь отправляет защищенный токен.
Рабочий процесс:
- Регистрация пользователя
- Хеширование пароля
- Вход в систему и проверка учетных данных
- Генерация JWT-токена
- Доступ к защищенным маршрутам
Вам следует использовать следующие инструменты:
- passlib с bcrypt для хеширования паролей
- python-jose для генерации токенов
Никогда не храните пароли в открытом виде. Если хакер украдет вашу базу данных, он получит всё. Вместо этого храните хеш.
Хеш превращает «password123» в длинную строку случайных символов. Вы не можете превратить хеш обратно в пароль. Вы лишь проверяете, соответствует ли введенный пароль хешу.
Как это реализовать:
Регистрация Пользователь отправляет имя пользователя и пароль. Вы хешируете пароль и сохраняете его в базе данных.
Вход в систему Пользователь отправляет учетные данные. Вы находите сохраненный хеш. Вы используете библиотеку для проверки пароля. Если он совпадает, вы создаете токен.
Генерация JWT Токен содержит данные пользователя и время истечения срока действия. Вы подписываете токен секретным ключом. Если пользователь попытается изменить данные, подпись станет недействительной.
Ответ при входе выглядит так: { "access_token": "eyJhbGciOiJIUzI1Ni...", "token_type": "bearer" }
Теперь у пользователя есть ключ к вашей системе.
В следующей части мы узнаем, как использовать эти токены для защиты определенных маршрутов и управления ролями пользователей.
Краткий обзор шагов:
- Регистрация пользователя
- Хеширование и сохранение пароля
- Проверка пароля при входе
- Генерация подписанного JWT
Источник: https://dev.to/zeroshotanu/fastapi-for-ai-engineers-part-6-jwt-authentication-in-fastapi-5fpk
Дополнительное обучающее сообщество: https://t.me/GyaanSetuAi