#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). Аутентификация работает хорошо и выглядит следующим образом:
- Трафик HTTPS попадает в мой ALB, и, поскольку ранее не проводилась проверка подлинности OIDC, он перенаправляет пользователя на страницу проверки подлинности Microsoft Azure AD для моего клиента Azure AD.
- При успешной аутентификации Azure AD перенаправит ответ на мой URL-адрес ответа ALBs. На этом поток OAuth Azure AD завершается.
- AWS ALB генерирует собственный токен OAuth, который включает мое оригинальное имя пользователя и утверждения Azure AD, подписывает JWT своим собственным ключом и отправляет запрос моему экземпляру EC2 через целевую группу с дополнительными заголовками HTTP (X-Amzn -*), которые содержат информацию о токене AWS
Однако я не могу понять, как выйти из системы аутентифицированного пользователя. Я пытался
- Используя собственный 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 неделю в будущем.
- Я попытался очистить файл cookie «awselauthsessioncookie-0» как на стороне сервера моего приложения, так и в коде клиента (установив срок действия на некоторое время в прошлом), прежде чем снова перейти на домашнюю страницу моего веб-сайта, но «awselauthsessioncookie-0» каким-то волшебным образом восстанавливается, содержащий старый, просроченный JWT
Существует ли предписанный способ выхода из сеанса с проверкой подлинности AWS ALB, в котором в качестве поставщика OIDC использовалась Azure AD (с пользовательским арендатором, а не общедоступным «общим» арендатором)?