Столбец поддержки голосовых ASP.NET
Введение
Добро пожаловать в столбец Microsoft ASP.NET Support Voice! Я Nilay B. Shah с группой поддержки разработчиков ASP.NET. Я работаю с ASP.NET поддержкой уже более полутора лет. Проверка подлинности с помощью форм — это действительно классная функция проверки подлинности. В этой статье рассматриваются некоторые проблемы, которые пользователи запутывают с проверкой подлинности на формах, например связь билета проверки подлинности на основе форм и файла cookie проверки подлинности на основе форм и их соответствующих параметров. Я хотел бы поблагодарить Джерри Ормана, технического руководителя для команды поддержки ASP.NET, за его невероятную помощь!
Люди иногда задаются вопросы о проверке подлинности форм "билеты" и "файлы cookie", так как они тесно связаны.
Я сталкиваюсь с такими вопросами: Может ли кто-нибудь объяснить разницу между истечением срока действия файла cookie и истечением срока действия билета? По истечении срока действия файла cookie пользователь будет перенаправлен на страницу входа. Что происходит по истечении срока действия билета? Это также приведет к истечению срока действия файла cookie? Что на самом деле обновляетскользящее обновление?
Я сосредоточусь на этих двух аспектах проверки подлинности с помощью форм в этой статье, чтобы ответить на следующие вопросы:
-
Что такое билет проверки подлинности с помощью форм и файл cookie проверки подлинности с помощью форм? Как они связаны?
-
Какова роль билета в проверке подлинности с помощью форм?
-
Как связаны срок действия файлов cookie и срок действия билета?
-
Как работает скользящее истечение срока действия в контексте билета проверки подлинности на основе форм и файла cookie проверки подлинности на основе форм?
-
Где можно задать свойство времени ожидания для файла cookie проверки подлинности на основе форм и билета проверки подлинности на основе форм?
-
Сценарий проблемы. Проверка подлинности на формах может истекть до значения атрибута timeout, заданного в файле конфигурации.
Что такое билет проверки подлинности с помощью форм и файл cookie проверки подлинности с помощью форм? Как они связаны?
Файл cookie проверки подлинности с помощью форм — это не что иное, как контейнер для запроса проверки подлинности с помощью форм. Билет передается в качестве значения файла cookie проверки подлинности форм при каждом запросе и используется проверкой подлинности с помощью форм на сервере для идентификации пользователя, прошедшего проверку подлинности.
Однако если мы решили использовать проверку подлинности на основе файлов без файлов, билет будет передан в URL-адресе в зашифрованном формате. Проверка подлинности на основе форм без файлов cookie используется, так как иногда клиентские браузеры блокируют файлы cookie. Эта функция появилась в Microsoft платформа .NET Framework 2.0.
Дополнительные сведения см. на следующем веб-сайте Microsoft Developer Network (MSDN):
Какова роль билета в проверке подлинности с помощью форм?
Запрос проверки подлинности в формах используется для того, чтобы сообщить ASP.NET приложению, кто вы. Таким образом, билет является стандартным блоком безопасности проверки подлинности форм.
Билет шифруется и подписывается с помощью элемента конфигурации <machineKey> файла Machine.config сервера. ASP.NET 2.0 использует decryptionKey и новый атрибут расшифровки элемента <machineKey> для шифрования билетов проверки подлинности на основе форм. Атрибут расшифровки позволяет указать используемый алгоритм шифрования. ASP.NET 1.1 и 1.0 используют шифрование 3DES, которое не настраивается. Изменение значения билета определяется ошибкой расшифровки билета на сервере. В результате пользователь будет перенаправлен на страницу входа.
Если приложение развернуто в веб-ферме, необходимо убедиться, что файлы конфигурации на каждом сервере используют одно и то же значение атрибутов validationKey и decryptionKey в теге> <machineKey, которые используются для хэширования и расшифровки билета соответственно. Это необходимо сделать, так как невозможно гарантировать, какой сервер будет обрабатывать последовательные запросы. Дополнительные сведения о шифровании FormsAuthenticationTicket и рекомендациях по развертыванию веб-фермы см. на следующем веб-сайте MSDN:
http://msdn2.microsoft.com/en-us/library/ms998288.aspx
Билеты проверки подлинности с помощью форм можно создать вручную с помощью класса FormsAuthenticationTicket. Дополнительные сведения см. на следующей странице веб-узла MSDN:
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx
Как связаны срок действия файлов cookie и срок действия билета?
В случае непостояния файла cookie, если срок действия билета истек, срок действия файла cookie также истечет, и пользователь будет перенаправлен на страницу входа. С другой стороны, если билет помечен как постоянный, где файл cookie хранится в клиентском окне, браузеры могут использовать тот же файл cookie проверки подлинности для входа на веб-сайт в любое время. Однако мы можем использовать метод FormsAuthentication.SignOut для явного удаления постоянных или непостояных файлов cookie.
Дополнительные сведения о методе FormsAuthentication.SignOut см. на следующем веб-сайте MSDN:
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication.signout.aspxПри проверке подлинности с помощью форм без файлов, если браузер закрыт, билет теряется и при следующем запросе будет создан новый билет.
Как работает скользящее истечение срока действия в контексте билета проверки подлинности на основе форм и файла cookie проверки подлинности на основе форм?
Скользящий срок действия работает точно так же!
Рассмотрим пример: если доступ к странице входа осуществляется в 17:00:00:00:00 PM, срок ее действия должен истекать в 17:10 00:00:00, если атрибут времени ожидания равен 10, а атрибуту slidingExpiration присвоено значение TRUE. Теперь, если какая-либо веб-страница снова просматривается в 17:05 00:00:00, время ожидания файлов cookie и билета будет сброшено до 17:15 00:00:00.
Примечание. Если доступ к веб-странице осуществляется до истечения половины срока действия, время окончания срока действия билета не будет сброшено. Например, при повторном доступе к какой-либо веб-странице в 17:04 00:00:00, время ожидания файлов cookie и билета не будет сброшено.
Дополнительные сведения см. на следующем веб-сайте MSDN:
http://msdn2.microsoft.com/en-us/library/1d3t3c61(vs.71).aspx
Где можно задать значение времени ожидания для файла cookie проверки подлинности на основе форм и билета проверки подлинности с помощью форм?
Единственный параметр, который можно задать, находится в файле Web.config или в файле Machine.config в теге> <forms. Это изменение определяет период ожидания проверки подлинности форм в контексте билета или файла cookie, если только билет не создан вручную.
<!--
Атрибуты forms:
name="[имя файла cookie]" — задает имя файла cookie, используемого для проверки подлинности с помощью форм.
loginUrl="[url]" — задает URL-адрес для перенаправления клиента для проверки подлинности.
protection="[All|Нет|Шифрование|Проверка]" — задает режим защиты для данных в файле cookie.
timeout="[minutes]" — задает длительность действия файла cookie (сбрасывается при каждом запросе).
path="/" — задает путь для файла cookie.
requireSSL="[true|false]" — должен ли файл cookie проверки подлинности на основе форм отправляться только по протоколу SSL?
slidingExpiration="[true|false]" — следует ли повторно ввести файл cookie и билет проверки подлинности форм, если срок их действия скоро истекает?
--> Дополнительные сведения см. на следующем веб-сайте MSDN:
http://msdn2.microsoft.com/en-us/library/1d3t3c61.aspxЕсли билет создается вручную с помощью класса FormsAuthenticationTicket, время ожидания можно задать с помощью атрибута Expiration. Это значение переопределяет значение атрибута timeout, указанное в файлах конфигурации.
Дополнительные сведения о членах FormsAuthenticationTicket см. на следующем веб-сайте MSDN:
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket_members.aspx
Сценарий проблемы. Проверка подлинности на формах может истекть до значения атрибута timeout, заданного в файле конфигурации.
Если билет проверки подлинности с помощью форм создается вручную, свойство времени ожидания билета переопределяет значение, заданное в файле конфигурации. Таким образом, если это значение меньше значения в файле конфигурации, срок действия билета проверки подлинности форм истечет до значения атрибута timeout файла конфигурации и наоборот. Например, предположим, что <формирует>атрибут времени ожидания в файле Web.config значение 30, а для параметра Срок действия билета — 20 минут. В этом случае срок действия билета на проверку подлинности в формах истекает через 20 минут, и после этого пользователю придется снова войти в систему.
Связанные ссылки
910439 Устранение неполадок с проверкой подлинности с помощью форм
301240 Реализация проверки подлинности на основе форм в приложении ASP.NET с помощью C# .NET
Я надеюсь, что вы нашли эту информацию полезной для облегчения некоторых путаницы, связанной с ASP.NET формы проверки подлинности билета и файла cookie. Помните, что столбцы Поддержки голосовой связи предназначены для вас.