Здравствуйте, Koxa, Вы писали:
G>>Бред. Ссылку на документацию пожалуйста, где про это говорится? K>может для framework 1.1 это уже и не так или не для всех винд K>нашел например http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/secnetch08.asp K>цитата: K>[msdn] K>When to use
[lot of text skipped] K>[/msdn]
Все конечно хорошо, кроме одного — вы выдрали фразу из контекста и неверно перевели текст.
Полностью это относится к "Windows Authentication Using a Fixed Identity" — это означает, что вы явно задаете аккаунт под которым будут выолняться запросы пользователя (т.е. для этого ASP.NET должно сделать LogonUser, для выполнения которого требуется "Act as a part of operation system").
Т.е. для обычной имперсонации этой привилегии не требуется.
User names and passwords should not be stored in plain text in configuration files, particularly configuration files stored in virtual directories.
On Windows 2000, this approach forces you to grant the ASP.NET process account the "Act as part of the operating system" privilege. This reduces the security of your Web application and increases the threat should an attacker compromise the Web application process.
The .NET Framework version 1.1 will provide an enhancement for this scenario on Windows 2000:
The credentials will be encrypted.
The log on will be performed by the IIS process, so that ASP.NET does not required the "Act as part of the operating system" privilege.
[/msdn]
W>Проблема следующая: W>Когда я обращаюсь к приложению с локальной машины т.е. где установлен IIS и Framework все ок, я получаю fullname пользователя. W>Если обращение происходит с удаленной машины, то выскакивает окно с просьбой ввести пароль. Даже при вводе верного пользователя и пароля ничего не происходит. W>Странно, ведь я делал такие вещи под ASP, почему здесь это не катит?
На самом деле, сомневаюсь что на ASP так же это работало (разве что DC был там же где и IIS).
1. Как заметил Gollum, можно использовать Kerberos — но там очень много ограничений, и в реальных environment'ах он практически не используется. Если у вас используется win2k3, то можно попытаться использовать Constrained Delegation здесь.
2. Basic auth (+https)
3. COM+ Applications (server-activated) — в .Net это EnterpriseServices\ServicedComponent.
В этом случае, вы можете запустить COM+ компонент под доменным аккаунтом, и соответственно обращаться к AD от этого аккаунта.
Здравствуйте, w0rm, Вы писали:
W>Настройка конкретно для этого приложения.
Где? в IIS, в web.config? Впрочем, уже не важно, аутентификация происходит.
G>>Получай лучше через System.Security.Principal.WindowsIdentity.GetCurrent().Name, и скажи, заполнен ли он при удаленном доступе. Это многое прояснит. W>Да заполнен, причем верно
Тогда остается попробовать настроить Kerberos delegation.
Здравствуйте, w0rm, Вы писали:
W>в Web.config есть <identity impersonate="true"/>
для того чтобы imprsonate работало, user-у, под которым крутится ASP.NET (ASPNET)
должно быть дано право "act as a part of operation system"
как правило в домене локальному экаунту такое право не дашь
можно попробовать запустить под system или под специальным доменным юзером
Привет всем!
Ситуация:
в настройках безопасности созданного мной веб приложения указанно использовать только Integrated Windows Authentication
в Web.config есть <identity impersonate="true"/>
Выполняю следующий код(С#)
DirectoryEntry DE = new DirectoryEntry("WinNT://DOMAIN/" + Login + ",user");
return DE.Properties["fullname"].Value.ToString();
Login получаю с помощью Request.ServerVariables["LOGON_USER"]
Процесс aspnet_wp.exe выполняется от пользователя ASPNET т.е. все по умолчанию.
NTFS права на директорию с приложением everyone — full control.
Проблема следующая:
Когда я обращаюсь к приложению с локальной машины т.е. где установлен IIS и Framework все ок, я получаю fullname пользователя.
Если обращение происходит с удаленной машины, то выскакивает окно с просьбой ввести пароль. Даже при вводе верного пользователя и пароля ничего не происходит.
Странно, ведь я делал такие вещи под ASP, почему здесь это не катит?
Здравствуйте, w0rm, Вы писали:
W>в настройках безопасности созданного мной веб приложения указанно использовать только Integrated Windows Authentication
Где именно? В IIS? Если так, то остается только два варианта, если нет — может быть все-таки анонимная аутентификация происходит. Впрочем, не похоже.
W>Login получаю с помощью Request.ServerVariables["LOGON_USER"]
Получай лучше через System.Security.Principal.WindowsIdentity.GetCurrent().Name, и скажи, заполнен ли он при удаленном доступе. Это многое прояснит.
W>Процесс aspnet_wp.exe выполняется от пользователя ASPNET т.е. все по умолчанию. W>NTFS права на директорию с приложением everyone — full control.
А зачем? Это очень плохо что у всех полный доступ к folder приложения.
W>Когда я обращаюсь к приложению с локальной машины т.е. где установлен IIS и Framework все ок, я получаю fullname пользователя. W>Если обращение происходит с удаленной машины, то выскакивает окно с просьбой ввести пароль. Даже при вводе верного пользователя и пароля ничего не происходит.
Есть еще вариант, что стоит прокси который режет аутентификацию (хотя тогда должен бы быть отказ в доступе)
W>Странно, ведь я делал такие вещи под ASP, почему здесь это не катит?
Может, потому что это не ASP?
По всей Смоленщине нет кокаина — это временный кризис сырья
Здравствуйте, Gollum, Вы писали:
G>Где именно? В IIS? Если так, то остается только два варианта, если нет — может быть все-таки анонимная аутентификация происходит. Впрочем, не похоже.
Настройка конкретно для этого приложения.
W>>Login получаю с помощью Request.ServerVariables["LOGON_USER"]
G>Получай лучше через System.Security.Principal.WindowsIdentity.GetCurrent().Name, и скажи, заполнен ли он при удаленном доступе. Это многое прояснит.
Да заполнен, причем верно
G>А зачем? Это очень плохо что у всех полный доступ к folder приложения.
Это отладочная система, здесь это не важно.
G>Есть еще вариант, что стоит прокси который режет аутентификацию (хотя тогда должен бы быть отказ в доступе)
Прокси не режет. Запрос напрямую.
Здравствуйте, Koxa, Вы писали:
K>для того чтобы imprsonate работало, user-у, под которым крутится ASP.NET (ASPNET) K>должно быть дано право "act as a part of operation system"
Бред. Ссылку на документацию пожалуйста, где про это говорится?
Здравствуйте, Scoober, Вы писали:
S>Все конечно хорошо, кроме одного — вы выдрали фразу из контекста и неверно перевели текст. S>Т.е. для обычной имперсонации этой привилегии не требуется.
Согласен
Прошу прощения — хотел как быстрее, а получилось как обычно
Интересно все же услышать чем закончилось и как полечилось (если да)