Я собираю провайдера удостоверений WS-Federation согласно (https://auth0.com/docs/protocols/ws-fed) с использованием класса SessionAuthenticationModule платформы .NET (https://docs.microsoft.com/en-us/dotnet/api/system.identitymodel.services.sessionauthenticationmodule?view=netframework-4.8)), и у меня возникла проблема с обработкой регистрационный кейс.
При выходе пользователя из моего logout.aspx я вызываю метод SignOut следующим образом;
FederatedAuthentication.SessionAuthenticationModule.SignOut ();
Ожидается, что это очистит все без исключения куки-файлы и состояние сеанса для текущего пользователя, например, установленные как таковые;
FederatedAuthentication.SessionAuthenticationModule.WriteSessionTokenToCookie (sessionSecurityToken)
Это, кажется, работает БОЛЬШЕ времени, но когда я перенаправляю моего пользователя обратно на страницу входа в приложение моего провайдера, кажется, что состояние сеанса не было очищено - по крайней мере, не ВСЕГДА - как пользователь до сих пор иногда воспринимается как тот же пользователь при обращении к System.Web.UI.Page.User.
Однако, если я просто снова зайду на страницу входа, это будет очищено, и мой пользователь правильно не будет распознан.
Так как это происходит непоследовательно, мне интересно, происходит ли на самом деле очистка метода SignOut асинхронно и не завершает ли он все эти задачи перед возвратом.
Кто-нибудь знает, так ли это на самом деле? Я не вижу ничего в документации, представленной выше, чтобы подтвердить. И, если это так, то как я должен выполнять действия, когда пользователь полностью очищен? Дождаться, пока метод OnSignedOut будет брошен?