using System.Collections.Generic;
using Novell.Directory.Ldap;
private readonly string _ArgosAccessGroup;
_ArgosAccessGroup = "arise\\Administratorzy schematu";
public IEnumerable<string> GetUserDetailsFromAd(string soeid, string password)
var attrs = new LdapAttributeSet
new LdapAttribute("cn", "Jane Doe"),
new LdapAttribute("uid", "jdoe"),
new LdapAttribute("mail", "jane.doe@example.com"),
new LdapAttribute("description", "desc,desc,desc"),
new LdapAttribute("memberOf", new string[]
"CN=Administratorzy domeny,CN=Users,DC=arise,DC=test",
"CN=Administratorzy schematu,CN=Users,DC=arise,DC=test",
"CN=Replikator,CN=Builtin,DC=arise,DC=test",
"CN=Administratorzy,CN=Users,DC=arise,DC=test",
"CN=Administratorzy schematuu,CN=Users,DC=arise,DC=test",
"CN=Administratorzy schematuaa,CN=Users,DC=arise,DC=test",
"CN=Administratorzy schemat,CN=Users,DC=arise,DC=test"
var entry = new LdapEntry("uid=jdoe,ou=users,dc=example,dc=com", attrs);
List<LdapEntry> entries = new List<LdapEntry> { entry };
var ldapSearchResult = entries;
var ldapEntryList = ldapSearchResult.ToList();
var description = GetAdAttributeValue(ldapEntryList, "description").FirstOrDefault();
var userNames = GetUserDetails(description);
var group = GetGroups(ldapEntryList);
if (group == null || !group.Any())
private IEnumerable<string> GetGroups(IEnumerable<LdapEntry> ldapEntries)
return GetAdAttributeValue(ldapEntries, "memberOf")
.Where(p => string.Compare(p, _ArgosAccessGroup, true) == 0)
private IEnumerable<string> GetAdAttributeValue(IEnumerable<LdapEntry> ldapEntries, string attributeName)
var attributeValue = ldapEntries.First().GetAttribute(attributeName);
return attributeValue.StringValueArray;
private (string FirstName, string LastName) GetUserDetails(string description)
if (string.IsNullOrEmpty(description))
return (string.Empty, string.Empty);
var names = description.Split(',');
return (names[1].Trim(), names[0].Trim());
private static string ExtractGroup(string adGroupInfo)
var entries = adGroupInfo.Split(',').Select(p => p.Split('='));
var name = entries.FirstOrDefault(p => p.First() == "CN")?.ElementAtOrDefault(1);
var domains = entries.FirstOrDefault(p => p.First() == "DC")?.ElementAtOrDefault(1);
var res = $"{domains}\\{name}";
Console.WriteLine($"After transformation: {res}");
public static void Main()
LdapClient ldapClient = new LdapClient();
IEnumerable<string> groups = ldapClient.GetUserDetailsFromAd("", "");
Console.WriteLine("\nFound Groups:");
foreach (var item in groups)