установки: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 имеет аналогичное название, но это не та же проблема.]