2011-01-03 6 views
5

Мы обсуждаем, как действительно работает проверка подлинности.Требуется ли проверка подлинности в виде .Net?

Является ли вся информация, которая идентифицирует пользователя как находящегося во входном файле, хранящегося в файле cookie, или некоторая информация, хранящаяся в сеансе?

ответ

12

Информация об аутентифицированном пользователе хранится в FormsAuthenticationTicket в файле cookie по умолчанию .ASPXAUTH.

Информация о сеансе пользователя не относится к информации об аутентификации. Идентификатор сеанса может быть сохранен в файле cookie (другой файл cookie из файла cookie аутентификации) или, как указывал Henk, в сеансе cookieless, то есть как часть URL-адреса.

Проблема с хранением некоторой информации об аутентификации в сеансе пользователя заключается в том, что сеанс недоступен до истечения некоторого времени после события аутентификации (5 событий позже IIRC) в конвейере обработки в PostAcquireRequestState. Это означает, что у вас не будет доступа к данным аутентификации в сеансе до завершения проверки подлинности!

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

Чтобы ответить на ваш вопрос с заголовком, проверка подлинности форм не требует сеанса; они представляют собой различные объекты, требуемые для разных целей.

3

Для как Forms Authentication работает, вы можете проверить ссылки ниже:

форм аутентификации работает в сценариях веб-фермы, где обработка запроса от сервера Пользователь, прошедший проверку подлинности, может отличаться от сервера, который фактически аутентифицировал пользователя и выдал билет проверки подлинности форм и файл cookie, если не настроена проверка подлинности без файлов cookie. Чтобы выполнить эту работу, в соответствии с разделом «Сценарий веб-фермы» первой ссылки:

Для решения этой проблемы значения validationKey и decryptionKey должны быть одинаковыми на всех компьютерах веб-фермы. Дополнительные сведения о настройке элемента machineKey см. В разделе Инструкции по настройке MachineKey в ASP.NET 2.0.

, который предполагает, что аутентификация форм не хранит ничего в сеансе ASP.NET. В противном случае вам также необходимо будет установить некоторую форму управления сеансом вне процесса обработки.

У меня также было приложение для проверки подлинности форм, и я хотел бы это быстро доказать. Получив аутентификацию с помощью проверки подлинности форм и посадку на домашней странице, я перезапустил пул приложений, в котором запущено приложение-образец, в котором должен быть убит сеанс пользователя. Затем я нажал на одну из ссылок, требующих проверки подлинности на главной странице, и смог перейти на эту ссылку, не перенаправляясь на страницу входа.

+0

+1 Благодарим за доказательство концепции –

Смежные вопросы