Junior
Какво е токен?
sobes.tech AI
Отговор от 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"Успешно получен токен: {auth_token}")
# Пример за използване на токена (заявка към защитен ресурс)
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("Достъп до защитения ресурс успешен!")
print(protected_response.json())
else:
print("Не успяхме да получим токен от отговора.")
except requests.exceptions.RequestException as e:
print(f"Заявката неуспешна: {e}")
Общо взето, токенът осигурява безопасен и безсъстояние начин за управление на достъпа, намалявайки натоварването на сървъра за удостоверяване при всяка заявка към защитените ресурси.