Avatar billede andersbodilsen Nybegynder
10. august 2005 - 17:48 Der er 5 kommentarer og
1 løsning

Active directory - brugere og grupper.

Hej Allesammen.

Jeg har brug for at kunne teste på om en bruger er med i en bestemt gruppe i AD'et.
Jeg har ikke lige kunnet gennemskue hvordan det gøres smartest..
Men har prøvet noget ligende dette uden det store held.

bruger: testbruger
gruppe: wobo

public class ADTest
{
  private string domain;
  private string userName;
  private string password;
  private DirectoryEntry dirEntry;

  public ADTest(string domain, string userName, string password )
  {
      this.domain = "LDAP://" + domain;
      this.userName = userName;
      this.password = password;
  }

  public bool Login()
  {
      try
      {
    dirEntry = new DirectoryEntry( this.domain, this.userName,     
            this.password, AuthenticationTypes.Secure );
               
    DirectorySearcher deSearch = new DirectorySearcher(   
            dirEntry );

    deSearch.Filter = "(&(objectClass=user) (group=wobo))";

        SearchResultCollection results = deSearch.FindAll();

        string breakPoint;
      }
}

Når jeg breaker på breakPoint er results stadig tom....

Hvis der findes en anden smartere måde at gøre det på er det også i orden:-)
Avatar billede segato Nybegynder
11. august 2005 - 10:04 #1
(&(memberOf=CN=dinGruppe,OU=din_sektion,DC=domæne,DC=domæne)(SAMAccountName=din_user))

søg efter entries med den her filterexpression. Er den null så findes brugeren ikke. En anden mulighed som jeg ik syntes er lige så god er at søge på brugeren og så kigge i alle dens memberOF. Noget i den her stil

DirectoryEntry entry = new DirectoryEntry(m_ADServer);           
            DirectorySearcher userSearch = new DirectorySearcher(entry);
                       
            userSearch.PropertiesToLoad.Add("department");
            userSearch.PropertiesToLoad.Add("displayName");
            userSearch.PropertiesToLoad.Add("memberOf");
           
            userSearch.Filter = "SAMAccountName=" + user;
            SearchResult userResult = userSearch.FindOne();
           
            //memberof
            ResultPropertyValueCollection memberGroups = userResult.Properties["memberOf"];
            ArrayList memberOfList = new ArrayList();           
            foreach(string group in memberGroups)
            {
                Match m = Regex.Match(group, @"CN=(.*?),",RegexOptions.IgnoreCase);
                string strippedGroup = m.Groups[1].ToString();

                memberOfList.Add(strippedGroup);
            }
Avatar billede segato Nybegynder
11. august 2005 - 10:08 #2
Hvis du vil have dit eget stykke til at virke kan du bruge den her:

"SAMAccountName=" + user virker det ikke findes din entry ikke eller der er noget andet galt.
Avatar billede andersbodilsen Nybegynder
11. august 2005 - 11:03 #3
Test domænet hedder eliten.local
jeg har klippet OU= ud af strengen, da jeg ikke lige vidste hvad jeg skulle sætte ind der.. har det en betydning for at jeg ikke får noget tilbage på dette filterexpression???

deSearch.Filter = "(&(memberOf=CN=wobo,DC=eliten,DC=local)(SAMAccountName=" + this.userName + "))";
Avatar billede segato Nybegynder
11. august 2005 - 11:17 #4
Ja ou er rimeligt vigtigt ved faktisk ik hvorfor startede også selv med at skrabe den lidt. OU er den gruppe(OU) wobo tilhører. Altså den "folder" hvori i wobo ligger i. Prøv lige at teste dit første eksempel , med SAMAccountName bare så vi lige kan se der er hul igennem. 

Men smider du lige din OU på igen ser det helt rigtigt ud, virker det ikke så fortæl mig lige præcis hvor i hiarakiet wobo ligger.
Avatar billede andersbodilsen Nybegynder
11. august 2005 - 14:10 #5
ok, det virker nu... Jeg added en OU i AD og smed gruppen derind....
Tak, for hjælpen. smid et svar:-)
Avatar billede segato Nybegynder
11. august 2005 - 14:35 #6
d no problemmo, held og lykke med det!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester