none
LDAP фильтр по атрибуту distinguishedName RRS feed

  • Вопрос

  • Не получается осуществить поиск в AD или написать LDAP фильтр по distinguishedName, когда необходимо найти объект по одному контейнеру, в котором он присутствует непосредственно, либо во вложенных в данный. Проще говоря, конструкции типа (distinguishedName=*имя_OU*), которая по идее должна вернуть объекты, у которых в атрибуте distinguishedName есть заданный контейнер, совсем не возвращает результатов. Видимо дело в том, что тип атрибута не строковый, а DN. Та же ситуация с другими атрибутами типа DN. Собственно, вопрос: как осуществлять поиск и писать фильтры для этих атрибутов?

    П.С. Прошу прощение за дублирование вопроса в другой ветке форума, очень нужно...
    13 августа 2007 г. 6:58

Ответы

  • Вопрос снимается:

    Regarding match algorithms of LDAP filters, LDAP directory systems comply with the specifications of the original X.500 standards. According to these matching rules you can't use wildcards in LDAP filters for attributes contaning LDAP distinguished names (attributes with DN-string syntax / ADSI attribute data type ADSTYPE_DN_STRING = 1). The same applies for ADS: Filters in which DN attributes are searched with wildcards do not work.

     

    This can be quite irritating. You can't e.g. search for all users that are members in groups that contain a certain string in their group names. The reason for this is that the user attribute memberOf has the data type DN-string.

     

    Even more important could be the search for objects in a specific OU. Especially, when only the declaration of a pure filter string is allowed and when there is no possibility to specify the search base of a LDAP search. This might well be so e.g. for the definition of recipient policies in Microsoft Exchange environments. Thus, the following filter won't work!

     

       (distinguishedName=*,ou=Sydney,dc=cerrotorre,dc=org)

    14 августа 2007 г. 11:42

Все ответы

  • Вопрос снимается:

    Regarding match algorithms of LDAP filters, LDAP directory systems comply with the specifications of the original X.500 standards. According to these matching rules you can't use wildcards in LDAP filters for attributes contaning LDAP distinguished names (attributes with DN-string syntax / ADSI attribute data type ADSTYPE_DN_STRING = 1). The same applies for ADS: Filters in which DN attributes are searched with wildcards do not work.

     

    This can be quite irritating. You can't e.g. search for all users that are members in groups that contain a certain string in their group names. The reason for this is that the user attribute memberOf has the data type DN-string.

     

    Even more important could be the search for objects in a specific OU. Especially, when only the declaration of a pure filter string is allowed and when there is no possibility to specify the search base of a LDAP search. This might well be so e.g. for the definition of recipient policies in Microsoft Exchange environments. Thus, the following filter won't work!

     

       (distinguishedName=*,ou=Sydney,dc=cerrotorre,dc=org)

    14 августа 2007 г. 11:42
  •  

    Дублирую из http://www.msforum.ru/ShowPost.aspx?PostID=30950

    Попробуете такой фильтр: найти все OU с именами начинающимся с ОТДЕЛ

     

    (&(ou>="")(name=ОТДЕЛ*))

     

    (Сгенерировано в Exchange 2003)

    16 августа 2007 г. 7:40
    Модератор
  •  

    Очень неплохое руководство по поиску в AD:

    http://www.rlmueller.net/ADOSearchTips.htm

    24 октября 2007 г. 9:06
  • //JScript

    var objConnection = WScript.CreateObject("ADODB.Connection");       

    var objCommand = WScript.CreateObject("ADODB.Command");         

    objConnection.Provider = "ADsDSOObject";
    objConnection.Open("Active Directory Provider");
    objCommand.ActiveConnection = objConnection;
    objCommand.CommandText = "SELECT distinguishedName from 'LDAP://DC=domain,DC=com' Where objectClass='computer'";

     

    var objRS = objCommand.Execute;

     

    objRS.MoveFirst;

    while(!objRS.EOF)

    WScript.Echo(objRS.Fields("distinguishedName").Value);

    objRS.MoveNext;

     

     

    }

    27 октября 2007 г. 5:49