Ответ
Аутентификация — это процесс проверки личности пользователя, чтобы убедиться, что он является тем, за кого себя выдает. Проще говоря, это ответ на вопрос «Кто ты?».
В веб-приложениях это обычно первый шаг для предоставления доступа к защищенным ресурсам.
Распространенные методы:
- Пароли: Классический метод, где пользователь предоставляет логин и пароль.
- Токены (JWT, OAuth): После успешного входа сервер выдает клиенту подписанный токен. Клиент прикрепляет этот токен к последующим запросам для подтверждения своей личности.
- Биометрия: Использование отпечатков пальцев, распознавания лиц (например, через WebAuthn).
- Многофакторная аутентификация (MFA): Требует подтверждения личности из нескольких источников (например, пароль + код из SMS).
Пример (упрощенный) с JWT в FastAPI:
from fastapi import FastAPI, Depends, HTTPException
from fastapi.security import OAuth2PasswordBearer
import jwt # PyJWT
app = FastAPI()
SECRET_KEY = "your-super-secret-key"
ALGORITHM = "HS256"
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
# Упрощенная функция для создания токена
@app.post("/token")
async def login(form_data: dict):
# В реальном приложении здесь будет проверка пользователя в БД
if form_data.get("username") == "user" and form_data.get("password") == "pass":
token_data = {"sub": form_data.get("username")}
encoded_jwt = jwt.encode(token_data, SECRET_KEY, algorithm=ALGORITHM)
return {"access_token": encoded_jwt, "token_type": "bearer"}
raise HTTPException(status_code=401, detail="Incorrect username or password")
# Защищенный эндпоинт
@app.get("/users/me")
async def read_users_me(token: str = Depends(oauth2_scheme)):
# Здесь будет декодирование и валидация токена
return {"message": "Hello, authenticated user!"}
Важно: Не путать с авторизацией — процессом проверки прав доступа пользователя к определенным ресурсам (ответ на вопрос «Что тебе можно делать?»). Аутентификация всегда предшествует авторизации.