Сбой проверки подлинности веб-приложения .NET 2.0: «Предоставленный билет недействителен» - PullRequest
1 голос
/ 02 декабря 2011

У меня есть приложение .NET 4.0 с приложением 2.0 в детстве. Веб-приложения не находятся в многосерверной среде; только один сервер участвует в обслуживании этих запросов. Оба приложения используют пользовательскую аутентификацию, и оба приложения имеют одинаковые атрибуты и значения machineKey. Когда я захожу в приложение 2.0, журнал событий показывает следующее сообщение:

Event code: 4005 
Event message: Forms authentication failed for the request. Reason: The ticket supplied was invalid. 
Event time: 12/2/2011 11:36:49 AM 
Event time (UTC): 12/2/2011 5:36:49 PM 
Event ID: 2068ad6957964f75885301fc2b58ddfe 
Event sequence: 2 
Event occurrence: 1 
Event detail code: 50201

Я попытался установить для атрибута ticketCompatibilityMode значение Framework20 для элемента формы в файле Web.config, но это не помогло решить проблему. Из-за этой ошибки пользователь не авторизуется, и в результате обычные объекты (HttpContext) не заполняются пользовательской информацией.

Кто-нибудь знает, как исправить эту ошибку, чтобы аутентификация работала для приложения 2.0? (Кроме того, я планирую обновить приложение 2.0 до 4.0, но в настоящее время не требуется завершать работу с картами)

Ответы [ 5 ]

5 голосов
/ 03 декабря 2011

В случае, если кто-то сталкивался с этой же проблемой, я смог исправить эту ошибку, добавив некоторые записи в раздел <appSettings> моего Web-приложения .NET 2.0. Добавленные записи были:

<add key="aspnet:UseLegacyEncryption" value="true" />
<add key="aspnet:UseLegacyMachineKeyEncryption" value="true" />

Редактировать (2012-05-04) : После установки Бюллетеня по безопасности MS11-100 на сервере аутентификация в приложении 2.0 снова была нарушена. Добавление следующего в Web.config приложения 4.0 устранило проблему:

<add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" />
2 голосов
/ 04 апреля 2014

У вас должны быть одинаковые рамки для 2 приложений.

httpRuntime targetFramework = "4.5"

1 голос
/ 31 октября 2012

Имея намерение перенести информацию в предыдущий пост, у меня работает добавление этих ключей в APP (оба 4.0) web.config:

    <add key="aspnet:UseLegacyEncryption" value="true" />
    <add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" />
0 голосов
/ 30 июня 2016

У меня была такая же проблема.В моем случае у меня было два разных приложения на одном сервере, и атрибут name был одинаковым для обоих.

Решение заключается в использовании уникального имени для каждого приложения.Подробнее о режиме см. Здесь https://msdn.microsoft.com/en-us/library/1d3t3c61(v=vs.85).aspx

Это имя файла cookie, и если вы используете то же имя, файл cookie переопределяется.

0 голосов
/ 29 августа 2014

Есть и еще одна причина этой проблемы. Даже на той же машине, тот же IIS и тот же .NET Framework, если одно из ваших приложений имеет

<httpRuntime requestValidationMode="2.0" />

, тогда обмен аутентификационным cookie не будет работать.

Удаление requestValidationMode решает проблему. Но иногда вы не можете этого сделать, и вам нужно оставаться там. Мне еще предстоит выяснить, что делать в такой ситуации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...