Как сделать все токены обновления недействительными для получения токена доступа, чтобы сделать его более безопасным
Каким-то образом мне удалось сократить время жизни токена доступа по умолчанию до 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
Я не хочу, чтобы это произошло. Удаление
Как это сделать? Кто-нибудь пробовал это раньше?
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>