Аутентификация Asp.net Windows запрещает анонимный доступ

Когда я RDP к веб-серверу (клиенту), я ввожу свое имя пользователя как домен / имя пользователя. Что говорит мне, что я в AD. Я установил режим аутентификации web.config = "Windows" и авторизацию deny = "?" (Насколько я понимаю, это означает запретить всем, кто не аутентифицирован Windows.) Затем я пытаюсь открыть тестовую страницу (test.aspx). И я получаю отказано в доступе. Если я установил авторизацию, чтобы разрешить users = "*", страница откроется. Но environment.UserDomainName возвращает «IIS APPPOOL». И я хотел бы видеть, что environment.UserDomainName вернет фактическое доменное имя. Что мне нужно сделать? Или что мне не хватает?


person Hidalgo    schedule 27.11.2019    source источник
comment
comment
Кажется, я не могу узнать текущее имя пользователя. Я могу получить доменное имя. Я получаю имя домена следующим образом (работает): Environment.UserDomainName; Но когда я пытаюсь получить имя пользователя (все методы ниже), я получаю имя сервера вместо имени пользователя: Environment.UserName; System.Environment.UserName; Environment.GetEnvironmentVariable (ИМЯ ПОЛЬЗОВАТЕЛЯ); В web.config есть: ‹режим аутентификации = Windows /› ‹identity impersonate = true /› или false, без разницы. На сайте в IIS для проверки подлинности Windows и анонимной проверки подлинности установлено значение Включить.   -  person Hidalgo    schedule 27.11.2019


Ответы (1)


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

string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
person Hounddog75    schedule 29.11.2019
comment
Следующая строка фактически дает мне зарегистрированное имя пользователя: HttpContext.Current.Request.LogonUserIdentity.Name; Другой важный параметр должен быть: В web.config: ‹identity impersonate = false /› ‹authentication mode = Windows /› ‹deny users =? /> Спасибо. PS Хотел бы я понять, как сделать так, чтобы код выглядел как код. - person Hidalgo; 30.11.2019
comment
Согласно вашему другому комментарию, вы хотели получить текущее имя пользователя. Это был вопрос, на который я отвечал. Теперь ваш исходный вопрос заключался в получении имени домена пользователя. Кажется, теперь вы достигли и того, и другого. Итак, теперь вы ищете определенные настройки, которые остановят проблему отказа в доступе? - person Hounddog75; 30.11.2019
comment
Я отвечу на ваш вопрос, как только научусь показывать код в комментарии. Я хочу показать код, но все выглядит как текст. - person Hidalgo; 02.12.2019
comment
Если вы хотите разместить код, используйте обратную галочку (клавишу под клавишей ESC) в начале и в конце вашего кода. Как это: string s = "testing";. - person Hounddog75; 02.12.2019
comment
В моем коде я искал найти адрес электронной почты пользователя, основанный на имени учетной записи домена. Вот код: string CurrentUserDomain = HttpContext.Current.Request.LogonUserIdentity.Name; PrincipalContext ctx = new PrincipalContext(ContextType.Domain); UserPrincipal user = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, CurrentUserDomain); if (user != null) { lblEmail.Text = user.EmailAddress; } Спасибо за предложение с обратной галочкой. Жаль, что я не могу понять, как сделать каждую строку отдельной строкой. - person Hidalgo; 03.12.2019
comment
Кроме того, ключом к тому, чтобы приведенный выше код работал, был следующий набор в web.config: <identity impersonate="false" /> <authentication mode="Windows" /> <deny users="?" /> - person Hidalgo; 03.12.2019