Обратный вызов клиентского приложения после выхода из системы — сервер идентификации 4

#c# #.net #asp.net-mvc #.net-core #identityserver4

#c# #.net #asp.net-mvc #.net-ядро #identityserver4

Вопрос:

Я пытаюсь выполнить обратный вызов метода клиентского действия .net Framework после выхода из системы. Для этого я пытаюсь отправить PostLogoutRedirectUri от клиента при выходе из системы. Проблема, с которой я сталкиваюсь, заключается в том, что предположим, у меня есть два клиента .net Framework A и B в одном браузере. Если я вхожу с клиента A и пытаюсь выйти из системы с того же клиента, я могу получить PostLogoutRedirectUri при выходе с сервера идентификации 4 из-за правильного id_token, но при входе с клиента A и попытке выхода с клиента B (уже авторизованного) из-за другого id_token у клиента A PostLogoutRedirectUri и LogOutId равно нулю при выходе с сервера идентификации. Ниже приведены скриншоты моего кода и то, что я пытаюсь сделать:

  1. Выйдите из клиентского приложения введите описание изображения здесь

Клиент A

  1. Запуск клиента.cs введите описание изображения здесь

  2. Конфигурация сервера идентификации введите описание изображения здесь

Клиент B

  1. Запуск клиента.cs введите описание изображения здесь

  2. Конфигурация сервера идентификации введите описание изображения здесь

Сценарии

  1. Вход с клиента A и выход с того же клиента скриншот выхода из системы сервера идентификации введите описание изображения здесь

  2. Войдите в систему с клиента A, откройте клиент B (авторизованный) и выйдите из системы с клиента B. Скриншот выхода из системы сервера идентификации введите описание изображения здесь

Ответ №1:

Проблема заключалась в том, что клиент A и клиент B использовали один и тот же файл cookie, сгенерированный тем, какой клиент войдет в систему первым. Файл cookie использовался совместно обоими клиентами, поскольку оба клиента работали в одном домене, который является localhost, поэтому из-за одного и того же домена разных клиентов генерировался только один файл cookie. Это было решено путем присвоения cookie другого имени в startup.cs каждого клиента.