У меня есть приложение A и приложение B, оба из которых являются Asp.Net MVC Core 2.2, которые должны вести себя так, как если бы они были одним приложением для конечного пользователя;Я использую SSO в Identity Server;и для того, чтобы разделить претензии между ними, я дал им то же имя файла cookie аутентификации, имя приложения и доступ к общему расположению ключа защиты данных в соответствии с инструкциями:
https://docs.microsoft.com/en-us/aspnet/core/security/cookie-sharing?view=aspnetcore-2.2
ЕслиЯ вхожу в A, а затем в Redirect to BI вижу заявки, как и ожидалось, между приложениями;однако если я затем выйду из B, то logoutId, который генерируется и отправляется на Identity Server 4, не знает о B.
Если я даю другое имя для файла cookie аутентификации, то я не могу поделиться претензиями, но после перенаправленияк B, а затем к выходу из B сгенерированный logoutId работает правильно.
Если после перенаправления на B ожидание ожидания сеанса входа в систему и повторная аутентификация завершаются, то выход из системы B работает правильно;и logoutId, который генерируется и отправляется на Identity Server 4, знает как A, так и B.
Я полагаю, что это происходит потому, что после перенаправления на B, когда атрибут Authorize вызывает проверку, что пользователь прошел проверку подлинности;который пользователь находится в Приложении A, и это «ошибочно» за то, что он уже Аутентифицирован в B;поскольку это единый вход, нет никакой причины для аутентификации в B, как если бы аутентификация была проверена с помощью Identity Server 4, тогда пользователь будет аутентифицирован;однако, поскольку аутентификация не проверена, информация о том, что пользователь перенаправлен на B, не сохраняется в общем cookie-файле аутентификации и, следовательно, при выходе из системы Identity Server 4 не получает правильный logoutId.
Что я могусделать, чтобы Identity Server 4 был уведомлен и, таким образом, обновил Shared Cookie после перенаправления в Приложение B?