Avatar billede mickni33 Nybegynder
12. oktober 2009 - 08:58 Der er 9 kommentarer og
1 løsning

Active directory

Jeg har lavet dette lille testprogram for at få adgang til Active directory..
SearchResultCollection results siger godt nok at der er fundet en entry med det rette username.

Men jeg kunne godt tænke mig at få adgang til alle de andre info som ligger under dennne bruger feks . Password og username for at se om det nu er den rigtige bruger jeg har fat på...

Når jeg debugger mig igennem kan jeg ikke rigtig få noget info ud af "DirectoryEntry de" og "DirectorySearcher deSearch"..

Er der noget jeg  mangler?


string username="en bruger";
DirectoryEntry de = new DirectoryEntry("LDAP://Domain.local", "Administrator", "MitPassword");
           
            de.AuthenticationType = AuthenticationTypes.Secure;

            DirectorySearcher deSearch = new DirectorySearcher();

            deSearch.SearchRoot = de;
            deSearch.Filter = "(&(objectClass=user) (cn=" + username + "))";
            SearchResultCollection results = deSearch.FindAll();
Avatar billede mickni33 Nybegynder
12. oktober 2009 - 10:38 #1
aaahh ok fandt ud af at man skal bruge nogle properties fra "DirectoryEntry de"

hmmm synes bare ikke jeg kan finde en "Password" property


---------------------------------------------------------------------

DirectoryEntry entry = new DirectoryEntry("LDAP://Domain.local", "Administrator", "MitPassword");

            entry.AuthenticationType = AuthenticationTypes.Secure;

            DirectorySearcher deSearch = new DirectorySearcher(entry);
            deSearch.Filter = "(&(objectClass=user) (cn=" + username + "))";


            SearchResultCollection results = deSearch.FindAll();
            int index = 0;
            foreach (SearchResult srUser in results)
            {
               
                try
                {
                    DirectoryEntry de = srUser.GetDirectoryEntry();
                        m_Collection.AddFirst(de.Properties["sAMAccountName"].Value.ToString());
                        index++;
                }
                catch
                {
                    throw;
                }

            }
Avatar billede bvli Praktikant
12. oktober 2009 - 10:54 #2
Password gemmes ikke i AD. Der gemmes en hashværdi af det.

Hvis du vil validere et brugernavn/password-sæt, kan du bare bruge disse til din connection. Din connection vil så fail'e hvis det ikke er korrekt.
Avatar billede mickni33 Nybegynder
12. oktober 2009 - 12:57 #3
aaahh hvordan finder jeg så den hashværdi?
Avatar billede mickni33 Nybegynder
12. oktober 2009 - 12:59 #4
Jeg vil nemlig gerne kunne se at det nu også er det rigtige password jeg har fat i, især når jeg skal til at lave en Update/Reset Password
Avatar billede bvli Praktikant
12. oktober 2009 - 14:03 #5
Jeg bruger selv en LDAP-server i forbindelse med en samba domain controller og den lægger den i sambaLMPassword og sambaNTPassword. Jeg ved ikke hvad de attributter hedder i Active Directory.

Anyway - det bedste vil være, at det ikke er muligt - sådan rent sikkerhedsmæssigt ihvertfald. Hvis det bare er for at checke at du har fat i det rigtige password kan du, som jeg skrev tidligere, bare bind'e til AD vha. det brugernavn/password du vil checke.

DirectoryEntry entry = new DirectoryEntry("LDAP://Domain.local", username, password);
[... osv ...]

Hvis det fail'er, så er det ikke det rigtige password du har fat i.
Avatar billede mickni33 Nybegynder
12. oktober 2009 - 14:13 #6
DirectoryEntry entry = new DirectoryEntry("LDAP://Domain.local", username, password);


username og password er det ikke til selve serveren hvor AD ligger?

Jeg skal nemlig have fat i password på hver enkel user, og så tror jeg ikke man kan bruge den der du har skrevet...Har ikke prøvet det :-) men det er lige sådan som jeg ser på det...
Avatar billede bvli Praktikant
12. oktober 2009 - 17:40 #7
Jo - og det er det der er det smarte :) AD bruger jo AD til at authenticate og så længe du bare laver queries på brugeren selv, så har han også adgang til det, såfremt han har angivet brugernavn og password korrekt.
Avatar billede mickni33 Nybegynder
13. oktober 2009 - 09:27 #8
aaahh ok... ok troede at DirectoryEntry entry = new DirectoryEntry("LDAP://Domain.local", username, password);
skulle være Administrator log in..

men så skal man vel lige holde øje med hvilke brugere man logger ind med. det er  jo ikke sikkert at alle brugere feks må rette brugernavn og password..
Avatar billede mickni33 Nybegynder
13. oktober 2009 - 09:27 #9
læg lige et svar
Avatar billede bvli Praktikant
13. oktober 2009 - 10:05 #10
Du kan nøjes med at bruge test-forespørgslen til at checke user/pass. Brug din administratorforbindelse til resten.

Og et svar her :)
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