2016-10-18 1 views
1
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain,"domain","CN=GroupName, DC = domainc, DC = local")) 
{ 
    // validate the credentials 
    try 
    { 
     bool isValid = pc.ValidateCredentials("userName", "password"); 
    } 
    catch (Exception e) 
    { 

    } 
} 

В конструкторе PrincipialContext, если я только указал доменное имя, я могу проверить его. Если я, однако, поставил CN = «BadGroupNameDoesNotExist», он все еще проверяет пользователя как истинного. Кажется, неважно, что я вложил в CN.PrincipalContext ActiveDirectory, проверяющий пользователя в контейнере

Почему? Я новичок в активной директории, и мысль о том, что включение в действительный CN будет иметь действительные учетные данные, только если он принадлежит к этой группе, но это выглядит неверно?

+0

вам не нужно проходить в CN, как вы делаете, я вывешу то, что я сейчас делаю, что работает в относится к проверке пользователя в AD – MethodMan

ответ

0

вы могли бы попробовать создать класс Utils и добавив следующие методы и т.д ..

using System.Security; 
using System.DirectoryServices.AccountManagement; 
public struct Credentials 
{ 
    public string Username; 
    public string Password; 
} 
public class Domain_Authentication 
{ 
    public Credentials Credentials; 
    public string Domain; 
    public Domain_Authentication(string Username, string Password, string SDomain) 
    { 
     Credentials.Username = Username; 
     Credentials.Password = Password; 
     Domain = SDomain; 
    } 
    public bool IsValid() 
    { 
     using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, Domain)) 
     { 
      // validate the credentials 
      return pc.ValidateCredentials(Credentials.Username, Credentials.Password); 
     } 
    } 
} 
+0

Как мне вернуть его true, если только пользователь принадлежал к определенной группе? –

+0

вы можете использовать 'GroupPrincipal' внутри использования, например, GroupVincipal group = GroupPrincipal.FindByIdentity (mainContext,« YourGroupName »);' затем вы можете искать через свойство group.Members, пока у вас нет нужного Принципала. – MethodMan

+0

пример 'foreach (Principal prnc in group.Members)' – MethodMan

Смежные вопросы