Avatar billede iblarsen Praktikant
30. august 2007 - 08:50 Der er 3 kommentarer og
1 løsning

Gruppemedlemsskaber i Active Directory

Er der nogen som ligger inde med et C# eksempel (eller link til et sådan). Som kan løse følgende problemstilling:

Undersøge om en domænebruger (windows server 2000 / 2003) er medlem af en bestemt gruppe, eller i en 'nedarvet' gruppe (gruppe som er medlem af en anden gruppe - som er medlem af en anden gruppe - osv.).

Grupperne kan være både security grupper men også destributions grupper.
Avatar billede lasserasch Juniormester
30. august 2007 - 10:27 #1
Dette er min kode til at se hvilke gruppe en bruger er medlem af, og sætte værdier udfra det.

Det skal nok lige modificeres lidt, men ud fra nedestående kan du se hvordan der forbindes til et AD og gruppemedlemskab tjekkes for en bruger.

/Lasse

    public void setup_userrights(String Username)
        {
            // Forbind til AD'et og træk informationer ud omkring hvilke rettighedsgrupper brugeren er medlem af.
            System.Collections.Hashtable h = new System.Collections.Hashtable();
            h.Add("R_Intrahouse_Kalkulation", 0);
            h.Add("R_Intrahouse_Kalkulation_Admin", 0);
            h.Add("R_Intrahouse_Kampagneplaner", 0);
            h.Add("R_Intrahouse_Medarbejderlist", 0);
            h.Add("R_Intrahouse_Systemadministration", 0);
            h.Add("R_Intrahouse_Reklamationsadministration", 0);

            frm_main.UserName = Username;
            DirectoryEntry ADE1 = new DirectoryEntry(frm_main.INI_ADLdap, frm_main.INI_ADUsername, frm_main.INI_ADPassword);
            DirectorySearcher ADS1 = new DirectorySearcher(ADE1);
            ADS1.Filter = "(&(objectCategory=group)(cn=" + frm_main.INI_ADGruppefilter + "*))";
            ADS1.SearchScope = SearchScope.Subtree;

         
                // for alle fundne grupper.
            try
            {
                foreach (SearchResult res in ADS1.FindAll())
                {
                    DirectoryEntry de;
                    de = res.GetDirectoryEntry();
                    object objMembers = null;
                    objMembers = de.Invoke("Members");



                    // For hvert medlem af den pågældende gruppe.
                    foreach (object objMember in (IEnumerable)objMembers)
                    {
                        DirectoryEntry objUser = new DirectoryEntry(objMember);
                        if (Convert.ToString(objUser.Properties["samAccountName"].Value).ToLower() == frm_main.UserName.ToLower())
                            h[de.Properties["Name"].Value] = 1;
                    }
                }



                // Sætter rettighedsværdier ud fra resultat givet fra AD'et!
                // I princippet burde INT32 værdierne slettes helt. Så man bare brugte hash værdierne i stedet for!

                frm_main.R_Intrahouse_Kalkulation = (Int32)h["R_Intrahouse_Kalkulation"];
                frm_main.R_Intrahouse_Kalkulation_Admin = (Int32)h["R_Intrahouse_Kalkulation_Admin"];
                frm_main.R_Intrahouse_Kampagneplaner = (Int32)h["R_Intrahouse_Kampagneplaner"];
                frm_main.R_Intrahouse_Medarbejderlist = (Int32)h["R_Intrahouse_Medarbejderlist"];
                frm_main.R_Intrahouse_Systemadministration = (Int32)h["R_Intrahouse_Systemadministration"];
                frm_main.R_Intrahouse_Reklamationsadministration = (Int32)h["R_Intrahouse_Reklamationsadministration"];
            }
            catch (Exception Ex)
            {
                Console.WriteLine(Ex.Message);
            }

        }
Avatar billede iblarsen Praktikant
01. september 2007 - 11:27 #2
Jeg kigger på det og vender tilbage.
Vil ovennænvte søgning også finde nedarvede gruppemedlemsskaber?
Avatar billede lasserasch Juniormester
02. september 2007 - 19:37 #3
Det ved jeg faktisk ikke, for vi kører ikke active directory i Native Mode, pga. nogle gamle DOS maskiner som så ikke vil fungere korrekt. Så det nummer med Grupper i Grupper osv kan vi desværre ikke lave ude hos os :-(

/Lasse
Avatar billede iblarsen Praktikant
15. januar 2008 - 07:50 #4
Lukker
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