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

Каким-то образом мне удалось сократить время жизни токена доступа по умолчанию до 30 минут. Это сделало токены истекшими или недействительными через 30 минут. Теперь проблема заключается в том, что немногие пользователи уже получили токены обновления вместе с токеном доступа раньше и использовали их для повторного получения токена доступа после истечения срока действия токена, например

      POST https://login.microsoft.com/tenantid/oauth2/v2.0/token?&client_id:appid&grant_type:refresh_token&refresh_token: refresh token&client_secret: client secret

Я не хочу, чтобы это произошло. УдалениеScope больше не будет давать токен обновления. Но как насчет токенов обновления, которые уже есть у пользователей. Как сделать эти токены обновления недействительными, чтобы пользователи не могли использовать их для получения токенов доступа, что повышает безопасность. Даже если они используют, это должно выдавать какую-то ошибку вместо того, чтобы давать токены доступа.

Как это сделать? Кто-нибудь пробовал это раньше?

1 ответ

Чтобы аннулировать все токены обновления, вы можете использовать следующий запрос:


Я попытался воспроизвести то же самое в своей среде и получил следующие результаты:

Я зарегистрировал одно приложение Azure AD и добавил разрешения API , предоставив согласие, как показано ниже:

введите описание изображения здесь

Я получил токен обновления вместе с токеном доступа через Postman со следующими параметрами:

      POST  https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token
client_id:<appID>
grant_type:authorization_code
scope: offline_access user.read.all
code:code
redirect_uri: https://jwt.ms
client_secret: secret

Ответ:

введите описание изображения здесь

Используя этот токен обновления , я могу получить токен доступа, как показано ниже:


Ответ:

введите описание изображения здесь

Чтобы отозвать эти токены обновления, я выполнил следующий запрос в Graph Explorer , предоставив согласие на необходимые разрешения:

      POST https://graph.microsoft.com/beta/users/<user_id>/invalidateAllRefreshTokens

Ответ:

введите описание изображения здесь

Теперь, когда я попытался получитьaccess tokenснова с существующим токеном обновления я получил ошибку , как показано ниже, поскольку токен обновления отозван :

      POST https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token
client_id:appID
grant_type:refresh_token
refresh_token: 0.AVYA_in0zaI3eUqOQHrbrD-FUv //paste the refresh token that I got above
client_secret:client_secret //Mandatory if client is web app

Ответ:

введите описание изображения здесь

Чтобы сделать то же самое из PowerShell , вы можете использовать следующую команду:

      Revoke-AzureADUserAllRefreshToken -ObjectId <userID>

Ссылка: Revoke-AzureADUserAllRefreshToken (AzureAD)

Другие вопросы по тегам