Устранение неполадок проверки подлинности форм

Переводы статьи Переводы статьи
Код статьи: 910439 - Vizualiza?i produsele pentru care se aplic? acest articol.
ASP .NET поддержки августовский выпуск

Устранение неполадок проверки подлинности форм

Чтобы настроить этот столбец в соответствии с потребностями, мы хотим пригласить вас отправил идей тем, интересующих вас и проблемы, которые необходимо просмотреть направлено в будущих статьях базы знаний и поддержка голосовой связи столбцов. Вы можете отправить свои идеи и с помощью обратной связи Попросите его форма. Имеется также ссылка на форму в нижней части этого столбца.
Развернуть все | Свернуть все

В этой статье

Добро пожаловать в столбце голоса поддержки ASP.NET! Меня зовут Джерри Orman. Я уже с корпорацией Майкрософт более пяти лет и посвятил большую часть моих время, посвященной технологии веб технологиям, например Microsoft FrontPage и новые технологии Microsoft SharePoint. Я посвятил работе с прошлого года Microsoft ASP.NET как инженер технической поддержки. В этом месяце в Voice поддержки столбец, я собираюсь объяснить Устранение неполадок проверки подлинности форм в Microsoft ASP.NET.

Устранение неполадок проверки подлинности форм

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

В этой статье мы кратко обсудим Понятие проверки подлинности форм. Затем мы рассмотрим, какие сценарии привести для перенаправления на страницу входа и запись данных пользователя Это относится к изоляции проблемы. Мы также обсудим, как реализовать интерфейс IHttpModule в журнал данные проверки подлинности форм.

Обзор проверки подлинности форм

Когда пользователь выполняет проверку подлинности на веб-узел, используя проверку подлинности в формах сервер создает объект «cookie». Файл cookie равен форм зашифрованный билет проверки подлинности. Файл cookie передается на сервер при каждом запросе приложение и классом FormsAuthenticationModule расшифровывает значение файла cookie и Определяет допустимость пользователя или нет.

По умолчанию FormsAuthenticationModule добавляется класс в файле Machine.config. Классом FormsAuthenticationModule управляет процессом FormsAuthentication.

Ниже приводится запись из файла Machine.config.
<httpModule>
     …other modules…
     <add name="FormsAuthentication"
         type="System.Web.Security.FormsAuthenticationModule" />
     …other modules…
</httpModule>
Общие HTTP-трафик для проверки подлинности с помощью проверки подлинности форм выглядит примерно следующим:
  1. Клиент отправляет HTTP GET Default.aspx. Отправляется без файла cookie проверки подлинности форм.
  2. Сервер отправляет ответ 302 (перенаправление) Login.aspx.
  3. Клиент посылает команду HTTP POST Login.aspx. Он включает сведения об имени входа.
  4. Сервер отправляет ответ 302 (перенаправление) Default.aspx. Файл cookie проверки подлинности форм включена.
  5. Клиент отправляет HTTP GET Default.aspx. Это включает файл cookie проверки подлинности форм.
Дополнительные сведения о реализации и использования Проверка подлинности форм, посетите следующие MSDN веб-узлов:
http://msdn2.Microsoft.com/en-us/library/7t6b43z4.aspx
.aspx http://msdn2.Microsoft.com/en-us/library/System.Web.Security.FormsAuthentication (vs.71)
.aspx http://msdn2.Microsoft.com/en-us/library/System.Web.Security.FormsAuthenticationTicket (vs.71)
Дополнительные сведения о совместном использовании файлов cookie проверки подлинности форм посетите ASP.NET веб-узла:
http://QuickStarts.ASP.NET/QuickStartv20/ASPNET/doc/Security/FormsAuth.aspx

Причины, что пользователь может перенаправляться на страницу входа

Файл cookie проверки подлинности форм теряется.

Сценарий 1

В этом сценарии входа в систему на веб-узел. В некоторый момент клиент отправляет запрос на сервер и Классом FormsAuthenticationModule не получает файл cookie. Вы можете Определите, если запрос пользователя не содержит файл cookie, включив файл «cookie» ведение журнала в Microsoft IIS (IIS). Чтобы сделать это, выполните следующие действия.
  1. Открытие консоли управления Microsoft (MMC) IIS.
  2. Щелкните правой кнопкой мыши веб-узел и нажмите кнопкуСвойства.
  3. Нажмите кнопку Веб-узел вкладки, а затем нажмите Включить Ведение журнала.
  4. Убедитесь, что формат журнала Дополнительный файл журнала W3C Формат.
  5. Нажмите кнопку Свойства.
  6. Нажмите кнопку Дополнительно вкладки, а затем нажмитеРасширенные свойства.
  7. В группе Расширенные свойства, выберите Cookie(CS(cookie)) флажок и Referer (cs(Referer)) флажок.
После возникновения этой проблемы, определить, какой клиент имел проблемы и IP-адрес этого клиента. Отфильтровать журнал IIS на IP-адрес этого клиента и просмотр файла cookieнастроек столбца.

