Pokud programujete webové aplikace, které pracují v intranetovém prostředí, pak jste se jistě setkali s Active Directory (AD). V podstatě celý systém Microsoftu je postaven na AD. V tomto článku si ukážeme, jak přistupovat do AD pomocí .NET a získat nějaké informace, např. pro prezentaci na webu. Toto může být užitečné, pokud nám nepostačují nástroje Microsoftu. V tomto prvním příkladě si ukážeme, jak jednoduše lze přeložit login v doméně na lidský tvar „Příjmení Jméno“.
Pro tento příklad potřebujeme importovat Namespace DirectoryServices
Imports System.DirectoryServices
Ve Visual Studiu je to klepnutím na References > Add reference > .NET > System.DirectoryServices.dll
\'Překlad loginu na tvar "Prijmeni Jmeno" Function ConvertSAMToName(ByVal SAMAccountName As String) As String \'očistíme samaccountname o doménu SAMAccountName = Replace(SAMAccountName.ToLower, "domenaxxx\\", "") \'přihlašovací údaje pro přístup do AD, pokud neni povolen anonymní přístup Dim Username As String = "DOMENAXXX\\username" Dim Password As String = "password" Dim Path As String = "LDAP://subdom.domenaXXX.cz:3268/DC=domenaXXX,DC=cz" \'nacitani pres global catalog (GC)je o poznání rychlejší \'s velkou pravděpodobností budete mít GC na portu 3268 \'jinak můžete přistupovat přímo do domeny \'LDAP://domenaXXX.cz/DC=domenaXXX,DC=cz" Try Dim entry As New DirectoryEntry(Path, Username, Password) Dim search As New DirectorySearcher(entry) \'zde se nastavuje filtr a vlastnosti, ktere z AD chceme search.Filter = "(samaccountname=" & SAMAccountName & ")" search.PropertiesToLoad.Add("sn") search.PropertiesToLoad.Add("givenName") Dim result As SearchResult = search.FindOne() Dim key As String For Each key In result.Properties.PropertyNames \' kazda property muze obsahovat krome sebe take kolekci více hodnot Dim propValue As Object For Each propValue In result.Properties(key) \'a tady už jen použijeme hodnoty z AD If key = "sn" Then ConvertSAMToName = Trim(propValue & " " & ConvertSAMToName) End If If key = "givenname" Then ConvertSAMToName = Trim(ConvertSAMToName & " " & propValue) End If Next Next key Catch ex As Exception Return SAMAccountName End Try End Function