Erstmal hoffe ich, dass hier das richtige Forum ist...
Ich möchte folgendes tun: Für ein größeres Programm (ein Web Service) benötige ich Infos aus dem Active Directory über die Benutzergruppen eines einzelnen Users. Genauer gesagt muss ich herausfinden, ob der User in einer bestimmten Gruppe drin ist oder nicht. Da das meine erste AD-Abfrage in einem C#-Programm ist, mag der Code holprig/merkwürdig aussehen...naja, er funktioniert ja auch nicht.
Die entscheidenden Teile sind diese hier:
public bool GetADUserGroups(string userName, string gruppe)
{
bool ergebnis = false;
DirectoryEntry ebr = new DirectoryEntry("LDAP://DOMAINE.DO","DOMAIN_USER","PASSWORD");
/*(reicht hier ein normaler Domain User oder muss das ein Domain Admin sein??)*/
DirectorySearcher search = new DirectorySearcher(ebr);
/*(das sind jetzt die verschiedenen Filtervarianten, die ich ausprobiert habe; sind alle mit Ausnahme der nicht auskommentierten mit Fehler abgebrochen)*/
//search.Filter = String.Format("(cn={0})", userName);
//search.Filter = String.Format("&(objectClass=user)(userprincipalname={0})", userName);
//search.Filter = "&(objectClass=user)(userprincipalname=" + userName + ")";
search.Filter = "(objectClass=user)";
/*(der Username wird übrigens in der Form "vorname.nachname", sprich der Login-Name, übergeben)*/
search.PropertiesToLoad.Add("memberOf");
search.PropertiesToLoad.Add("samAccountName");
foreach (SearchResult table in search.FindAll())
{
int groupCount = table.Properties["memberOf"].Count;
logger.LogInfo(table.Properties["samAccountName"].ToString());
if (table.Properties["samAccountName"].ToString() == userName)
{
for (int i = 0; i < groupCount; i++)
{
logger.LogInfo(table.Properties["memberOf"][i].ToString());
if (table.Properties["mebmerOf"][i].ToString() == gruppe)
{
ergebnis = true;
}
}
}
}
return ergebnis;
}
Tja, und langsam fällt mir nicht mehr viel ein. Ich probiere weiter rum, aber ich komme mir vor wie einer, der im tief-trüben fischt...
Über Hilfe wäre ich sehr dankbar!