@@ -243,6 +243,41 @@ func TestSearch_Schema(t *testing.T) {
243243 require .Len (t , res .Results , 1 )
244244 },
245245 },
246+ {
247+ name : "ldap filter objectSid using AD style" ,
248+ input : `{ "files": [ "./users.ldif" ] }` ,
249+ reader : & dynamictest.Reader {Data : map [string ]* dynamic.Config {
250+ "file:/users.ldif" : {Raw : []byte (`
251+ dn:
252+ namingContexts: dc=example_domain_name
253+ subschemaSubentry: cn=schema
254+
255+ dn: cn=schema
256+ objectClass: top
257+ objectClass: subschema
258+ attributeTypes: ( 1.2.3.4.5.6.7.8 NAME 'objectSid' DESC 'objectSid' EQUALITY activeDirectoryObjectSidMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.40 )
259+
260+ dn: cn=user1
261+ objectSid:: AQUAAAAAAAUVAAAA0gKWSdIClknSApZJ6QMAAA==
262+
263+ dn: cn=user2
264+ objectSid:: AQUAAAAAAAUVAAAAF8sUcR3r8QcekDXQw9wAAA==
265+ ` )},
266+ }},
267+ test : func (t * testing.T , h ldap.Handler , err error ) {
268+ require .NoError (t , err )
269+
270+ rr := ldaptest .NewRecorder ()
271+ h .ServeLDAP (rr , ldaptest .NewRequest (0 , & ldap.SearchRequest {
272+ Scope : ldap .ScopeWholeSubtree ,
273+ Filter : fmt .Sprintf ("(objectSid=S-1-5-21-1234567890-1234567890-1234567890-1001)" ),
274+ }))
275+ res := rr .Message .(* ldap.SearchResponse )
276+
277+ require .Len (t , res .Results , 1 )
278+ require .Equal (t , "cn=user1" , res .Results [0 ].Dn )
279+ },
280+ },
246281 }
247282
248283 t .Parallel ()
0 commit comments