2011-01-10 2 views
3

установки:IPv6 проблема сфера идентификатор с IE и ASP.NET

Два 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. Я знаю, что this question имеет аналогичное название, но это не та же проблема.]

ответ

0

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

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

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

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

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

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

  • Нет связанных вопросов^_^