Ty se navíc liší výkonem a možnostmi, takže je zkrátka asi nejlepší vědět a znát všechny - vždy mne překvapuje, jak i firma velikosti MS nedokáže dotáhnout některé věci k použitelnému stavu.
Původně nabízel Microsoft pro práci s AD ADSI, Active Directory Service Interface.
S nástupem .NET pak nabídl System.DirectoryServices, které jsou vlastně jen obálkou pro ADSI, výhodou je, že mohou pracovat vůčši jakémukoliv LDAP serveru, tedy ne jen s AD. Nevýhodou pak, že neexistují žádné typově silné objekty.
Při příchodu .NET 2.0 nabídl MS knihovnu System.DirectoryServices.Protocols. Nabízí lepší výkon, neboť to už není wrapper nad ADSI, ale použití je složitější.
Proto s .NET 3.5 představil MS další knihovnu, System.DirectoryServices.AccountManagement, která si vystačí s třemi základními objekty User, Group, Computer a pracuje jen s AD. Je ještě o trochu rychlejší než předchozí knihovna a je na ní postaven i module AcitveDirectory pro PowerShell.
Takže programátorovi v .NET se nabízí hned tři různé knihovny pro práci s AD, navíc se ty knihovny liší co do možností a výkonu.
Tady je například srovnání kódu pro ověření přihlašovacích údajů uživatele - tedy uživatelského jména a hesla:
S použitím System.DirectoryServices:
public bool IsAuthenticated(string username, string password) { const string LDAPSERVER = "dc.somedomain.somewhere"; using (DirectoryEntry root = new DirectoryEntry( "LDAP:/" + LDAPSERVER, username, password, AuthenticationTypes.Secure)) { const int ERROR_LOGON_FAILURE = -2147023570; try { object tmp = root.NativeGuid; return true; } catch (COMException exception) when (exception.ErrorCode == ERROR_LOGON_FAILURE) { return false; } } }
a tady s použitím System.DirectoryServices.Protocols:
public bool IsAuthenticated(string username, string password) { const string LDAPSERVER = "dc.somedomain.somewhere"; var directoryId = new LdapDirectoryIdentifier(LDAPSERVER, 636); var networkCredential = new System.Net.NetworkCredential(username, password); using (var ldapConnection = new LdapConnection(directoryId, networkCredential, AuthType.Basic)) { ldapConnection.AutoBind = false; ldapConnection.Timeout = new TimeSpan(0, 0, 0, 300); ldapConnection.SessionOptions.SecureSocketLayer = true; ldapConnection.SessionOptions.VerifyServerCertificate = delegate { return true; }; ldapConnection.SessionOptions.ProtocolVersion = 3; try { // Bind makes the connection and validates the credentials. // Any failure results in a LdapException being thrown. ldapConnection.Bind(); return true; } catch(LdapException) { return false; } } }
a nakonec totéž s System.DirectoryServies.AccountManagement objektů:
public static bool IsAuthenticated(string username, string password) { const string LDAPSERVER = "dc.somedomain.somewhere"; using (var context = new PrincipalContext(ContextType.Domain, LDAPSERVER)) { return context.ValidateCredentials( username, password, ContextOptions.SecureSocketLayer | ContextOptions.SimpleBind); } }
the latest updates from the Python Automationminds team. Python Automationminds lets you program in Python, in your browser. No need to install any software, just start coding straight away. There's a fully-functional web-based console and a programmer's text-editor All
OdpovědětVymazatPhyton training in Chennai
thanks for sharing this information
OdpovědětVymazataws training center in chennai
aws training in chennai
aws training institute in chennai
best angularjs training in chennai
angular js training in sholinganallur
angularjs training in chennai
azure training in chennai