Получить имя входа в Windows без проверки подлинности Windows

Я пытаюсь получить имя пользователя для входа в Windows из моего приложения asp.net. Вот мой код

string user_name = Request.ServerVariables.Get("LOGON_USER");

это отлично работает в моей локальной среде, но когда я загружаю тот же код в IIS, он дает мне пустое значение, даже если я пытался получить имя пользователя для входа в систему

HttpContext.Current.User.Identity.Name

но это дает мне пустой. Как только я включаю аутентификацию IIS для аутентификации Windows и отключаю аутентификацию Antonyms, она работает нормально. Может кто-нибудь, пожалуйста, направьте меня, как я это получу. Пожалуйста, поправьте меня, если я использую какой-либо неправильный подход.

Заранее спасибо.

Изменить: я не хочу устанавливать аутентификацию Windows, поэтому будет ли это возможно при аутентификации на уровне страницы ASP.NET, установив в Web.Config

<allow user="*"/> or <deny user="?"/>

Пожалуйста, поправьте, если я ошибаюсь.


person gofor.net    schedule 10.04.2014    source источник
comment
Чего вы пытаетесь достичь? Вы хотите получить имя пользователя, прошедшего проверку подлинности, или вы хотите получить имя пользователя, запускающего ваш процесс? В первом случае вы должны включить аутентификацию Windows. Если пользователь не аутентифицирован (или аутентифицирован анонимно), как приложение должно определять учетные данные пользователя?   -  person Carsten    schedule 10.04.2014
comment
@Aschratt спасибо за ответ. Мне нужен логин пользователя, который хочет получить доступ к системе. Мое приложение не основано на интрасети. Доступ к нему возможен и из внешнего мира. Может удастся?   -  person gofor.net    schedule 10.04.2014
comment
Это невозможно. Учетные записи пользователей хранятся локально в системе пользователя или на контроллере домена, если система зарегистрирована в домене. Идентификация может быть обеспечена только в рамках этой области, и поэтому вы не можете использовать ее из своего веб-приложения. Также было бы огромной проблемой безопасности, если бы кто-нибудь мог запросить имя пользователя, которое я использую для входа в свою систему.   -  person Carsten    schedule 10.04.2014
comment
То есть вы имеете в виду, что без аутентификации Windows я не смогу получить имя пользователя для входа в систему, верно?   -  person gofor.net    schedule 10.04.2014
comment
Даже при включении проверки подлинности Windows вы не можете получить доступ к локальному имени пользователя для входа в систему. Вы можете создать собственный каталог пользователя на стороне сервера. Там вы можете создавать пользователей, которые могут использоваться для аутентификации в вашем приложении, но вы просто не можете получить доступ к учетным данным пользователей, которыми вы не управляете!   -  person Carsten    schedule 10.04.2014
comment
спасибо @Aschratt, последний вопрос, если я включу аутентификацию Windows, можно ли будет подключить мое приложение отовсюду? Как я уже пробовал, но он будет принимать только логин и пароль развернутых серверов. Он не будет принимать локальные данные для входа.   -  person gofor.net    schedule 10.04.2014


Ответы (1)


Чтобы получить имя пользователя, вам нужно использовать что-то помимо анонимной аутентификации.

Используя анонимную аутентификацию, вы не можете получить имя пользователя локального пользователя. Даже если бы это было возможно, это было бы нецелесообразно с общедоступным сайтом, потому что у вас могло бы быть несколько компьютеров с одним и тем же локальным именем пользователя.

Кроме того, поскольку вы упомянули, что это внешний сайт за пределами корпоративного домена, аутентификация Windows не подходит. Проверка подлинности Windows в основном используется для внутренних приложений интрасети.

То, что вы, вероятно, ищете, если хотите уникально идентифицировать каждого пользователя и иметь аутентификацию с помощью форм, которую ASP.NET поддерживает и предоставляет готовые элементы управления, позволяющие пользователям регистрироваться и создавать учетные записи для вашего веб-сайта. Перейдите по этой ссылке http://msdn.microsoft.com/en-us/library/7t6b43z4.aspx

Чтобы ответить: "Возможна ли аутентификация на уровне страницы ASP.NET путем настройки в Web.Config?" Установка правил авторизации <allow user="*"/> or <deny user="?"/> в web.config управляет authorization для данного пользователя (независимо от того, может ли данный пользователь получить доступ к странице в этом случае) ПОСЛЕ того, как пользователь был authenticated, но не влияет на метод authentication или используемый провайдер членства. Таким образом, этот параметр web.config не позволит вам получить имя пользователя с помощью анонимной аутентификации.

person BateTech    schedule 11.04.2014