У нас такой дизайн, когда SID отсканирован и синхронизирован с локальным LDAP AD Azure v3.возвращается как часть токена JWT.Мне нужно найти пользователя в локальном LDAP для авторизации.Идентификатор безопасности выпускается в хорошо известной сериализованной форме, поддерживаемой инструментами Microsoft, используемыми для начальной синхронизации.Вот среда LDAP:
"java.naming.provider.url" -> "ldap://AD2012.local:389"
"java.naming.factory.initial" -> "com.sun.jndi.ldap.LdapCtxFactory"
"com.sun.jndi.ldap.connect.timeout" -> "0"
"java.naming.security.principal" -> "CN=Administrator,CN=Users,DC=AD2012,DC=local"
"java.naming.security.authentication" -> "simple"
"java.naming.security.credentials" -> "Password1"
"java.naming.referral" -> "follow"
Обратите внимание на последнюю, так как я считаю ее важной.
В моем тесте я сначала запустил поиск, чтобы получить пользователя, используя следующую строку:
(&(|(objectClass=User)(objectClass=userProxy))(cn=Administrator*))
Он работает нормально и позволяет мне получить SID для этого пользователя, который после преобразования строки выглядит как
S-1-5-21-1061109567-1712144220-1378238271-319
Но когда я создаю вторую строку поиска:
(&(|(objectClass=User)(objectClass=userProxy))(objectSid=S-1-5-21-1061109567-1712144220-1378238271-319))
результат поиска пуст.Однако есть подсказка: изучение объекта результата с помощью отладчика показывает, что у него есть следующие свойства:
refEx.handleReferrals = 1
refEx.nextReferralEx = LdapReferralException: Continuation Reference ...
refEx.nextReferals.referrals[0] = ldap://DomainDnsZones.AD2012.local/DC=DomainDnsZones,DC=AD2012,DC=local
Вот вопрос: почему сервер не следует за ссылками во втором - по SID -поиск?Я знаю, что это происходит в первую очередь, так как поиск завершается неудачей, если я удаляю свойство среды follow.Любой вклад приветствуется.