WWW-аутентификация выхода

Я заметил, что как только Firefox выдает модальное сообщение в ответ на заголовок WWW-Authenticate в ответе HTTP. Затем Firefox сохраняет имя пользователя / пароль, пока Firefox не будет закрыт. Плагин для веб-разработчиков позволяет разработчикам выходить из системы. Но какое HTTP-сообщение нужно отправить браузеру, чтобы потерять эти кэшированные учетные данные?

3 ответа

Решение

Я нашел разумное решение. Это немного запутанно, но работает очень хорошо. Я создал таблицу с полем GUID. Это не началось с каких-либо записей. Вот решение:

  1. Пользователь нажимает "Выйти".
  2. Сценарий выхода добавляет GUID к новой таблице.
  3. Сценарий выхода из системы перенаправляет пользователя на URL-адрес, для которого в качестве параметра указан GUID.
  4. Когда пользователь нажимает URL с GUID в качестве параметра, система ищет GUID в таблице.
    1. Если идентификатор GUID находится в таблице, удалите запись с идентификатором GUID и введите недопустимый код ответа для имени пользователя и пароля (даже если учетные данные в порядке).
    2. Если GUID отсутствует в таблице, проверьте учетные данные.

Эта новая таблица может быстро раздуться хакерами, поэтому убедитесь, что у каждого пользователя может быть только одна запись в таблице. Вы также можете использовать временные метки и выполнять пакетное задание, чтобы время от времени обрезать таблицу.

Я боюсь, что нет способа изящно отправить браузеру приказ прекратить хранить (и отправлять в каждом http-запросе на ваш сервер) учетные данные, которые вы получили в начале навигации пользователя (через ответ http 401).

Firefox очистит кэшированный WWW-auth UN/PW с помощью 403 Forbidden,

Chrome очистится с 403 Forbidden или 401 Not Authorized,

Safari всегда подскажет вам, хотите ли вы кэшировать или нет.

IE это какашки.

Другие вопросы по тегам