Я работаю над приложением ASP.NET, в котором наши пользователи проходят аутентификацию с использованием клиентских сертификатов через HTTPS. Наши пользователи используют только IE7.
После того, как сертификат клиента был использован для успешной аутентификации, он остается в кэше SSL браузера до тех пор, пока процесс не будет закрыт или пользователь вручную не очистит кеш SSL. Мы хотим иметь возможность очищать кеш SSL всякий раз, когда пользователь выходит из системы или истекает срок его сеанса, чтобы повысить безопасность системы.
Наши клиенты уже используют смарт-карты для доступа к системе, которые автоматически выгружают сертификаты, когда карта удаляется с клиентского компьютера, но это не очищает кеш браузера вообще, оставляя потенциальную возможность атаки со стороны другого пользователя, который имел доступ к тому же самому. машина как подлинный пользователь.
Я узнал, как выполнить фактическую очистку кеша из JavaScript:
document.execCommand ("ClearAuthenticationCache");
который отлично работает, когда пользователь явно выходит из системы, поскольку мы можем выполнить сценарий на клиенте, прежде чем позволить пользователю снова войти в систему.
ПРИМЕЧАНИЕ. IE7 позволяет программно очищать кеш только тогда, когда HTTP Keep-Alives отключен на веб-сервере.
Вот хитрость: если сеанс клиента истекает, я не знаю, как с этим справиться в браузере, прежде чем пользователь попытается снова войти в систему. Я не могу очистить состояние, когда они попадают на страницу входа, потому что мне нужно очистить состояние и выбрать новый сертификат, прежде чем страница будет запущена на сервере.
Любые идеи? Приносим извинения за объем вопроса, но для этого важна предыстория.