LDAP err32 в настройках Jetty JAAS с помощью Openldap - PullRequest
0 голосов
/ 12 декабря 2018

Я пытаюсь настроить LDAP JAAS с помощью openldap.Я получил err32, который не найден ошибка объекта.

    5c10ab9e conn=1033 op=0 BIND dn="uid=joe,ou=people,dc=example,dc=org" method=128
    5c10ab9e conn=1033 op=0 BIND dn="uid=joe,ou=people,dc=example,dc=org" mech=SIMPLE ssf=0
    5c10ab9e conn=1033 op=0 RESULT tag=97 err=0 text=
    5c10ab9e conn=1033 op=1 SRCH base="ou=group,dc=example,dc=org" scope=2 deref=3 filter="(&(objectClass=groupOfNames)(member=uid=joe,ou=people,dc=example,dc=org))"
    5c10ab9e conn=1033 op=1 SRCH attr=cn
    5c10ab9e conn=1033 op=1 SEARCH RESULT tag=101 err=32 nentries=0 text=

Пожалуйста, помогите мне исправить это.

Вот мои настройки

login.conf

xyz {
   org.eclipse.jetty.jaas.spi.LdapLoginModule required
   debug="true"
   contextFactory="com.sun.jndi.ldap.LdapCtxFactory"
   hostname="localhost"
   port="389"
   bindDn="cn=admin,dc=example,dc=org"
   bindPassword="admin"
   authenticationMethod="simple"
   forceBindingLogin="true"
   userBaseDn="ou=people,dc=example,dc=org"
   userRdnAttribute="uid"
   userIdAttribute="uid"
   userPasswordAttribute="userPassword"
   userObjectClass="person"
   roleBaseDn="ou=group,dc=example,dc=org"
   roleNameAttribute="cn"
   roleMemberAttribute="member"
   roleObjectClass="groupOfNames";
};

файл пользователя и группы ldif

# People, example.org
dn: ou=people,dc=example,dc=org
ou: people
objectClass: organizationalUnit

# Groups, example.org
dn: ou=group,dc=example,dc=org
ou: group
objectClass: organizationalUnit

dn: uid=joe,ou=people,dc=example,dc=org
objectClass: person
objectClass: inetOrgPerson
uid: joe
cn: Joe Doe
sn: Doe
givenName: Joe
userPassword: joe
description: This is an example user

dn: uid=tom,ou=people,dc=example,dc=org
objectClass: person
objectClass: inetOrgPerson
uid: tom
cn: Tom Cruise
sn: Tom
givenName: Cruise
userPassword: tom
description: This is an example user

dn: cn=c3admin,ou=group,dc=example,dc=org
objectClass: groupOfNames
cn: c3admin
member: uid=joe,ou=people,dc=example,dc=org

dn: cn=c3viewer,ou=group,dc=example,dc=org
objectClass: groupOfNames
cn: c3viewer
member: uid=tom,ou=people,dc=example,dc=org

и запуск openldap в докере.

docker run -p 389:389 -p 689:689 --name my-openldap-container --detach osixia/openldap:1.2.2

этот докер создает базовые настройки и имеет admin (DN: cn = admin, dc = пример, dc = org)

Когда я пытаюсь войти в систему с идентификатором пользователя joe, пароль joe, Я получил ошибку 32.

Это журнал openldap.

5c10ab9e conn=1032 fd=13 ACCEPT from IP=172.17.0.1:36146 (IP=0.0.0.0:389)
5c10ab9e conn=1032 op=0 BIND dn="cn=admin,dc=example,dc=org" method=128
5c10ab9e conn=1032 op=0 BIND dn="cn=admin,dc=example,dc=org" mech=SIMPLE ssf=0
5c10ab9e conn=1032 op=0 RESULT tag=97 err=0 text=
5c10ab9e conn=1032 op=1 SRCH base="ou=people,dc=example,dc=org" scope=2 deref=3 filter="(&(objectClass=person)(uid=joe))"
5c10ab9e conn=1032 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=
5c10ab9e conn=1033 fd=14 ACCEPT from IP=172.17.0.1:36150 (IP=0.0.0.0:389)
5c10ab9e conn=1033 op=0 BIND dn="uid=joe,ou=people,dc=example,dc=org" method=128
5c10ab9e conn=1033 op=0 BIND dn="uid=joe,ou=people,dc=example,dc=org" mech=SIMPLE ssf=0
5c10ab9e conn=1033 op=0 RESULT tag=97 err=0 text=
5c10ab9e conn=1033 op=1 SRCH base="ou=group,dc=example,dc=org" scope=2 deref=3 filter="(&(objectClass=groupOfNames)(member=uid=joe,ou=people,dc=example,dc=org))"
5c10ab9e conn=1033 op=1 SRCH attr=cn
5c10ab9e conn=1033 op=1 SEARCH RESULT tag=101 err=32 nentries=0 text=

Это ошибка сервера Jetty.

javax.naming.NameNotFoundException: [LDAP: error code 32 - No Such Object]; remaining name 'ou=group,dc=example,dc=org'
    at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3179)
    at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:3100)
    at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2891)
    at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1846)
    at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1769)
    at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1786)
    at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:418)
    at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:396)
    at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:378)
    at javax.naming.directory.InitialDirContext.search(InitialDirContext.java:286)
    at org.eclipse.jetty.jaas.spi.LdapLoginModule.getUserRolesByDn(LdapLoginModule.java:358)
2018-12-12 01:33:02.313:WARN:oejj.JAASLoginService:qtp1359044626-13: 
javax.security.auth.login.LoginException: Error obtaining user info.
    at org.eclipse.jetty.jaas.spi.LdapLoginModule.login(LdapLoginModule.java:472)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at javax.security.auth.login.LoginContext.invoke(LoginContext.java:755)

Файл ldap.conf имеет только конфигурацию tls, как показано ниже.

# TLS certificates (needed for GnuTLS)
TLS_CACERT /container/service/slapd/assets/certs/ca.crt

TLS_REQCERT demand
...