使用LDAP的Spring安全认证

使用LDAP的Spring安全认证,ldap,spring-security,Ldap,Spring Security,我是SpringSecurity的新手,我尝试运行一个基于SpringSecurityLDAP示例的示例应用程序。下面是我对applicationContext-security.xml的配置: <http> <intercept-url pattern="/Login.jsp" filters="none"></intercept-url> <intercept-url pattern="/nnn/**" access=

我是SpringSecurity的新手,我尝试运行一个基于SpringSecurityLDAP示例的示例应用程序。下面是我对applicationContext-security.xml的配置:

<http>
        <intercept-url pattern="/Login.jsp" filters="none"></intercept-url>
        <intercept-url pattern="/nnn/**" access="ROLE_ADMIN" />
        <intercept-url pattern="/common/**" access="ROLE_USER" />
        <form-login login-page="/Login.jsp" authentication-failure-url="/Login.jsp?login_error=1"
                    default-target-url="/common/home.jsp"/>
        <logout logout-success-url="/Login.jsp" invalidate-session="true"/>
    </http>

    <authentication-manager>
        <ldap-authentication-provider group-search-filter="member={0}"
            group-search-base="ou=groups"
            user-search-base="ou=people"
            user-search-filter="uid={0}" />
            <authentication-provider ref='secondLdapProvider' />
    </authentication-manager>

    <ldap-server ldif="classpath:users.ldif"  port="33389"/>

    <b:bean id="contextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
        <b:constructor-arg value="ldap://localhost:33389/dc=springframework,dc=org"/>
    </b:bean>
有人能告诉我为什么我会出现上述错误


这是ldif文件:

dn: ou=groups,dc=google,dc=org
objectclass: top
objectclass: organizationalUnit
ou: groups

dn: ou=people,dc=google,dc=org
objectclass: top
objectclass: organizationalUnit
ou: people

dn: uid=rod,ou=people,dc=google,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Rod Johnson
sn: Johnson
uid: rod
userPassword: koala

dn: uid=dianne,ou=people,dc=google,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Dianne Emu
sn: Emu
uid: dianne
userPassword: emu

dn: uid=scott,ou=people,dc=google,dc=org
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
cn: Scott
sn: Wombat
uid: scott
userPassword: wombat

dn: cn=user,ou=groups,dc=google,dc=org
objectclass: top
objectclass: groupOfNames
cn: user
member: uid=rod,ou=people,dc=google,dc=org
member: uid=dianne,ou=people,dc=google,dc=org
member: uid=scott,ou=people,dc=google,dc=org

dn: cn=teller,ou=groups,dc=google,dc=org
objectclass: top
objectclass: groupOfNames
cn: USER
member: uid=rod,ou=people,dc=google,dc=org
member: dianne=rod,ou=people,dc=google,dc=org

dn: cn=supervisor,ou=groups,dc=google,dc=org
objectclass: top
objectclass: groupOfNames
cn: ADMIN
member: uid=rod,ou=people,dc=google,dc=org

它不是google,而是示例应用程序原始文件中的springframework。我是否缺少此…

搜索请求至少必须包含一个基本对象、一个范围和一个筛选器。查询中指定的基本对象不存在,因此搜索失败。如您所见,错误代码32是“没有这样的对象”,在本例中是基本对象。

搜索请求至少必须包含一个基本对象、一个范围和一个筛选器。查询中指定的基本对象不存在,因此搜索失败。如您所见,错误代码32是“没有这样的对象”,在本例中是基本对象。

您需要将
root
设置为所需的基本dn/后缀(dc=google,dc=org,在您的情况下)以使其工作。因此,总共有三个地方需要进行更改:

  • ldap服务器中的根目录
  • 上下文源定义
  • ldif文件
  • 默认根目录是
    dc=springframework,dc=org
    ,这就是为什么在发布的示例中不需要设置它的原因。要使用任何其他基本dn,请遵循下面的示例ldap服务器定义:

    <security:ldap-server id="dummyLdap" ldif="classpath:users.ldif" port="33389" root="dc=stackoverflow,dc=com">
    

    您需要将
    root
    设置为所需的基本dn/后缀(在您的情况下,dc=google,dc=org)以使其工作。因此,总共有三个地方需要进行更改:

  • ldap服务器中的根目录
  • 上下文源定义
  • ldif文件
  • 默认根目录是
    dc=springframework,dc=org
    ,这就是为什么在发布的示例中不需要设置它的原因。要使用任何其他基本dn,请遵循下面的示例ldap服务器定义:

    <security:ldap-server id="dummyLdap" ldif="classpath:users.ldif" port="33389" root="dc=stackoverflow,dc=com">