Hur kan ett enkelt exempel se ut för att hantera inloggning via AD?
Alltså om man exempelvis skriver ett användarnamn och lösenord i två inputboxar, så vill jag validera detta mot AD's databas och returnera om det är giltligt eller inte.
Du kan inte plocka ut lösenordet, däremot kan du få fram användarnamn (samaccountname) och alla andra fält från AD. Vi har precis byggt ett intranät med AD som grund för användarkonton, dock är det inte jag som har gjort kopplingarna mot AD. Jag återkommer när jag frågat de som VET. :)
Skulle föreslå att du använder dig av windowsinloggning. Denna använder sig automatiskt av AD och poppar upp en inloggnings ruta.
Sen om du vill plocka ut datan ifrån AD, dvs namn och sådant får du använda dig av DirectorySearcher för att få ut en DirectoryEntry och sedan tilla på NETworks exemple.
Däremot att skapa en helt egen inloggnigsgrej tror jag kan bli svårt. DEt går ju inte att se lösenordet och kontrollera mot detta. Jag har ej heller funnit någon inloggnings funktion på AD objectet.
Ok, ponera att jag har använt mig av den inbyggda windowsinloggningsfunktionen, då vill jag bara veta hur jag får tag i den användare som för tillfället är inloggad :)
string samAccountName = "minAnvändaresInlogg";
DirectoryEntry myDirEnt = new DirectoryEntry(LDAP://DC=corp,DC=microsoft,DC=com); //pathen till root objectet i ADn
DirectorySearcher myDirSearch = new DirectorySearcher(myDirEnt, "(&(objectCategory=person)(objectClass=user(sAMAccountName="+ samAccountName +"))"); //leta efter vår användare
SearchResult myRes = myDirSearch.FindOne(); //hitta honom
myDirEnt = new DirectoryEntry(myRes.Path); //myDirEntry innehåller nu pathen till vår användare
string streetAddress = myDirEnt.Properties["streetAddress"][0].ToString(); //läser ut exempelvis gatuadressen
Jag var lite lat och kopierade rakt ur vår kod. Vi var tvugna att göra en special test med @ för att se om användaren loggade in på sätter namn@domän istället för det mer vanliga domän\namn. Sen stoppar vi in samAccountNamet i vår klass Person. (som hanterar allt som rör AD personen)
Hmm, detta kanske kan funka om nu vill ha egen gjorda loggin text boxes etc.
// Create a new instance of NetworkCredential using the client
// credentials.
NetworkCredential credentials = new
NetworkCredential("username","password","domain");
254 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e