Назад к вопросам
Junior
97
questionbank
Что такое токен?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Токен в контексте аутентификации и авторизации — это непрозрачная строка данных, выданная сервером после успешной аутентификации пользователя (или клиента). Он представляет собой учетные данные пользователя или клиента для дальнейшего доступа к защищенным ресурсам без необходимости повторно вводить логин и пароль.
Типы токенов:
- Bearer Token: Самый распространенный тип, передается в заголовке
AuthorizationкакBearer <токен>. Получатель токена (сервер) должен предоставить доступ тому, кто "несет" (bearer) токен, без дополнительной проверки подлинности. - JWT (JSON Web Token): Структурированный, самодостаточный токен, содержащий информацию о пользователе или сессии в закодированном виде. Состоит из трех частей, разделенных точками: заголовок (header), полезная нагрузка (payload) и цифровая подпись (signature). Может быть подписан (JWS) или зашифрован (JWE).
Наши тестовые сценарии для работы с токенами включают:
- Получение токена: Проверка корректности запроса аутентификации и успешного получения токена.
- Использование токена: Проверка доступа к защищенным ресурсам с действительным токеном.
- Недействительный/истекший токен: Проверка отказа в доступе при использовании некорректного, поддельного или истекшего токена.
- Отсутствие токена: Проверка отказа в доступе при попытке доступа без токена.
- Обновление токена (Refresh Token): Если используется, проверка механизма получения нового Access Token с помощью Refresh Token.
- Отзыв токена (Revocation): Проверка успешного отзыва токена и последующего отказа в доступе.
При автоматизации используем:
- Библиотеки HTTP-клиентов (например,
requestsв Python,Axiosв JavaScript) для отправки запросов с токенами. - Парсинг ответа для извлечения токена.
- Сохранение токена в переменной для последующего использования.
import requests
# Пример получения токена (запрос к fictitious_auth_endpoint)
url = "https://api.example.com/auth"
payload = {
"username": "testuser",
"password": "password123"
}
try:
response = requests.post(url, json=payload)
response.raise_for_status() # Проверка на ошибки HTTP (4xx, 5xx)
token_data = response.json()
auth_token = token_data.get("access_token") # Получаем токен из ответа
if auth_token:
print(f"Successfully received token: {auth_token}")
# Пример использования токена (запрос к protected_resource)
protected_url = "https://api.example.com/protected"
headers = {
"Authorization": f"Bearer {auth_token}" # Передача токена в заголовке
}
protected_response = requests.get(protected_url, headers=headers)
protected_response.raise_for_status()
print("Access to protected resource successful!")
print(protected_response.json())
else:
print("Failed to get token from response.")
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
В целом, токен обеспечивает безопасный и безстатусный способ управления доступом, снижая нагрузку на сервер аутентификации при каждом запросе к защищенным ресурсам.