Refresh Token vs Access Token: в чём разница и почему это важно в Microsoft Entra ID
By Mirko Peters ·
Refresh Token vs Access Token: в чём разница и почему это важно в Microsoft Entra ID
Automatically translated with AI from the original post. Read the English original

Если вам когда-либо было интересно, что на самом деле отличает refresh token от access token, вы попали по адресу. В мире Microsoft Entra ID и современной облачной безопасности эти два типа токенов играют ключевую роль: у каждого свое назначение, свои особенности и свои правила безопасности. Понимание этих различий может серьёзно упростить жизнь при проектировании безопасных сценариев входа для Microsoft 365, Azure или любого приложения, подключённого к платформе Entra.
Это не просто теория. Умение понимать, какой токен использовать и когда, где его хранить и как защитить, — базовый навык для любого ИТ-специалиста, разработчика или администратора в экосистеме Microsoft. От этого выбора зависит не только безопасность приложения, но и то, как пользователи работают каждый день, особенно когда речь идёт о том, чтобы оставаться в системе или восстанавливаться после проблем с безопасностью.
В этом руководстве вы увидите, как access token и refresh token встраиваются в настройку аутентификации и авторизации, почему важны их сроки жизни и чем каждый из них отличается, особенно в средах Microsoft Entra ID. В итоге вы поймёте, как сочетать надёжные меры безопасности с удобством для пользователя при управлении токенами в облаке.
Понимание токенов в современной аутентификации
Современная аутентификация — это прежде всего выдача нужных разрешений в нужный момент, и ключевую роль здесь играют цифровые токены. Если у вас есть онлайн-приложение или сервис, вы, вероятно, уже используете токены, даже не замечая этого. Они выступают посредниками: позволяют приложениям подтверждать вашу личность перед облачным сервисом, не требуя каждый раз ввода пароля.
Токены лежат в основе фреймворка OAuth 2.0, на котором держатся входы в систему и безопасный доступ на таких платформах, как Microsoft Entra ID. Вместо управления идентификаторами сеансов или хрупкими cookie приложения теперь опираются на эти умные цифровые «пропуска», чтобы определять пользователей и предоставлять доступ к чувствительным облачным ресурсам. Этот сдвиг сделал безопасность одновременно строже и удобнее для крупных организаций, переходящих в облако.
Суть в том, что для разных задач используются разные типы токенов. Одни предназначены для временного доступа — быстрые и одноразовые по сути. Другие поддерживают сеанс в фоновом режиме, позволяя работать весь день без бесконечных повторных входов. Именно это различие между access token и refresh token определяет, как облачные сервисы Microsoft, включая Entra ID, одновременно заботятся и о комфорте пользователя, и о безопасности организации.
Этот раздел задаёт основу, которая вам понадобится: что такое токен, какие типы существуют и почему их роли так важны в современной аутентификации. Перейдём к деталям и начнём с самого фундаментального вопроса: что такое токен?
Что такое токен?
Токен в цифровой безопасности — это компактный фрагмент данных, который служит цифровым удостоверением. Представьте его как электронную версию пропуска: приложение предъявляет его, чтобы подтвердить вашу личность или права в другой системе. Токены могут использоваться для аутентификации (вы действительно тот, за кого себя выдаёте?) и авторизации (можно ли вам делать то, что вы делаете?) в облачных приложениях и API.
Токены обычно построены на современных стандартах, таких как OAuth 2.0, и зачастую представляют собой bearer-токены, например JSON Web Tokens (JWT). Их предпочитают классическим идентификаторам сеанса, потому что они более переносимы, могут содержать структурированные утверждения (claims) и обеспечивают безопасный доступ к облачным ресурсам и распределённым системам.
Что такое access token?
Access token — это краткоживущие цифровые учётные данные, которые выдаются приложению после успешной аутентификации. Их основное назначение — предоставить временный доступ с жёстко ограниченной областью действия к конкретным ресурсам, таким как API, пользовательские данные или облачное хранилище, не раскрывая пароли и другие чувствительные сведения.
Такие токены действуют только ограниченное время, обычно 30–90 минут в Microsoft Entra ID. Именно их приложения отправляют с каждым API-запросом, чтобы подтвердить, что пользователь авторизован. По стандартам OAuth 2.0 access token работает в Microsoft 365, Azure и любом сервисе, подключённом к Entra ID, обеспечивая детальные разрешения с ограниченным сроком действия.
Что такое refresh token?
Refresh token — это долгоживущие учётные данные, которые выдаются доверенным приложениям после первоначального входа. В отличие от access token, основная задача refresh token — незаметно получать новые access token, когда текущий истекает, без повторной аутентификации пользователя.
Это означает, что refresh-токен помогает поддерживать долгие сеансы и снижает необходимость многократно входить в систему. В средах Microsoft refresh-токены незаменимы для бесшовной работы пользователей: они позволяют приложениям в фоновом режиме незаметно обновлять доступ между сеансами и устройствами, а также после сетевых сбоев, при этом чувствительные учетные данные остаются защищенными.
Ключевые различия между токеном доступа и refresh-токеном
На первый взгляд токены доступа и refresh-токены могут выглядеть как случайные строки, но их роли и сроки жизни принципиально различаются. Они не взаимозаменяемы: каждый предназначен для строго определенной задачи в процессе аутентификации Microsoft Entra ID.
Токены доступа — это ваш «пропуск» для обращения к API и получения данных, но действуют они недолго. Их намеренно делают короткоживущими, чтобы снизить риски безопасности, особенно если токен утечет. Refresh-токены, напротив, живут дольше. Их задача — сохранять удобство работы пользователя, незаметно повторно выдавая авторизацию в фоновом режиме.
Понимание этих различий — не просто академическое упражнение. Если выбрать неверную стратегию или сохранить токен не в том месте, вы либо будете раздражать пользователей частыми повторными входами, либо оставите серьезные дыры в системе безопасности. В этом блоке разделов разбирается, что делает каждый токен, как долго он действует и что делает его безопасным (или рискованным) на практике, а не только в теории.
Если вы проектируете архитектуру для Microsoft 365, Azure или любого сервиса, подключенного к Entra ID, обратите внимание на следующие различия. Именно они определяют баланс между надежной защитой и бесперебойными сеансами для всех ваших пользователей.
Функциональные роли: что они делают
Токены доступа открывают доступ к API и облачным ресурсам, но их возможности ограничены. Когда токен доступа истекает, без refresh-токена продолжить работу не получится. Refresh-токен — это как пропуск за кулисы: он дает приложению право тихо запросить новый токен доступа, не беспокоя пользователя повторно.
Таким образом, в облаке Microsoft 365 и Azure токены доступа отвечают за действия «прямо сейчас», а refresh-токены обеспечивают, чтобы эти действия могли продолжаться в фоновом режиме от сеанса к сеансу. Такой тандем позволяет строить безопасные рабочие процессы и избавляет пользователей от постоянной повторной аутентификации.
Сроки жизни токенов и почему важен срок действия
Токены доступа живут недолго не случайно — по умолчанию в Entra ID обычно от 30 до 90 минут. Они нужны лишь для того, чтобы предоставить минимально необходимый доступ до истечения срока, снижая риск в случае утечки. Refresh-токены же бегут марафон: они часто действуют дни, недели или даже месяцы, в зависимости от потребностей приложения и настроенных политик безопасности.
Это различие важно, потому что короткоживущие токены означают меньше рисков, но требуют более частого обновления. Долгоживущие refresh-токены обеспечивают непрерывность сеансов, но повышают риски, если они попадут в чужие руки. Ключ — в балансе между безопасностью и удобством пользователя.
Характеристики безопасности токенов доступа и refresh-токенов
- 1. Безопасность токена доступа: Токены доступа предназначены для немедленного, временного использования. Поскольку они обычно действуют менее часа, окно риска при краже невелико. Однако, поскольку это bearer-токены, то есть любой, кто владеет токеном, может им воспользоваться, их необходимо передавать только по HTTPS и хранить в памяти, а не в постоянном хранилище на клиенте.
- 2. Безопасность refresh-токена: Refresh-токены живут долго и являются более чувствительными. Если refresh-токен скомпрометирован, злоумышленник может постоянно получать новые токены доступа, даже после выхода пользователя из системы. Поэтому безопасное хранение критически важно — желательно в защищенной среде (например, в аппаратно защищенном хранилище на мобильных устройствах или в HTTP-only secure cookies в браузерах).
- 3. Поверхности атаки: Токены доступа могут быть перехвачены в процессе передачи, если HTTPS не используется, либо обнаружены в дампах памяти. Refresh-токены, если они хранятся в локальном или сеансовом хранилище, крайне уязвимы для атак межсайтового скриптинга (XSS). Для дополнительной защиты в средах Microsoft применяйте политики условного доступа и отслеживайте аномальное использование токенов.
- 4. Отзыв и риски: Токены доступа, как правило, нельзя отозвать до истечения срока действия, поскольку они часто являются самодостаточными JWT (без состояния). Токены обновления, однако, могут быть активно отозваны или аннулированы сервером авторизации при обнаружении компрометации. О реальных рисках и мерах контроля для долгоживущих токенов читайте в этом обзоре атак через согласие OAuth в Entra ID, где злоумышленники используют постоянный доступ через токены обновления.
- 5. Меры защиты в облаке Microsoft: Сочетание краткоживущих токенов доступа, строгих мер контроля согласия, надёжного журналирования и принудительного применения административного согласия позволяет снизить риски. Управление безопасностью, о котором рассказано в этом выпуске подкаста о управлении безопасностью в Entra ID, следует внедрять для контроля разрастания identity-инфраструктуры и применения более эффективных политик безопасности.
Краткоживущие токены доступа для снижения рисков
Решение сделать токены доступа краткоживущими — не паранойя, а разумное управление рисками. Если краткоживущий токен доступа украден, окно для атаки крайне мало. Через час или раньше он становится бесполезным, что пресекает большинство попыток горизонтального перемещения и повторного воспроизведения токенов.
В распределённых системах, таких как Microsoft 365 и Azure, это также гарантирует, что изменения разрешений пользователей и действия по выходу из системы применяются быстро. Быстрое истечение срока означает, что любое несанкционированное использование токена ограничено узким окном, что позволяет оперативно реагировать без необходимости вести централизованные списки отзыва для каждого токена в обращении.
Долгоживущие токены обновления для бесшовной повторной аутентификации
Токены обновления нужны прежде всего для удобства пользователей. Вместо того чтобы каждый час показывать экран входа, токен обновления позволяет приложениям «обменять» истёкший токен доступа на новый — часто незаметно и мгновенно. Это существенно повышает производительность, особенно при работе с приложениями Microsoft 365 в течение всего дня или с мобильными клиентами при нестабильном соединении.
Компромисс? Чем дольше живёт токен обновления, тем большим риском он обременён в случае компрометации. Поэтому грамотные приложения используют механизмы отзыва и политики условного доступа, взвешивая преимущества бесшовной повторной аутентификации против возможности злоупотребления в случае утечки токена.
Управление жизненным циклом токенов в Microsoft Entra ID
Получить токены — это только полдела; именно управление ими на протяжении времени определяет уровень вашей безопасности и качество пользовательского опыта. В Microsoft Entra ID жизненный цикл токена охватывает всё — от момента создания токена доступа или обновления до того, как и когда он продлевается, ротируется или полностью отзывается.
Этот процесс строится на рекомендациях OAuth 2.0 и на особенностях механизмов управления сеансами в Microsoft. Нужно учитывать угрозы реального времени (например, атаки повторного воспроизведения), проблемы с временем (например, расхождение часов) и тонкости распределённых глобальных систем. Чтобы всё сделать правильно, необходимо понимать ротацию токенов, этапы проверки и пути отзыва.
Следуя подходу Microsoft, организации могут использовать принудительное применение политик, административные средства управления и подробное журналирование для контроля разрастания токенов, особенно по мере роста числа подключённых к облаку устройств. Больше о масштабировании политик безопасности идентификации в крупных средах вы найдёте в практических рекомендациях по управлению в этом выпуске подкаста об условном доступе в Entra ID и снижении рисков.
Далее речь пойдёт о том, как ротировать и продлевать токены, как Entra ID выдаёт и проверяет токены, а также на что обратить внимание в вопросах тайминга и нюансах реализации. Выполните эти шаги правильно, и ваши приложения и пользователи скажут вам спасибо.
Лучшие практики ротации и продления токенов
- 1. Регулярно ротируйте токены: Всегда заменяйте токены доступа по истечении срока; не пытайтесь продлить их действие. Для токенов обновления применяйте ротацию при каждом использовании: каждый раз, когда токен используется для получения нового токена доступа, заменяйте его новым токеном обновления. Это помогает блокировать злоумышленников, которые могли украсть более старый токен.
- 2. Аннулируйте ранее использованные токены: Сделайте стандартной практикой отзыв («занесение в чёрный список») токена обновления сразу после его замены новым. Это гарантирует, что действительным остаётся только самый недавно выпущенный токен обновления, сокращая потенциальное окно для атак повторного воспроизведения.
- 3. Не передавайте токены небезопасным клиентам: Никогда не отправляйте refresh-токены клиентам на стороне браузера с публичным доступом, например одностраничным приложениям (SPA), если в этом нет крайней необходимости. Даже тогда используйте дополнительные средства защиты, например Proof Key for Code Exchange (PKCE).
- 4. Отслеживайте подозрительное использование: Используйте встроенный мониторинг Microsoft Entra ID и уведомления администраторов о необычном использовании токенов, например когда refresh-токен повторно применяется из других мест или с других устройств. Автоматизируйте ответные действия условного доступа, чтобы завершать скомпрометированные сеансы и ограничивать масштаб ущерба.
- 5. Соответствие требованиям для крупных приложений: Microsoft 365, Azure AD и приложения, интегрированные с Entra ID, имеют встроенную поддержку шаблонов ротации токенов. Принимайте их политики по умолчанию как минимум (например, одноразовые refresh-токены для Exchange Online), а затем при необходимости усиливайте защиту для чувствительных нагрузок.
Как выдаются и проверяются токены в Entra ID
- 1. Выдача токенов (сервер авторизации): После успешной аутентификации Microsoft Entra ID (сервер авторизации) выдает access-токен и, если это запрошено, refresh-токен. Обычно это JWT, подписанные цифровой подписью с использованием надежных алгоритмов, таких как RS256, и закрытых ключей, которыми управляет Microsoft.
- 2. Утверждения и содержимое токенов: Access-токен содержит утверждения (claims): сведения о пользователе, его разрешения (scopes) и информацию о сроке действия. Refresh-токены непрозрачны и содержат то, что Entra ID необходимо для безопасного продления сеанса.
- 3. Проверка на серверах ресурсов: Когда ваше приложение или API получает access-токен, оно проверяет цифровую подпись с помощью опубликованного открытого ключа подписи (из конечной точки JWKS Entra ID). Проверка гарантирует, что токен подлинный, не был изменен и все еще действителен (не истек и не отозван).
- 4. Проверки безопасности: Entra ID поддерживает проверку аудитории (audience), контроль областей доступа (scope) и проверку подписи на каждом сервере ресурсов и API. Для критически важных приложений всегда проверяйте эти утверждения и подпись перед предоставлением доступа.
- 5. Отзыв и занесение в черный список: В отличие от автономных access-токенов, refresh-токены можно отозвать в Entra ID, что обеспечивает оперативную реакцию на подозрение в компрометации. Администраторы могут принудительно завершить сеансы или ограничить срок действия токенов с помощью обновления политик.
Льготные периоды и нюансы реализации
Льготные периоды сглаживают реальные временные погрешности в аутентификации на основе токенов. Поскольку серверы и клиенты часто работают с немного различающимися часами, что известно как сдвиг часов (clock skew), Microsoft Entra ID при проверке срока действия токенов добавляет небольшой допуск (обычно около 5 минут). Это не дает входу в систему завершаться ошибкой из-за разницы во времени в доли секунды.
Для наилучших результатов синхронизируйте часы всех серверов с помощью NTP и учитывайте, что развертывания с высокой доступностью или в нескольких регионах могут немного увеличивать окна срока действия токенов. Руководствуйтесь рекомендациями документации Entra ID по льготным периодам и обязательно тестируйте поведение на реальном трафике, особенно для пользователей, которые перемещаются между регионами или часовыми поясами.
Безопасное хранение и обработка токенов в клиентских приложениях
Даже самый надежный токен защищен лишь настолько, насколько защищено место, где он хранится. Поэтому безопасное хранение и обработка — самая практичная задача для любого приложения, использующего аутентификацию Microsoft Entra ID. Где хранить access- или refresh-токен, зависит от клиента: браузера, мобильного или настольного приложения. У каждой среды есть свои сильные стороны, слабые места и типичные ловушки.
Если вы считаете, что хранение токенов в localStorage браузера безобидно, подумайте еще раз: достаточно одной XSS-атаки, и токен украден. Мобильные приложения кажутся безопаснее, но root- или jailbreak-доступ может раскрыть и «безопасные» токены. А в одностраничных приложениях (SPA) у вас даже нет варианта безопасного хранилища, недоступного для вредоносных скриптов.
Этот раздел поможет принять верное решение о способах хранения для разных типов приложений. Вы увидите разбор практических вариантов — HTTP-only защищенные cookie, память сеанса браузера, платформенные защищенные хранилища — и обязательные шаги для надежного хранения долгоживущих токенов. Также вы узнаете, почему публичным клиентам, где клиентские секреты нельзя скрыть, нужно уделять особое внимание, и получите план хранения и ротации с учетом рисков для каждого сценария.
Безопасность вашего приложения зависит от этих решений, поэтому не полагайтесь на случай. Изучите безопасные и небезопасные шаблоны, которые определяют, устоит ли ваше приложение или сдастся при первых признаках кражи токенов.
Безопасное хранение refresh-токенов для разных типов клиентов
- 1. Веб-приложения (браузеры): Самое безопасное место для хранения refresh-токенов в браузерах — cookie с атрибутами HTTP-only и Secure. В отличие от localStorage или sessionStorage, такие cookie не могут быть прочитаны JavaScript, поэтому они защищены от XSS. Не храните токены в localStorage: он уязвим для атак через скрипты и не должен содержать ничего конфиденциального.
- 2. Одностраничные приложения (SPA): У SPA нет безопасного постоянного хранилища. Лучшее, что можно сделать, — держать токены в памяти браузера (переменные JavaScript) на время сеанса. При перезагрузке страницы токены пропадают, и риск снижается. Никогда не сохраняйте refresh-токены в хранилищах или cookie, которые вы не контролируете, и по возможности опирайтесь на короткоживущие access-токены и тихое обновление.
- 3. Мобильные приложения: Для хранения refresh-токенов используйте защищённое хранилище ключей устройства (iOS Keychain или Android Keystore). Такие защищённые платформой хранилища предназначены для блокировки доступа других приложений и системных процессов: даже если телефон скомпрометирован или получен root-доступ, извлечь токены сложно.
- 4. Настольные приложения: Для хранения постоянных токенов используйте диспетчеры учётных данных на уровне операционной системы (например, Windows Credential Locker). Никогда не записывайте их в текстовые файлы или пользовательские каталоги, где их может получить вредоносное ПО.
- 5. Граница корпоративной среды: Во всех случаях применяйте дополнительные меры контроля, такие как шифрование устройства, блокировка экрана пользователя и возможность удалённой очистки. Для особо важных рабочих нагрузок требуйте повторной аутентификации (step-up) перед открытием или использованием refresh-токена, хранящегося на устройстве.
Особые соображения по ротации токенов в публичных клиентах
- 1. Публичные клиенты не могут хранить секреты: Публичные клиенты — SPA и некоторые мобильные приложения — не могут надёжно скрыть refresh-токены или секреты клиента. Считайте, что всё, что сохранено, потенциально раскрыто.
- 2. Используйте только короткоживущие access-токены: По возможности сводите refresh-токены к минимуму или отказывайтесь от них. Опирайтесь на короткоживущие access-токены и запрашивайте интерактивную повторную аутентификацию вместо долгосрочного хранения.
- 3. Ротируйте токены при каждом использовании: Если без refresh-токенов не обойтись, применяйте схемы ротации с одноразовым использованием: выпускайте новый refresh-токен при каждой выдаче и отзывайте предыдущий.
- 4. Используйте PKCE для дополнительной защиты: Требуйте Proof Key for Code Exchange (PKCE) в потоках OAuth. Это блокирует большинство атак перехвата даже в открытых средах.
Лучшие практики управления access- и refresh-токенами
Знать правила безопасности токенов — одно, а применять их на практике каждый день — другое. Когда речь идёт о конфиденциальных данных Microsoft 365, рабочих нагрузках в Azure или любом сценарии Entra ID, ставки выше: нужно сочетать надёжную защиту с удобством для пользователей, которым не хочется постоянно проходить вход.
В этом разделе собраны обязательные действия и то, чего следует избегать при управлении refresh- и access-токенами в масштабе. Давайте честно: у облака Microsoft есть свои особенности, от сложных условного доступа до тесной интеграции с Microsoft Defender и Microsoft Purview для мониторинга и управления. Рекомендации здесь затрагивают все этапы: выдачу токенов, безопасное хранение, ротацию, использование и, когда понадобится, быстрое отключение доступа в случае сбоя.
Ниже — практические выводы, которые можно внедрить уже сейчас, чтобы ваши приложения обеспечивали двойное обещание: «удобнее и безопаснее». Хотите больше о повышении уровня безопасности Microsoft 365 без потери продуктивности пользователей? Обязательно ознакомьтесь с этим более широким руководством по усилению безопасности M365 без раздражения пользователей, в котором рассматриваются Defender, Purview и условный доступ в средах Entra ID.
Ниже приведён краткий обзор основных правил выбора, обработки и защиты access- и refresh-токенов в любой реализации на базе Microsoft.
Главное о выборе и обработке токенов
- Используйте access-токены только для немедленного краткосрочного доступа к ресурсам; refresh-токены применяйте только там, где важны бесшовные постоянные сеансы и при этом действуют средства контроля безопасности.
- Храните токены безопасно: используйте защищённые платформой хранилища, например cookie с атрибутами HTTP-only для веба, хранилища ключей для мобильных устройств и диспетчеры учётных данных для настольных приложений. Никогда не храните чувствительные токены в открытом виде или в localStorage браузера.
- Внедрите ротацию и отзыв токенов, гарантируя, что при каждом обновлении токена refresh-токены заменяются, а старые аннулируются, чтобы сократить окна для атак.
- Найдите баланс между длительностью сессии и удобством пользователей; не делайте access-токены настолько короткими, чтобы пользователей постоянно просили войти заново, но и не делайте их слишком долгими, иначе при утечке токена возникнет лишний риск.
- Контролируйте, управляйте и проверяйте использование токенов— интегрируйте их с такими инструментами, как Microsoft Defender и Purview, и применяйте Conditional Access для рискованных сценариев входа. При подозрении или обнаружении компрометации незамедлительно отзывайте доступ.
Заключение и быстрая проверка знаний
Понимание разницы между access-токенами и refresh-токенами — это не просто пункт в чек-листе для процесса OAuth 2. Это ключ к созданию безопасных и удобных сценариев на платформе идентификации Microsoft, такой как Entra ID. Найти правильный баланс между короткими сроками жизни токенов ради безопасности и более длинными циклами обновления ради удобства — настоящее искусство, особенно когда вы управляете пользовательскими сессиями на нескольких устройствах или в нескольких сервисах.
Готовы к быстрой проверке знаний? Спросите себя: как бы вы обрабатывали истечение срока действия токена в приложении при нестабильном интернет-соединении? Должны ли refresh-токены когда-либо попадать в ваши бэкенд-микросервисы? Если этот обзор был полезен или открыл для вас что-то новое, поделитесь своим мнением: лучшие комментарии открывают новые возможности и усиливают всё сообщество. Понравился материал? Оставайтесь с нами и продолжайте совершенствовать навыки в области безопасности!