Срок действия маркера обновления Azure истекает, несмотря на использование конфиденциального клиента - PullRequest
0 голосов
/ 29 января 2019

Я использую приложение Azure Web App / API для веб-приложения и использовал поток грантов авторизации с client_id и client_secret для получения токенов доступа / обновления (используя rest API), все работало нормально, кроме токена обновления, который имеетистек через 90 дней. Ожидается, что будет иметь идентификатор refresh_token, который никогда не истекает (если он явно не отменен), как указано в документации Azure.

Это то, что говорится в документации Microsoft AzureAD: (https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-configurable-token-lifetimes#refresh-tokens)

Время жизни токенов с токенами обновления конфиденциального клиента Конфиденциальные клиенты - это приложения, которые могут безопасно хранить пароль (секретный) клиента. Они могут доказать, что запросы поступают от защищенного клиентского приложения, а не от злонамеренного субъекта. Например, веб-сайтПриложение является конфиденциальным клиентом, поскольку оно может хранить секрет клиента на веб-сервере. Оно не раскрывается. Поскольку эти потоки более безопасны, время жизни по умолчанию для маркеров обновления, выданных этим потокам, до их отзыва не может быть изменено с помощью политики.и не будет аннулирован при добровольном сбросе пароля.

Это определение конфиденциальных клиентов на основе RFC6749: (https://tools.ietf.org/html/rfc6749#section-2.1)

Клиенты, способные поддерживать конфиденциальностьих полномочия (например, клиентt реализован на защищенном сервере с ограниченным доступом к учетным данным клиента) или способен выполнять безопасную проверку подлинности клиента с использованием других средств.

Ошибка, которую я получаю сейчас при запросе обновления токена: AADSTS700082: The refresh token has expired due to inactivity. The token was issued on 2018-10-19T17:26:59.8511467Z and was inactive for 90.00:00:00.

1 Ответ

0 голосов
/ 30 января 2019

Вы не заменяете старый токен обновления новым, который также предоставляется при каждом вызове для получения нового токена доступа с использованием токена обновления.

Обновление токенов доступаСтраница объясняет это следующим образом.

Жетоны обновления не имеют указанного времени жизни.Обычно время жизни токенов обновления относительно велико.Однако в некоторых случаях токены обновления истекают, аннулируются или не имеют достаточных привилегий для требуемого действия.Ваше приложение должно ожидать и обрабатывать ошибки, возвращенные конечной точкой выдачи токена.

Когда вы получите ответ с ошибкой обновления токена, отмените текущий токен обновления и запросите новый код авторизации или токен доступа.В частности, при использовании токена обновления в потоке предоставления кода авторизации, если вы получаете ответ с кодами ошибок взаимодействием_required или invalid_grant, сбросьте токен обновления и запросите новый код авторизации.

...