Проблема с идентификатором области IPv6 в IE и ASP.NET - PullRequest
3 голосов
/ 10 января 2011

Настройка:

Две машины W2K3 в домене, на которых установлен IPv6.Приложение находится на компьютере № 1.

Что работает с IE8:

Машина # 2 может войти в приложение, используя адрес IPv4 (http://192.168. .. / app )
Машина # 2 может войти в приложение, используя имя компьютера (http://machine1name/app) Машина # 1 может войти в приложение, используя адрес IPv4, имя компьютера и localhost. Машина # 1 может войти в приложение, используя локальный адрес IPv6(без идентификатора области).
Машина # 1 может войти в приложение, используя сетевой адрес IPv6 (без идентификатора области).

Что не работает с IE8, НО работает с Firefox:

Машина # 2 не может войти в приложение, используя сетевой IPv6-адрес машины # 1 (с идентификатором области действия).

ОРИГИНАЛЬНАЯ ПРОБЛЕМА : Я пытался сузить проблему. Я могу открыть страницу входа и ввести свои учетные данные. В коде я проверяю Active Directory для аутентификации, и пользователь действительно проходит аутентификацию. Однако,HttpContext.Current.User.Identity никогда не устанавливается. Он должен быть установлен, когда я вызываю RedirectFromLoginPage(username), и это когда машина № 2 использует IPv4 для доступа кприложениеОднако когда я использую адрес IPv6, HttpContext.Current.User.Identity всегда пусто.

Аутентификация и приложение работают нормально при использовании IPv4, поэтому я не думаю, что это проблема кода, но не уверен?Или есть какие-то настройки сети / IE, которые мне нужно настроить?

EDIT : Firefox с IPv6 и IE8 с IPv4 не имеют проблем при создании файла cookie аутентификации.По какой-то причине IE8 с IPv6 не может создать cookie, следовательно, проблема с RedirectFromLoginPage, которая должна создавать cookie.

EDIT 2 : Кажется, проблема в % в IPv6-адресе при использовании IE [т.е.идентификатор области видимости.Например, в Firefox у вас может быть % в адресе без проблем.В IE, если вы обращаетесь к приложению локально, используя IPv6 (локальный или сетевой IP), вы можете не указывать идентификатор области.Однако при доступе к приложению на сетевом компьютере вам нужен идентификатор области.И поскольку вам нужно кодировать % с помощью %25, вот в чем проблема.

[ps.Я знаю, этот вопрос имеет похожее название, но это не та же проблема.]

1 Ответ

0 голосов
/ 09 февраля 2011

Если честно, лучший способ решить эту проблему - не использовать локальные адреса ссылок в качестве конечных точек сети. Как вы обнаружили, эта область IPv6 плохо определена.

Я бы рекомендовал вместо этого использовать статические адреса IPv6. Либо так, либо ваш сетевой администратор (вы?) Включил рекламу маршрутизатора IPv6 в своей подсети, чтобы вы могли получить «реальные» ( не link-local) IPv6-адреса.

Обратите внимание, что вы все еще можете использовать "личное" пространство IPv6 (как вы делаете с 192.168.0.0/16 адресами IPv4)

Если у вас нет «реальной» подсети IPv6, вы можете использовать подсеть / 64 с номером 6to4 (что может быть хорошо, если у вас есть реальный адрес IPv4 и вы [в конце концов] хотите, чтобы ваши хосты участвовали в «реальном» интернете IPv6) или использовали уникальную локальную подсеть для использования.

Или просто сделайте это и пройдите 6in4 туннель из такого места, как Hurricane Electric .

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