Восстановить логин-пароль Windows через asp.net
public Object IsAuthenticated()
{
String domainAndUsername = strDomain + "\\" + strUser;
***DirectoryEntry entry = new DirectoryEntry(_path, domainAndUsername, strPass);***
SearchResult result;
try
{
//Bind to the native AdsObject to force authentication.
DirectorySearcher search = new DirectorySearcher(entry) { Filter = ("(SAMAccountName=" + strUser + ")") };
search.PropertiesToLoad.Add("givenName"); // First Name
search.PropertiesToLoad.Add("sn"); // Last Name
search.PropertiesToLoad.Add("cn"); // Last Name
result = search.FindOne();
if (null == result)
{
return null;
}
//Update the new path to the user in the directory.
_path = result.Path;
_filterAttribute = (String)result.Properties["cn"][0];
}
catch (Exception ex)
{
return new Exception("Error authenticating user. " + ex.Message);
}
return user;
}
В указанном выше фрагменте кода есть ли способ получить пароль для входа пользователя в Windows, чтобы аутентификация LDAP работала, не запрашивая у пользователя его пароль в другой раз? Можно ли каким-либо образом получить значение для "strPass", которое передается при создании объекта DirectoryEntry?
3 ответа
Пароль не существует нигде. Это было бы большой дырой в безопасности, если бы это произошло.
Кроме того, кстати, избавьтесь от блока try/catch. Это ничего не делает, но скрывает причину исключения.
Используйте ActiveDirectoryMemebershipProvider - вы можете проходить аутентификацию без написания кода, тем самым исключая сценарий входа в систему, который у вас есть в данный момент.
Вы можете настроить аутентификацию Windows в своем приложении ASP.NET.
http://msdn.microsoft.com/en-us/library/ff647405.aspx После настройки только авторизованные пользователи смогут получить доступ к защищенным частям вашего сайта.
Это дает вам доступ к некоторым ключевым битам информации.
Например:
System.Web.HttpContext.Current.User.Identity.Name
- дает имя (домен \ имя пользователя) аутентифицированного пользователя.
System.Web.HttpContext.Current.User.IsInRole("role_name_here")
- скажет вам, если аутентифицированный пользователь находится в данной роли.
Аутентификация может быть сложной в первый раз - пожалуйста, не спрашивайте у пользователя его пароль Windows - это угроза безопасности - разрешите IIS и.NET Framework позаботиться об этом за вас. Статья выше может быть немного длинной и сложной, но в ней много полезной информации.