Что такое Access Token в контексте сетевой аутентификации?

«Что такое Access Token в контексте сетевой аутентификации?» — вопрос из категории Сети, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Access Token — это кратковременный учетный токен (обычно в формате JWT), который клиентское приложение использует для доступа к защищённым ресурсам API от имени пользователя после успешной аутентификации.

Роль в потоке OAuth 2.0:

  1. Пользователь логинится (например, вводит пароль или через социальную сеть).
  2. Сервер аутентификации возвращает Access Token (и часто Refresh Token).
  3. Клиент включает Access Token в каждый последующий запрос к API.

Как используется в запросе: Токен передаётся в заголовке Authorization по схеме Bearer.

let url = URL(string: "https://api.example.com/me")!
var request = URLRequest(url: url)
request.httpMethod = "GET"
// Добавление токена в заголовок
request.setValue("Bearer (accessToken)", forHTTPHeaderField: "Authorization")

let task = URLSession.shared.dataTask(with: request) { data, response, error in
    // Обработка ответа API
}
task.resume()

Ключевые характеристики:

  • Короткий срок жизни: От нескольких минут до нескольких часов. Это ограничивает ущерб в случае утечки.
  • Не содержит чувствительных данных: Обычно это подписанная строка, содержащая идентификатор пользователя (subject) и права доступа (scopes).
  • Отзыв: Сервер может аннулировать токен до истечения срока его действия.
  • Безопасное хранение: Токены должны храниться в защищённом хранилище, таком как Keychain Services. Никогда не храните их в UserDefaults или в plain-text файлах.

Для продления сессии без повторного ввода пароля используется Refresh Token, который обменивается на новый Access Token.