Аутентификация через LdapExtLoginModule в лесу Active Directory (LDAP_REFERRAL)

Есть ли способ аутентификации в лесе Active Directory с помощью любого из модулей входа Ldap или любого другого специального модуля?

имея следующую конфигурацию в standalone.xml:

    <module-option name="java.naming.provider.url" value="ldap://ad.company.tld:389"/ >
    <module-option name="baseCtxDN" value="OU=DE,OU=Users,OU=Accounts,OU=US,OU=Hosting,DC=ad00,DC=company,DC=tld"/ >
    <module-option name="baseFilter" value="(CN={0})"/ >
    <module-option name="rolesCtxDN" value="OU=Groups,OU=Accounts,OU=US,OU=Hosting,DC=ad00,DC=company,DC=tld"/ >
    <module-option name="roleFilter" value="(member={1})"/>
    <module-option name="roleAttributeID" value="CN"/ >
    <module-option name="searchScope" value="SUBTREE_SCOPE"/>

на wildfly 8 я получаю javax.naming.NameNotFoundException с полной трассировкой стека, указывающей на LdapCtx.java:3112, которая выглядит следующим образом:

case LdapClient.LDAP_REFERRAL:
    e = new NamingException(message);
    break;

Таким образом, Исключение связано с ошибкой направления, и похоже, что модуль LDAP не может следовать управлению направлением. Более того, я нашел

на http://docs.oracle.com/javase/jndi/tutorial/ldap/referral/jndi.html Примечание (внизу):

Windows Active Directory: поскольку Active Directory не поддерживает элемент управления «Управление ссылками», ни один из примеров в этом уроке не будет работать с Active Directory.

поэтому я предполагаю, что у LdapExtLoginModule нет шансов на успех, если он полагается на JNDI, предоставляемый Java.


person levus.lazarus    schedule 09.09.2014    source источник


Ответы (1)


Были некоторые проблемы с обработкой рефералов в WildFly. Они уже зафиксированы в кодовой базе. После выпуска новой версии в потоке 9.x она должна работать на вас.

В JBoss EAP 6.3 и 6.2.4 проблемы уже устранены.

Конфигурация, которая обрабатывает (т.е. следует) рефералы, может выглядеть так:

<security-domain name="ldap-authn" cache-type="default">
  <authentication>
    <login-module code="LdapExtended" flag="required">
      <module-option name="java.naming.provider.url" value="ldap://test-ldap.jboss.example:389/"/>
      <module-option name="java.naming.factory.initial" value="com.sun.jndi.ldap.LdapCtxFactory"/>
      <module-option name="java.naming.security.authentication" value="simple"/>
      <module-option name="bindDN" value="cn=Directory Manager"/>
      <module-option name="bindCredential" value="****"/>
      <module-option name="baseCtxDN" value="dc=example,dc=com"/>
      <module-option name="baseFilter" value="(uid={0})"/>
      <module-option name="rolesCtxDN" value="dc=example,dc=com"/>
      <module-option name="roleFilter" value="(uniqueMember={1})"/>
      <module-option name="roleAttributeID" value="cn"/>
      <module-option name="roleNameAttributeID" value="cn"/>
      <module-option name="roleRecursion" value="0"/>
      <module-option name="throwValidateError" value="true"/>
      <module-option name="java.naming.referral" value="follow"/>
      <module-option name="referralUserAttributeIDToCheck" value="uniqueMember"/>
    </login-module>
  </authentication>
</security-domain>
person kwart    schedule 11.09.2014