Windows Identity Foundation: как получить новый маркер безопасности в ASP.net

Я пишу приложение ASP.net, использующее Windows Identity Foundation. В моем приложении ASP.net используется проверка подлинности на основе утверждений с пассивным перенаправлением на службу маркеров безопасности. Это означает, что когда пользователь обращается к приложению, он автоматически перенаправляется в службу маркеров безопасности, где получает маркер безопасности, который идентифицирует их в приложении.

В ASP.net маркеры безопасности хранятся в виде файлов cookie.

Я хочу, чтобы в моем приложении пользователь мог щелкнуть что-то, что удалит файл cookie и перенаправит их в службу маркеров безопасности для получения нового маркера. Короче говоря, упростите выход и вход в качестве другого пользователя. Я пытаюсь удалить файл cookie, содержащий токен, в коде, но он каким-то образом сохраняется.

Как удалить токен, чтобы пользователь мог снова войти в систему и получить новый токен?


person Vivian River    schedule 01.02.2010    source источник


Ответы (2)


Я нашел решение. Если кратко:

   Dim smartWsFederationAuthenticationModule As  _
        Microsoft.IdentityModel.Web.WSFederationAuthenticationModule = _
        HttpContext.Current.ApplicationInstance.Modules("WSFederationAuthenticationModule")
    smartWsFederationAuthenticationModule.SignOut(True)

Дополнительную информацию см. здесь: http://garrettvlieger.com/blog/2010/03/refreshing-claims-in-a-wif-claims-aware-application/

Я также вижу, что могу получить доступ к некоторым другим частям структуры WIF. Это определенно стоит прочитать.

person Vivian River    schedule 19.04.2010

Печеньки какие-то странные. Они управляются браузером, и нет никакого «Метода» для их удаления. Простое удаление их из объектов Request или Response на стороне сервера не удаляет их из браузера на стороне клиента.

Чтобы «удалить» файл cookie, вы должны установить его срок действия в прошлом.

См.: http://msdn.microsoft.com/en-us/library/ms178195.aspx

person Mark Arnott    schedule 15.03.2010
comment
Я пытался удалить файл cookie таким образом, но похоже, что какой-то модуль в структуре WIF не разрешает это. - person Vivian River; 19.04.2010