Sobes.tech
Junior

Какво е токен?

sobes.tech AI

Отговор от AI

Токенът в контекста на удостоверяване и авторизация е непрозрачен низ от данни, издаден от сървъра след успешно удостоверяване на потребителя (или клиента). Той представлява удостоверителни данни на потребителя или клиента за по-нататъшен достъп до защитени ресурси без необходимост от повторно въвеждане на потребителско име и парола.

Видове токени:

  • Bearer Token: Най-разпространеният тип, предава се в заглавието Authorization като Bearer <токен>. Получателят на токена (сървърът) трябва да предостави достъп на този, който "носител" (bearer) токена, без допълнителна проверка на автентичността.
  • JWT (JSON Web Token): Структуриран, самодостатъчен токен, съдържащ информация за потребителя или сесията в кодирана форма. Състои се от три части, разделени с точки: заглавие (header), полезна нагрузка (payload) и цифров подпис (signature). Може да бъде подписан (JWS) или криптиран (JWE).

Нашите тестови сценарии за работа с токени включват:

  1. Получаване на токен: Проверка на коректността на заявката за удостоверяване и успешно получаване на токен.
  2. Използване на токен: Проверка на достъпа до защитени ресурси с валиден токен.
  3. Невалиден/изтекъл токен: Проверка на отказ за достъп при използване на некоректен, фалшифициран или изтекъл токен.
  4. Липса на токен: Проверка на отказ за достъп при опит за достъп без токен.
  5. Обновяване на токен (Refresh Token): Ако се използва, проверка на механизма за получаване на нов Access Token с помощта на Refresh Token.
  6. Отмяна на токен (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}")

Общо взето, токенът осигурява безопасен и безсъстояние начин за управление на достъпа, намалявайки натоварването на сървъра за удостоверяване при всяка заявка към защитените ресурси.