Mediumjwtauth

Что такое JWT и зачем?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

JWT (JSON Web Token) — compact, self-contained токен для аутентификации. Формат: header.payload.signature (base64). Сервер после login выдаёт JWT, клиент отправляет с каждым запросом (Authorization: Bearer), сервер проверяет signature без обращения к DB.

import jwt
from fastapi import Depends
from fastapi.security import OAuth2PasswordBearer

oauth2_scheme = OAuth2PasswordBearer(tokenUrl='token')

# Создание токена
token = jwt.encode(
    {'sub': user_id, 'exp': datetime.utcnow() + timedelta(hours=1)},
    SECRET, algorithm='HS256'
)

async def get_current_user(token: str = Depends(oauth2_scheme)):
    payload = jwt.decode(token, SECRET, algorithms=['HS256'])
    return payload['sub']
  • stateless (не нужно хранить сессии), масштабируемость, кросс-доменная;
  • Нельзя отозвать до истечения (решение: blacklist, short-lived + refresh token);
  • Payload не encrypted (не хранить секреты, можно прочитать);
  • Библиотеки: PyJWT, python-jose;
  • Альтернативы: sessions (server-side), opaque tokens (random + DB lookup).

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.