Примечание Средство Log Parser можно использовать для анализа журналов IIS. Чтобы загрузить средство Log Parser, посетите следующий веб-узел корпорации Майкрософт:
http://www.Microsoft.com/downloads/details.aspx?FamilyId=890cd06b-abf8-4c25-91b2-f8d975cf8c07
После того как список запросов, определенных в пользователь поиска для запросов на страницу входа. Известно, что пользователь был перенаправлен этой страницы, чтобы просмотреть запросы перед перенаправление произошло. Если вы заметили следующее клиента либо не отправить, файл cookie или файл cookie был удален в сети между клиентом и сервер.

Это исходное имя входа.
Свернуть эту таблицуРазвернуть эту таблицу
МетодСтраницыОтветФайлы «cookie»
GET/Default.aspx302 (Перенаправление)Нет Файлы «cookie»
GET/Login.aspx200 (Успешное завершение)Нет Файлы «cookie»
POST/Login.aspx302 (Перенаправление)Нет Файлы «cookie»
GET/Default.aspx200 (Успешное завершение).ASPXAUTH
GET/SomePage.aspx302 (Перенаправление)Нет .Файл «cookie» ASPXAUTH
Это другие запросы, за которым следует запрос страницы на веб-узле без.ASPXAUTH файл cookie.
Свернуть эту таблицуРазвернуть эту таблицу
МетодСтраницыОтветФайлы «cookie»
GET/SomePage.aspx302 (Перенаправление)Нет .Файл «cookie» ASPXAUTH
GET/Login.aspx200 (Успешное завершение)Нет .Файл «cookie» ASPXAUTH
POST/Login.aspx302 (Перенаправление)Нет .Файл «cookie» ASPXAUTH
GET/SomePage.aspx200 (Успешное завершение).ASPXAUTH

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

При превышении предела cookie клиента файл cookie проверки подлинности форм также могут быть потеряны. В корпорации Майкрософт Internet Explorer существует более 20 файлов cookie. После 20 файлов cookie создан на стороне клиента, предыдущие файлы Cookie удаляются из клиента Коллекция. Если.ASPXAUTH файл cookie удаляется, пользователь будет перенаправлен на страницу входа, при обработке следующего запроса.

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

Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
306070Ограничения на число и размер файла cookie в обозревателе Internet Explorer

Fiddler можно использовать для просмотра заголовков HTTP отправляемых клиенту. После захвата трафика, дважды щелкните запрос, и нажмите кнопку Заголовки Чтобы просмотреть заголовок Set-Cookie. При трассировке успешного входа вы увидите Заголовок Set-Cookie в ответ успешного входа.

Чтобы загрузить Fiddler, посетите Fiddler веб-узла:
http://www.fiddlertool.com/Fiddler/
Сценарий 3

После запроса покидает клиента, существуют различные уровни Это может повлиять на пакеты, которые отправляются. Чтобы определить, является ли сетевое устройство Удаление файлов cookie, необходимо выполнить трассировку сети на клиенте и сервере, и найдите в теле запроса для файла cookie. Вы хотите Посмотрите на клиентский запрос, чтобы убедиться, что файл cookie был отправлен и проверка сервера трассировки, чтобы убедиться, что сервер получил файл cookie.

Запрос клиента

Это запрос GET, после проверки подлинности пользователя. В данные билета проверки подлинности форм будет выделен синим цветом. Это подтверждает что сведениями файлов Сookie слева клиента. При использовании записи сетевого трафика средства, как сетевой монитор, вы видите, фактически проходит трафик адаптер.
47 45 54 20 68 74 74 70-3a 2f 2f 6c 6f 63 61 6c   GET http://local
68 6f 73 74 2f 46 6f 72-6d 73 41 75 74 68 4c 6f   host/FormsAuthLo
67 54 65 73 74 2f 57 65-62 46 6f 72 6d 31 2e 61   gTest/WebForm1.a
73 70 78 20 48 54 54 50-2f 31 2e 31 0d 0a 41 63   spx HTTP/1.1..Ac
63 65 70 74 3a 20 69 6d-61 67 65 2f 67 69 66 2c   cept: image/gif,
…Other headers of the GET request…
63 68 65 0d 0a 43 6f 6f-6b 69 65 3a 20 2e 41 53   che..Cookie: .AS
50 58 41 55 54 48 3d 33-43 45 46 39 42 39 41 30   PXAUTH=3CEF9B9A0
43 33 37 41 44 46 36 33-45 36 42 44 33 37 42 36   C37ADF63E6BD37B6
39 43 44 41 32 35 30 30-30 46 38 30 37 32 38 46   9CDA25000F80728F
35 31 43 39 35 36 36 44-31 34 43 35 34 31 34 35   51C9566D14C54145
38 31 43 39 33 45 32 41-30 31 44 44 43 44 45 46   81C93E2A01DDCDEF
32 34 41 31 37 34 32 39-34 31 30 43 30 39 37 34   24A17429410C0974
42 33 45 43 42 30 36 34-32 32 38 45 33 35 33 39   B3ECB064228E3539
39 41 38 32 32 42 33 42-39 33 36 44 46 30 38 46   9A822B3B936DF08F
42 41 42 44 33 45 31 30-32 44 30 30 32 31 30 43   BABD3E102D00210C
32 45 31 33 39 38 30 37-39 42 32 33 35 32 39 46   2E1398079B23529F
34 46 35 44 37 34 41 3b-20 50 72 6f 66 69 6c 65   4F5D74A; Profile
3d 56 69 73 69 74 6f 72-49 64 3d 62 32 34 65 62   =VisitorId=b24eb
Запрос на стороне сервера

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

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

