62 lines
2.0 KiB
Python
62 lines
2.0 KiB
Python
"""
|
|
Настройки JWT токенов для аутентификации.
|
|
"""
|
|
from datetime import timedelta
|
|
|
|
|
|
# ==============================================
|
|
# SIMPLE JWT SETTINGS
|
|
# ==============================================
|
|
|
|
SIMPLE_JWT = {
|
|
# Время жизни access токена (3 часа - достаточно для длинных уроков)
|
|
'ACCESS_TOKEN_LIFETIME': timedelta(hours=3),
|
|
|
|
# Время жизни 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),
|
|
}
|
|
|