После выхода из системы предыдущий перехваченный запрос остается действительным при проверке подлинности Azure ad

#azure #azure-active-directory #logout

#azure #azure-active-directory #Выход

Вопрос:

Мы столкнулись с проблемой при выходе из нашего приложения. Как только мы выйдем из системы, все будет в порядке из браузера, но если мы перехватим запрос с помощью некоторых инструментов (fidler или burp) и снова отправим запрос на сервер со старыми файлами cookie, и сведения о сеансе дадут полный ответ. Это возможно только с помощью любого средства перехвата. Я использую приведенный ниже код для выхода из приложения:

 Session.RemoveAll();            
 HttpContext.GetOwinContext().Authentication.SignOut(OpenIdConnectAuthenticationDefaults.AuthenticationType,
               CookieAuthenticationDefaults.AuthenticationType);
 

Ответ №1:

Это происходит потому access token , что и refresh tokens , выданные Azure AD, не удаляются при инициировании выхода из приложения. Пока срок действия этих токенов не истек, их можно использовать.

На основе this , время жизни токена доступа настраивается (по умолчанию, я полагаю, составляет 1 час), и вы должны установить его в зависимости от ваших потребностей.

Кроме того, есть сообщение об отзыве, касающееся недействительных токенов: https://feedback.azure.com/forums/169401-azure-active-directory/suggestions/19474918-invalidate-jwt-token. Не стесняйтесь голосовать за эту функцию.

Комментарии:

1. Спасибо @gaurav, поскольку я использую проверку подлинности Azure ad (страницу входа в Microsoft), и мы не используем какой-либо другой явный токен jwt, и при выходе из системы приложение перенаправляется на login.microsoftonline.com {идентификатор тананта}/oauth2/выход из системы?post_logout_redirect_uri={logouturl} и он отлично работает со стороны браузера, но если мы снованажмите старый запрос от fidler или какого-либо инструмента, после чего он будет аутентифицирован.

2. Если вы посмотрите на запрос, вы увидите заголовок «Авторизация», содержащий маркер доступа.

3. Я понял вашу точку зрения, но в моем сценарии приведенный выше код автоматически возвращает URL-адрес для выхода из системы, но на стороне сервера он все еще действителен: (