Чтобы развернуть ответ Дарина, веб-формы Cookie auth не имеют гражданства. Ваш клиент прав, заявив, что структура делает много «магии» под обложками. Это не значит, что клиент ничего не может с этим поделать.
По умолчанию cookie Forms Auth не имеет гражданства. Он включает в себя какой-то идентификатор (имя пользователя, идентификатор пользователя, это зависит от разработчика), и это все. Есть много свойств, которые вы можете установить в cookie (это cookie сеанса, как долго это хорошо и т. Д.), Но это не влияет на то, как обрабатывается содержимое cookie. Содержимое cookie затем зашифровывается и MACed с помощью машинного ключа, поэтому их нельзя подделать, но это не мешает им переноситься или воспроизводиться.
Клиент может продолжать использовать аутентификацию форм, если они этого хотят, им просто нужно немного отступить от всей магии.
Предполагаю, что под обложками они делают что-то вроде FormsAuthentication.SetAuthCookie
. Вместо этого они могут создать FormsAuthenticationTicket
, который позволяет включать данные, предоставленные пользователем. Эти данные могут быть связаны с сеансом (не обязательно, сеансом HTTP). Затем используйте FormsAuthentication.Encrypt
для шифрования билета, и он возвращает cookie, который можно установить на успешном ответе на аутентификацию.
Когда страница загружается (или еще лучше в Global.asax Application_AuthorizeRequest
), они могут захватить файл cookie из запроса, вызвать FormsAuthentication.Decrypt
, чтобы дешифровать файл cookie аутентификации и проверить, соответствуют ли данные пользователя сеансу.
Когда пользователь явно выдает отчет, очистите сеанс от этого пользователя, чтобы он больше не соответствовал файлу cookie. Затем проверка пользовательских данных должна отклонять файл cookie и заставлять их приобретать новый.
Этот ответ немного опасен; это не очень хорошая практика для неспециалистов для защиты от безопасности.Однако игнорирование этой проблемы означает, что смена пароля делает ** не ** аннулировать файл cookie '.ASPXAUTH' (хотя cookie имеет зашифрованное время истечения срока действия, поэтому оно в конечном итоге истекает). Повторить: пользователь с уязвимой учетной записью не может аннулировать свой файл cookie с помощью смены пароля/сброса. Лично я бы рекомендовал рассмотреть подход, предложенный vcsjones. 'FormsAuthenticationTicket' имеет параметр' userData', который хорошо подходит для этой цели. – Brian
См. Также источник ссылок для [SetAuthCookie] (https://referencesource.microsoft.com/#System.Web/Security/FormsAuthentication.cs,075bdc7d5fc28fdb). – Brian