Допускаются ли точки с запятой С пробелами в качестве разделитель для значения атрибута Active Directory DirectoryString?

У меня есть стороннее веб-приложение, которое выполняет запрос LDAP, чтобы определить, существует ли адрес электронной почты пользователя в AD. Запрос выглядит следующим образом:

(&(objectClass=user)(proxyAddresses=SMTP:foouser@example.co.uk)) 

Значение атрибута proxyAddresses в AD выглядит следующим образом:

X500:/o=foo/ou=foo Group (ABC123)/cn=Foo3/cn=foouser (blah)123; SIP:foouser@example.co.uk; smtp:foouser@sub1.example.co.uk; smtp:foouser@sub2.example.co.uk; SMTP:foouser@example.co.uk

Веб-приложение возвращает пустые результаты. Я вижу аналогичный результат, когда проверяю с помощью AD Explorer. Кроме того, когда я смотрю на необработанный вывод в AD Explorer, он помещает все значение атрибута в одну строку вместо того, чтобы отображать каждую запись SMTP и X500 в отдельной строке.

Все это заставляет меня думать, что значение может быть неправильно разграничено.

Когда я сравнивал атрибут с другой средой, в другой среде не было пробелов между значениями.

Например ... моя:

X500:/o=foo/ou=foo Group (ABC123)/cn=Foo3/cn=foouser (blah)123; SIP:foouser@example.co.uk; smtp:foouser@sub1.example.co.uk; smtp:foouser@sub2.example.co.uk; SMTP:foouser@example.co.uk

Другая среда:

X500:/o=foo/ou=foo Group (ABC123)/cn=Foo3/cn=foouser (blah)123;SIP:foouser@example.co.uk;smtp:foouser@sub1.example.co.uk;smtp:foouser@sub2.example.co.uk;SMTP:foouser@example.co.uk

Итак, мой вопрос:

Допускаются ли точки с запятой С пробелами в качестве разделителя для значения атрибута Active Directory DirectoryString?

1
задан 11 December 2017 в 18:50
2 ответа

С точки зрения запроса, разделитель на самом деле является всего лишь косметической опцией для представления данных. Различные инструменты будут отображать несколько значений разными способами. Убедитесь, что вы используете одну и ту же версию одного и того же инструмента в обоих окружениях.

Вкладка атрибутов в DSA.MSC использует полудвоеточия с пробелами, но откройте этот атрибут для редактирования с помощью DSA, и вы получите список с каждым атрибутом в новой строке. Некоторые другие методы можно запросить и отобразить: CSVDE сгенерирует файл, использующий полустолбцы. Get-Aduser будет использовать ", " в общем запросе, но затем использовать новые строки при расширении атрибута.

csvde -r "(samaccountname=roadRunner)" -f this.csv -l proxyaddresses
get-aduser -ldapfilter "(samaccountname=roadRunner)" -prop proxyaddresses
(get-aduser -ldapfilter "(samaccountname=roadRunner)" -prop proxyaddresses).proxyaddresses

Найден ли пользователь при выполнении того же самого запроса? get-aduser -ldapfilter "(&(objectClass=user)(proxyAddresses=SMTP:foouser@example.co.uk))"

1
ответ дан 3 December 2019 в 20:17

Я думаю, что не существует такой вещи, как разделитель или разделитель для многозначных атрибутов.

Если вы импортируете или экспортируете данные с использованием файлов ldif, формат выглядит следующим образом:

dn: dc=example,dc=com
objectClass: top
objectClass: domain
dc: example
description: This is the first description value
description: This is the second description value

И если я запрашиваю моя учетная запись с использованием стандартного инструмента dsquery. Я также получаю этот формат

dsquery * "cn=my user name,ou=whatever,dc=sub,dc=domain,dc=tld" -scope base -attr * | findstr /i 
proxyAddresses: smtp:aaa@bbb.cd
proxyAddresses: SMTP: AAA@bbbb.cccc
...

Использование ldapsearch с хоста Linux дает мне тот же формат ldif. Поэтому я предполагаю, что приложение неправильно анализирует результат фильтра, оно должно перебирать возвращенный список значений. Если это не так, то мне кажется, что в их коде есть ошибка.

Согласно msdn атрибут Proxy-Addresses не является однозначным, а его синтаксис - string unicode . Кроме того, в msdn есть небольшая запись о различиях между однозначными и многозначными атрибутами msdn , но в ней ничего не говорится о разделителях или форматах (только записи не могут быть пустыми).

1
ответ дан 3 December 2019 в 20:17

Теги

Похожие вопросы