2010-06-10 2 views
1

У меня есть сайт, который построен в ASP.net и C#. Назовем это webapp. он использует систему Form для входа в нее и не может быть изменен easliy.Получение имени пользователя Windows с помощью javascript

У меня есть запрос на изменение входа в систему для проверки подлинности какого-либо окна. Я объясню. Наш вход в Windows использует активный каталог для входа в учетную запись Windows. их имя входа - sXXXXXXX. X - числа. в моем webapp, я хочу взять номера пользователей из их активного входа в каталог и проверить, существуют ли они в базе данных webapp. если он существует, они автоматически войдут в систему. Если это не так, они будут перенаправлены на обычную страницу входа для системы webapp, которая в настоящее время используется.

Я попытался изменить свой IIS, чтобы отключить анонимный вход и включить проверку подлинности Windows, поэтому, чтобы браузер пользователя отправил текущее имя пользователя в мой webapp. Я также изменил веб-конфигурацию с «Форм» на «Windows», что сделало мой весь webapp устаревшим, поскольку вся система форм не работала.

Мой вопрос в том, есть ли другой способ для браузера только отправить имя пользователя на мой webapp? Я думал, может быть, javascript, я просто не знаю, как реализовать это, если это возможно. Я знаю, что это не очень безопасно, но вся эта платформа и система построены за пределами Интернета, она находится в частной сети.

+0

Я сомневаюсь. javascript выполняется в довольно изолированной среде, он сильно ограничен. никто не позволит вам захватить такие данные – Andrey

ответ

1

Решение, которое я нашел для получения имени пользователя отправляется на сервер был:

string winlogon = Request.ServerVariables["LOGON_USER"]; 

После включен режим проверки подлинности Windows в IIS.

+0

Это вернет вам имя пользователя, которое запускает этот серверный процесс, а не клиентский. –

1

Единственный способ получить доступ к учетным записям домена пользователя через javascript - это развернуть компонент ActiveX определенного типа, чтобы разоблачить эти данные в браузере. Я бы не рекомендовал этого.

Я бы посмотрел на реализацию страницы входа для проверки подлинности форм, которая аутентифицирует пользователя при загрузке страницы, используя HttpContext.Current.User.

Способ создания форм заключается в том, что если пользователь, не прошедший проверку подлинности, пытается получить доступ к странице с доступом и не зарегистрировался (без файла cookie), они будут перенаправлены на страницу входа в систему, которая предоставляет возможность входа в систему (это устанавливает cookie на стороне клиента). Затем пользователь направляется на страницу, которую они изначально запросили. Вы просто автоматизировали бы часть входа.

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

+0

Текущая система делает именно то, что вы сказали - пользователь аутентифицируется на странице входа, которая устанавливает cookie на стороне клиента. Когда я попытался включить проверку подлинности Windows, как в IIS, так и в web.config, мой сайт просто не работал - вся форма входа и сайт на самом деле основана на режиме проверки подлинности форм в файле web.config - я не могу изменить это так как мой сайт просто не работает. Я знаю, что ActiveX не является безопасным и не рекомендуется, но я просто не вижу другого способа ... если есть, я был бы рад узнать. Если нет, я хотел бы получить объяснение, как реализовать ActiveX. – jbkkd

+0

Здесь есть удобный учебник: http://dotnetslackers.com/articles/csharp/writinganactivexcontrolincsharp.aspx. Но я не могу не думать, что вокруг этого есть очевидный путь. Я просто не могу думать об этом еще! –

1
<script language="javascript"> 
    var username = '<%HttpContext.Current.User.Identity.Name %>'; 

</script> 
+1

Это будет работать, только если включена проверка подлинности Windows.Пользователь не может этого сделать. –

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