Истекает время ожидания билета проверки подлинности форм

Распространенной причиной для перенаправления пользователя — Если Проверка подлинности форм истек срок действия билета. Проверка подлинности форм билет можно двумя способами тайм-аута. Первая ситуация возникает, если используется абсолютный срок действия. С абсолютным сроком действия истечет срок действия билета проверки подлинности при время истечения срока действия. Например задать истечение 20 минут и пользователь При посещении веб-узла в 14:00. Пользователь будет перенаправлен на страницу входа, если пользователь посещает узел после 2:20 PM.

Если используется скользящий срок действия сценарий является более сложным. Файл cookie и полученный билет обновление при посещении веб-узла после наполовину истек срок действия. Например установлен 20 минут скользящий срок действия. Пользователь посещает веб-узел в 14:00, а пользователь получает объект cookie, который истекает в 14:20. Срок действия обновляется только в том случае, если пользователь посещает узел после 2:10 PM. Если пользователь посещает веб-узел в 14:09, билет не обновляется, поскольку половина Срок действия не истек. Если пользователь затем ожидает в течение 12 минут посещения веб-узла в 2:21 PM будет истек срок действия билета. Пользователь перенаправляется к имени входа страница.

Один способ неполадки такого типа является формы входа сведения о cookie и билет проверки подлинности. Таким образом, можно увидеть при службами IIS и значения, был получен файл cookie. Это можно сделать, написав HttpModule, а затем подключить этот модуль в конвейер запросов. Не нужно изменять код приложения, чтобы получить сведения о вас требуется.

Пример вложенного работает в корпорации Майкрософт платформа.NET Framework 1.1 и 2.0 платформа.NET Framework и имеет комментарии. Пример включает следующие файлы:
  • FormsAuthEvents.cs: Класс, реализующий IHttpModule и связывает в событие Application_BeginRequest .
  • FormsAuthInfo.cs: Класс, извлекается файл Сookie и расшифровывает билета проверки подлинности форм. Он также проверяет приложения Файл Web.config, чтобы гарантировать, что формы проверки подлинности включена.
  • FormsAuthConfig.cs: Класс, который считывает данные из Файл FormsAuthLogger.config.
  • Log.cs: Файл, который принимает stringbuilder и записывает значения в файл журнала.
  • FormsAuthLogger.config: Файл XML, считываемое из файла Log.cs. Это файл должен находиться в папке/Bin с библиотекой DLL построен. Этот файл позволяет Настройте следующие параметры.
    • Фильтр по IP: можно установить фильтр для сбора данных по IP клиента x. Таким образом, могут входить только запросы от клиента, которая может стать воспроизвести проблему. Это уменьшает размер журнала.
    • Тип записи: Задает место сохранения файла. По умолчанию в папке временных файлов ASP.NET, но вы сэкономите в любом месте при условии, что учетной записи рабочего процесса имеет возможность записи папка.
Примечание Я приведу ссылки загрузки для код указан в Файл FormsAuthLogger.zip.

Отмечу основные области:
  1. Создайте класс, реализующий интерфейс IHttpModule .
    public class FormsAuthEvents : IHttpModule 
    {
    		…code…
    }
  2. Подключить событие, которое требуется просмотреть. В этом примере Мы используем событие Application_BeginRequest . Таким образом, мы можем исследовать каждый запрос и определить он имеет файл cookie проверки подлинности форм и журнала FormsAuthenticationTicket , если файл Сookie существует.
    public void Init(HttpApplication application) 
    {
    	//Wire up the BeginRequest event
    	application.BeginRequest += (new EventHandler(this.Application_BeginRequest));
    }
  3. Реализуйте событие Application_BeginRequest .
    private void Application_BeginRequest(Object source, EventArgs e)
    {	
       …code to log the ticket…
    }
    
  4. Извлечение файла cookie проверки подлинности форм и дешифровать его.
  5. Войдите в значения. Я бы рекомендовал следующие вход дополнение к данные форм. Это поможет выровнять форм сведения о проверке подлинности в журналы IIS, при необходимости:
    • Дата: Можно видеть, когда запрос пришел в.
    • RequestType: Показывает, является ли запрос Get или POST.
    • URL-адрес: Отображает шаблон запросы, которые привели к решению этой проблемы.
    • Источник ссылки
    • ClientIP: Запросы к определенному увязан клиент.

Как всегда вы можете отправить идеи по темам, требуется устранена в будущих статьях или с помощью базы знаний Попросите его форма.

Свойства

Код статьи: 910439 - Последний отзыв: 30 мая 2013 г. - Revision: 5.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 2.0
Ключевые слова: 
kbtshoot kbiis kbcode kbasp kbmt KB910439 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке: 910439

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com