У меня есть следующий код C # в проекте:
DirectoryEntry root = new DirectoryEntry(@"LDAP://ad.mydomain.com");
DirectorySearcher ds = new DirectorySearcher(root);
ds.DerefAlias = DereferenceAlias.Always;
ds.SearchScope = SearchScope.Subtree;
ds.Filter = "(|(name=John_Smith)(cn=John_Smith))";
SearchResultCollection src = ds.FindAll();
Я отслеживаю трафик LDAP на сервер AD с помощью MS Network Monitor и вижу это, когда происходит поиск:
Frame: Number = 1417, Captured Frame Length = 404, MediaType = ETHERNET
+ Ethernet: Etype = Internet IP (IPv4),DestinationAddress:[XXX],SourceAddress:[XXX]
+ Ipv4: Src = XXX, Dest = XXX, Next Protocol = TCP, Packet ID = 9696, Total IP Length = 390
+ Tcp: Flags=...AP..., SrcPort=1521, DstPort=LDAP(389), PayloadLen=350, Seq=3825204841 - 3825205191, Ack=1241404727, Win=16425 (scale factor 0x2) = 65700
- Ldap: Search Request, MessageID: 1, BaseObject: NULL, SearchScope: base Object, SearchAlias: neverDerefAliases
- Parser: Search Request, MessageID: 1
+ ParserHeader:
+ MessageID: 1
+ OperationHeader: Search Request, 3(0x3)
- SearchRequest: BaseDN: NULL, SearchScope: base Object, SearchAlias: neverDerefAliases
+ BaseObject: NULL
+ Scope: base Object
+ Alias: neverDerefAliases
+ SizeLimit: No Limit
+ TimeLimit: 120 seconds
+ TypesOnly: False
- Filter: (objectclass Present)
+ Operator: Present, 7(0x07)
- Length: 11
Length: 11 bytes, LengthOfLength = 0
+ PresentFilter: objectclass Present
- Attributes: ( subschemaSubentry )( dsServiceName )( namingContexts )( defaultNamingContext )( schemaNamingContext )( configurationNamingContext )( rootDomainNamingContext )( supportedControl )( supportedLDAPVersion )( supportedLDAPPolicies )( supportedSASLMec
+ AttributeSelectionHeader:
+ Attribute: subschemaSubentry
+ Attribute: dsServiceName
+ Attribute: namingContexts
+ Attribute: defaultNamingContext
+ Attribute: schemaNamingContext
+ Attribute: configurationNamingContext
+ Attribute: rootDomainNamingContext
+ Attribute: supportedControl
+ Attribute: supportedLDAPVersion
+ Attribute: supportedLDAPPolicies
+ Attribute: supportedSASLMechanisms
+ Attribute: dnsHostName
+ Attribute: ldapServiceName
+ Attribute: serverName
+ Attribute: supportedCapabilities
Похоже, что ни запрашиваемая область поиска, ни фильтр не используются в запросе. Я попытался использовать Softerra LDAP Administrator для выполнения корневого поиска в «John_Smith», и сетевой монитор показывает то, что выглядит как очень хороший LDAP-запрос с неповрежденными фильтром и областью поиска.
Чего мне не хватает?