Восстановить логин-пароль 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 позаботиться об этом за вас. Статья выше может быть немного длинной и сложной, но в ней много полезной информации.

Другие вопросы по тегам