Когда я RDP к веб-серверу (клиенту), я ввожу свое имя пользователя как домен / имя пользователя. Что говорит мне, что я в AD. Я установил режим аутентификации web.config = "Windows" и авторизацию deny = "?" (Насколько я понимаю, это означает запретить всем, кто не аутентифицирован Windows.) Затем я пытаюсь открыть тестовую страницу (test.aspx). И я получаю отказано в доступе. Если я установил авторизацию, чтобы разрешить users = "*", страница откроется. Но environment.UserDomainName возвращает «IIS APPPOOL». И я хотел бы видеть, что environment.UserDomainName вернет фактическое доменное имя. Что мне нужно сделать? Или что мне не хватает?
Аутентификация Asp.net Windows запрещает анонимный доступ
comment
Возможный дубликат Получить текущий авторизованный пользователь IIS, возвращающий DefaultAppPool
- person Matt U   schedule 27.11.2019
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
Следующая строка фактически дает мне зарегистрированное имя пользователя: HttpContext.Current.Request.LogonUserIdentity.Name; Другой важный параметр должен быть: В web.config: ‹identity impersonate = false /› ‹authentication mode = Windows /› ‹deny users =? /> Спасибо. PS Хотел бы я понять, как сделать так, чтобы код выглядел как код.
- person Hidalgo; 30.11.2019
Согласно вашему другому комментарию, вы хотели получить текущее имя пользователя. Это был вопрос, на который я отвечал. Теперь ваш исходный вопрос заключался в получении имени домена пользователя. Кажется, теперь вы достигли и того, и другого. Итак, теперь вы ищете определенные настройки, которые остановят проблему отказа в доступе?
- person Hounddog75; 30.11.2019
Я отвечу на ваш вопрос, как только научусь показывать код в комментарии. Я хочу показать код, но все выглядит как текст.
- person Hidalgo; 02.12.2019
Если вы хотите разместить код, используйте обратную галочку (клавишу под клавишей ESC) в начале и в конце вашего кода. Как это:
string s = "testing";
.
- person Hounddog75; 02.12.2019
В моем коде я искал найти адрес электронной почты пользователя, основанный на имени учетной записи домена. Вот код:
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
Кроме того, ключом к тому, чтобы приведенный выше код работал, был следующий набор в web.config:
<identity impersonate="false" /> <authentication mode="Windows" /> <deny users="?" />
- person Hidalgo; 03.12.2019