Что происходит за кулисами, когда мы создаем экземпляр System.DirectoryServices.DirectoryEntry? - PullRequest
0 голосов
/ 16 июля 2009

Можете ли вы рассказать, что происходит за кулисами при создании экземпляра DirectoryEntry?

Фрагмент кода:

var dirEntry = new DirectoryEntry("LDAP://CN=jsmith,DC=fabrikam,DC=Com", userName, password);

Я имею в виду, как работает аутентификация? Кто с кем разговаривает? Предположим, что приведенный выше код находится в консольном приложении.

Ответы [ 2 ]

1 голос
/ 16 июля 2009

Создание DirectoryEntry не намного больше, чем создание объекта в памяти. Объект DirectoryEntry на самом деле представляет собой просто управляемую оболочку вокруг базового IADsObject неуправляемого интерфейса на основе COM ADSI (Active Directory Service Interfaces) с Active Directory (который вы могли бы - если действительно хотели - использовать напрямую, тоже).

Только когда вы начнете использовать его свойства или когда вы получите доступ к базовому .NativeObject COM-объекту, он действительно подключится к Active Directory, войдет в систему с вашими текущими учетными данными (или любыми альтернативными учетными данными, которые вы указали) и попытается получить их. информация для этого DirectoryEntry из AD.

Марк

0 голосов
/ 16 июля 2009

Из того, что я вижу, используя Reflector, он использует activds.dll

Например:

[DllImport("activeds.dll", EntryPoint="ADsOpenObject", CharSet=CharSet.Unicode, ExactSpelling=true)]
private static extern int IntADsOpenObject(string path, string userName, string password, int flags, [In, Out] ref Guid iid, [MarshalAs(UnmanagedType.Interface)] out object ppObject);

http://msdn.microsoft.com/en-us/library/aa772238(VS.85).aspx

...