2012-04-23 1 views
0

Я новичок здесь, так что медведь со мной с моим объяснением. В настоящее время мне поручено создать страницу входа в систему AD, где пользователь должен ввести свой идентификатор пользователя и пароль.Аутентификация пользователя с использованием SAMAccountName

Однако, поскольку я сделал много поисков в Интернете, я узнал, что нет возможности аутентифицировать пользователя как с UserID, так и с паролем, поскольку SAMAccountName просто нуждается в UserID.

Дело в том, что пользователь, которому я должен пройти проверку подлинности, не является пользователем, который я использую для входа в систему LDAP. Соединение LDAP всегда будет одним и тем же именем администратора и паролем, в то время как пользователям, которым я должен пройти аутентификацию, будут разные пользователи.

Большинство примеров, показанных в Интернете, объясняют, что идентификатор пользователя LDAP и имя SAMAccountName используют один и тот же идентификатор пользователя. Однако это не применимо к моей ситуации.

Поэтому я хочу спросить. Возможно ли аутентификация UserID пользователя и пароля с использованием SAMAccountName? Надеюсь, вы сможете представить пример кода, поскольку я не опытный программист по сравнению с большинством людей здесь. Благодарю.

public SearchResult GetADUser(string UserID, string Password) 
    { 
     SearchResult results; 

     try 
     { 
       DirectoryEntry de = GetDirectoryObject(CommonConstant.LDAP_CONNECTION_STRING); 
       de.Username = CommonConstant.AD_ADMIN_ID; 
       de.Password = CommonConstant.AD_ADMIN_Password; 

       DirectorySearcher deSearch = new DirectorySearcher(); 
       deSearch.SearchRoot = de; 

       deSearch.Filter = "(&(objectClass=user)(objectCategory=person)(samaccountname=" + UserID + "))"; 
       deSearch.SearchScope = SearchScope.Subtree; 
       results = deSearch.FindOne(); 
      } 
      catch (Exception ex) 
      { 
       throw new Exception(String.Format("GetADUser() returned {0}, \"{1}\"", ex.StackTrace, ex.Message)); 
      } 

      return results; 
    } 

ответ

2

Вы делаете много предположений, и некоторые из этих предположений просто неверны.

Да, это правда, что для доступа к LDAP вам нужно имя пользователя и пароль. И это правда, что многие образцы используют учетные данные, предоставленные для аутентификации в отношении LDAP, чтобы ... хорошо, аутентифицироваться против LDAP.

Проблема в том, что вам не нужно ничего делать. Вы говорите, что это «Портал AD», который, как я полагаю, означает, что это веб-приложение. И поскольку вы используете C#, я предполагаю, что вы используете asp.net. Если вы используете asp.net, вы можете просто использовать систему членства ASP.NET для аутентификации с использованием проверки подлинности Windows с помощью AD. Это более или менее «встроенный».

Вам не нужно выполнять LDAP-запросы. Вы слишком усложняете проблему. Это очень просто.

Если есть что-то очень конкретное, что вы пытаетесь сделать, вы действительно идете по неверному пути для простой страницы входа в систему AD.