Что такое Access Token в контексте безопасности?

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

Ответ

Access Token (Токен доступа) — это учетные данные, выданные сервером авторизации, которые клиентское приложение использует для доступа к защищенным ресурсам (API) от имени пользователя. Это ключевой компонент протоколов OAuth 2.0 и OpenID Connect.

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

  • Краткосрочный: Имеет ограниченный срок жизни (например, 1 час) для минимизации рисков.
  • Ограниченный по правам (scope): Определяет, к каким ресурсам и операциям предоставлен доступ.
  • Передается в запросах: Обычно в заголовке Authorization по схеме Bearer.

Пример использования в HTTP-запросе:

GET /api/user/profile HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Типы токенов:

  1. JWT (JSON Web Token): Самодостаточный токен, содержащий в себе полезную нагрузку (claims) с данными о пользователе и правах. Может проверяться без обращения к серверу авторизации, если известен ключ подписи.
  2. Непрозрачный токен (Opaque Token): Просто случайная строка, которая служит ссылкой на данные, хранящиеся на сервере авторизации. Для проверки требуется интроспекция токена.

Почему используется? Токены отделяют сервис авторизации от ресурсных серверов, обеспечивают ограниченный доступ и упрощают архитектуру распределенных систем.