Не удается выйти из системы при использовании балансировщика нагрузки приложений AWS с Azure AD OAuth (OIDC)

#amazon-web-services #authentication #jwt #openid-connect #aws-application-load-balancer

Вопрос:

У меня есть проект, в котором я провожу ASP.NET Сайт MVC на экземпляре AWS EC2 за балансировщиком нагрузки приложений AWS (ALB).

У меня есть правило «Аутентификации» прослушивателя ALB, которое принимает любой трафик, у которого нет действительного файла cookie, и пересылает его в Azure AD OAuth prvoider (он же аутентификация OIDC). Аутентификация работает хорошо и выглядит следующим образом:

  1. Трафик HTTPS попадает в мой ALB, и, поскольку ранее не проводилась проверка подлинности OIDC, он перенаправляет пользователя на страницу проверки подлинности Microsoft Azure AD для моего клиента Azure AD.
  2. При успешной аутентификации Azure AD перенаправит ответ на мой URL-адрес ответа ALBs. На этом поток OAuth Azure AD завершается.
  3. AWS ALB генерирует собственный токен OAuth, который включает мое оригинальное имя пользователя и утверждения Azure AD, подписывает JWT своим собственным ключом и отправляет запрос моему экземпляру EC2 через целевую группу с дополнительными заголовками HTTP (X-Amzn -*), которые содержат информацию о токене AWS

Однако я не могу понять, как выйти из системы аутентифицированного пользователя. Я пытался

  1. Используя собственный URL-адрес Azure ADs «outh2/v2.0/выход» с информацией о моем клиенте и идентификаторе клиента (идентификатор приложения), а затем указав страницу выхода, которую я разместил за своим AWS ALB, это только выводит пользователя Azure AD, но когда я возвращаюсь на домашнюю страницу сайта, AWS ALB сохраняет информацию через свой собственный файл cookie и перенаправляет трафик без перенаправления на Azuure AD со старым AWS JWT (событие, если метка времени «Exp» в JWT прошла). Эти последующие запросы содержат файл cookie с именем «awselauthsessioncookie-0», значением которого является весь JWT, закодированный в Base64, но срок действия файла cookie истекает через 1 неделю в будущем.
  2. Я попытался очистить файл cookie «awselauthsessioncookie-0» как на стороне сервера моего приложения, так и в коде клиента (установив срок действия на некоторое время в прошлом), прежде чем снова перейти на домашнюю страницу моего веб-сайта, но «awselauthsessioncookie-0» каким-то волшебным образом восстанавливается, содержащий старый, просроченный JWT

Существует ли предписанный способ выхода из сеанса с проверкой подлинности AWS ALB, в котором в качестве поставщика OIDC использовалась Azure AD (с пользовательским арендатором, а не общедоступным «общим» арендатором)?