Является ли метод FederatedAuthentication.SessionAuthenticationModule.Signout асинхронным? - PullRequest
0 голосов
/ 27 июня 2019

Я собираю провайдера удостоверений 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 будет брошен?

...