Windows Identity Foundation: как получить новый токен безопасности в ASP.net
Я пишу приложение ASP.net, которое использует Windows Identity Foundation. В моем приложении ASP.net используется проверка подлинности на основе утверждений с пассивным перенаправлением в службу маркеров безопасности. Это означает, что когда пользователь получает доступ к приложению, они автоматически перенаправляются в службу маркеров безопасности, где они получают токен безопасности, который идентифицирует их в приложении.
В ASP.net токены безопасности хранятся в виде файлов cookie.
Я хочу, чтобы в моем приложении пользователь мог щелкнуть что-нибудь, что удалит cookie и перенаправит их в службу маркеров безопасности, чтобы получить новый токен. Короче говоря, упростите выход из системы и вход в систему как другой пользователь. Я пытаюсь удалить содержащий токен cookie в коде, но он как-то сохраняется.
Как удалить токен, чтобы пользователь мог снова войти в систему и получить новый токен?
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, что также было. Это определенно стоит прочитать.
Печенье немного странно. Они управляются браузером, и для их удаления нет "метода". Простое удаление их из объектов Request или Response на стороне сервера не удаляет их из браузера на стороне клиента.
Чтобы "удалить" куки, вы должны установить дату истечения срока его действия.
Смотрите: http://msdn.microsoft.com/en-us/library/ms178195.aspx