wa = wsignupcleanup1.0 не выходит из системы на проверяющей стороне - PullRequest
1 голос
/ 26 мая 2011

Работа над проектом, в котором мы используем Windows Identity Foundation.При тестировании решения о выходе я обнаружил, что следующий вызов http://rp/?wa=wsignoutcleanup1.0 не удаляет файл cookie FedAuth на RP.Что, в свою очередь, заставляет пользователя оставаться в системе на RP.

Чтобы исправить ситуацию, я добавил следующий код в Global.asax:

protected void Application_Start()
{
    FederatedAuthentication.WSFederationAuthenticationModule.SigningOut += new EventHandler<SigningOutEventArgs>(WSFederationAuthenticationModule_SigningOut);
}

void WSFederationAuthenticationModule_SigningOut(object sender, SigningOutEventArgs e)
{
    FederatedAuthentication.SessionAuthenticationModule.DeleteSessionTokenCookie();
}

Но WIF не должен позаботитьсяэто автоматически?Или это способ сделать это?

Ответы [ 2 ]

2 голосов
/ 21 июля 2011

Убедитесь, что все URL-адреса совпадают, даже имя приложения и имя веб-сайта в IIS должны соответствовать URL-адресам в конфигах. Мне было трудно отследить это. Смотрите здесь: wasignoutcleanup выпуск

2 голосов
/ 31 мая 2011

Согласен с @Anton. Это должно работать для куки WIF. Он не очищает ваш собственный сеанс.

Если у вас есть дополнительные вещи для очистки, то вам нужно сделать дополнительную работу. Предостережение заключается в том, что объект сеанса недоступен из каких-либо обработчиков событий WIF. Так, например, вы не можете вызвать Session.Abandon () из WSFederationAuthenticationModuleSigningOut . Как правило, вы перенаправляете на другую страницу для окончательной очистки. Пример этого доступен здесь: http://claimsid.codeplex.com (образец № 1)

...