Каким образом сервер определяет, что access-токен не взломан?
Answer from AI
sobes.tech AI
Сервер проверяет подлинность access-токена, используя несколько механизмов:
-
Подпись токена: Обычно access-токены (например, JWT) подписываются секретным ключом или приватным ключом асимметричного шифрования. Сервер проверяет подпись с помощью известного ключа, чтобы убедиться, что токен не был изменён.
-
Проверка срока действия: Токен содержит поле с временем истечения (exp). Сервер проверяет, что токен ещё действителен.
-
Проверка черного списка: Если токен был отозван, сервер может сверяться с базой отозванных токенов.
-
Проверка соответствия пользователя и прав: Сервер проверяет, что данные в токене соответствуют ожидаемым правам доступа.
Пример проверки JWT на Python с использованием библиотеки PyJWT:
import jwt
secret_key = 'your-secret'
token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'
try:
payload = jwt.decode(token, secret_key, algorithms=['HS256'])
# Токен валиден
except jwt.ExpiredSignatureError:
# Токен истёк
except jwt.InvalidTokenError:
# Токен недействителен
Таким образом, сервер доверяет токену, если подпись корректна и токен не истёк.