uchill/backend/config/jwt_settings.py

62 lines
2.0 KiB
Python

"""
Настройки JWT токенов для аутентификации.
"""
from datetime import timedelta
# ==============================================
# SIMPLE JWT SETTINGS
# ==============================================
SIMPLE_JWT = {
# Время жизни access токена (15 минут)
'ACCESS_TOKEN_LIFETIME': timedelta(minutes=15),
# Время жизни refresh токена (7 дней)
'REFRESH_TOKEN_LIFETIME': timedelta(days=7),
# Обновлять refresh токен при каждом использовании
'ROTATE_REFRESH_TOKENS': True,
# Добавлять старые refresh токены в blacklist
'BLACKLIST_AFTER_ROTATION': True,
# Обновлять last_login при получении токена
'UPDATE_LAST_LOGIN': True,
# Алгоритм подписи токена
'ALGORITHM': 'HS256',
# Ключ для подписи (из settings)
'SIGNING_KEY': None, # Будет взят SECRET_KEY из settings
# Верификация подписи
'VERIFYING_KEY': None,
# Аудитория
'AUDIENCE': None,
'ISSUER': None,
# Заголовки
'AUTH_HEADER_TYPES': ('Bearer',),
'AUTH_HEADER_NAME': 'HTTP_AUTHORIZATION',
# Claim'ы токена
'USER_ID_FIELD': 'id',
'USER_ID_CLAIM': 'user_id',
# Дополнительные claim'ы
'AUTH_TOKEN_CLASSES': ('rest_framework_simplejwt.tokens.AccessToken',),
'TOKEN_TYPE_CLAIM': 'token_type',
# Leeway для учета расхождения времени между серверами
'JTI_CLAIM': 'jti',
'LEEWAY': 0,
# Sliding tokens (не используем)
'SLIDING_TOKEN_REFRESH_EXP_CLAIM': 'refresh_exp',
'SLIDING_TOKEN_LIFETIME': timedelta(minutes=5),
'SLIDING_TOKEN_REFRESH_LIFETIME': timedelta(days=1),
}