Получить организационную единицу из Active Directory с помощью С#

Я хочу различать два разных типа пользователей на сайте ASP.NET Web Forms, который я создаю.

Все пользователи находятся в моем AD, и я различаю их, помещая их в две разные организационные единицы, называемые: LRDB и IPPDB.

Когда я пытаюсь проверить их при входе в систему, используя этот путь LDAP:

<add name="ADConnectionString" connectionString="LDAP://test.example.com:389/DC=test,DC=com,OU=IPPDB" />

Я получаю сообщение об ошибке сервера:

Описание: Произошла ошибка при обработке файла конфигурации, необходимого для обслуживания этого запроса. Ознакомьтесь с приведенными ниже сведениями об конкретной ошибке и соответствующим образом измените файл конфигурации.

Сообщение об ошибке синтаксического анализатора: Произошла ошибка операции.

И строка, в которой у меня есть поставщик членства, выделена как источник ошибки.

<add enableSearchMethods="true" connectionStringName="ADConnectionString" name="MembershipADProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />

Однако, когда я изменяю свой путь LDAP, чтобы исключить часть OU, это «работает». Работает в том смысле, что аутентифицируется ВСЕ, кто находится в AD, а не только члены организационного подразделения.

Если я не могу избежать всей этой неразберихи, я подумал, что, может быть, МОЖНО позволить пути LDAP не иметь OU, а затем, как только он выяснит, что пользователь является частью AD, он затем проверит, какое OU это часть. Однако я не вижу свойства для OU. Вот как должен выглядеть код. Есть ли способ получить OU от пользователя?

Спасибо за помощь!

--РЕШЕНИЕ ------------------

Благодаря marc_s:

Я считаю, что это должно быть

connectionString="LDAP://test.example.com:389/OU=IPPDB,DC=test,DC=com"  

OU= сначала перед DC= частями


person Hebron George    schedule 08.08.2012    source источник
comment
Я считаю, что это должно быть connectionString="LDAP://test.example.com:389/OU=IPPDB,DC=test,DC=com" - OU сначала перед DC= частями   -  person marc_s    schedule 08.08.2012
comment
Да! Кажется, это удалось! Большое спасибо!!!!   -  person Hebron George    schedule 08.08.2012
comment
Адреса LDAP всегда строятся снизу вверх, т.е. от самого нижнего уровня в иерархии до самого верхнего (части DC= — это верхний уровень вашего домена).   -  person marc_s    schedule 08.08.2012
comment
Я понимаю. Я буду иметь это в виду впредь, спасибо!   -  person Hebron George    schedule 08.08.2012


Ответы (1)


  • ou=ippdb,dc=test,dc=com – это уникальное имя.
  • Отличительные имена создаются из последовательности относительных отличительных имен (RDN) и разделяются запятыми (,).
  • Относительные отличительные имена создаются из утверждений значений атрибутов, где левая часть утверждения представляет собой описание атрибута без опций (это означает, что cn;lang-en=Bart Simpson не является допустимым относительным отличительным именем, но cn=Bart Simpson является допустимым), а правая часть представляет собой сконструированный атрибут. в соответствии с синтаксисом описания атрибута.
  • Описание атрибута, используемое в левой части, должно иметь equality matching rule.
  • В относительном различающемся имени левая часть (описание атрибута) часто называется naming attribute.

Отличительные имена строятся таким образом, что непосредственное вышестоящее RDN находится справа от непосредственно подчиненного RDN (разделяется запятыми). В приведенном примере (предполагая, что обычное соглашение о том, что dc=test,dc=com является вышестоящим в информационном дереве каталога), ou=ippdb будет тогда непосредственно подчиненным dc=test.

person Terry Gardner    schedule 08.08.2012