spring-security Spring安全性+ Ldap,无法调试

6mzjoqzu  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(223)

我正在尝试学习LDAP + Spring安全。我已经用Apache DS设置了一个本地Dev。
我已经到了这样的地步,它将编译和运行没有错误,但当我试图登录它不做任何事情,我没有任何错误消息去。我甚至不能告诉如果DS是得到的请求。

如果有人对调试此问题有建议或能看到问题,那就太好了。

JSP:

<form action="/j_spring_security_check.action" method="POST">
    <span><label for="username">User Name:</label>
    <input id="username" name="j_username" type="text"/></span>
    <span><label for="password">Password:</label>
    <input id="password" name="j_password" type="password"/></span>
    <span><input type="submit" value="Log In"/></span>
</form>

应用程序上下文:

<bean id="contextSource"
          class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
        <constructor-arg value="ldap://localhost:389/dc=example,dc=com"/>
        <property name="userDn" value="cn=system,dc=example,dc=com"/>
        <property name="password" value="password"/>
    </bean>

    <bean id="ldapAuthProvider"
          class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
        <constructor-arg>
            <bean class="org.springframework.security.ldap.authentication.BindAuthenticator">
                <constructor-arg ref="contextSource"/>
                <property name="userDnPatterns"><list><value>uid={0},ou=system</value></list></property>
            </bean>
        </constructor-arg>
        <constructor-arg>
            <bean class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
                <constructor-arg ref="contextSource"/>
                <constructor-arg value="ou=system"/>
                <property name="groupRoleAttribute" value="ou"/>
                <property name="defaultRole" value="ROLE_ADMIN"/>
            </bean>
        </constructor-arg>

    </bean>

spring security :

<http auto-config="true" use-expressions="true">
        <intercept-url pattern="/noSecurityJSP/**" access="permitAll()"/>
        <intercept-url pattern="/login*" access="permitAll()"/>
        <intercept-url pattern="/resources/**" access="permitAll()"/>
        <intercept-url pattern="/**" access="isAuthenticated()"/>

        <form-login
                login-page="/login.htm"
                login-processing-url="/j_spring_security_check.action"
                authentication-failure-url="/splash_page.htm?error=true"
                default-target-url="/welcomePage.htm"
                always-use-default-target="true"/>
    </http>

    <authentication-manager>
        <authentication-provider ref='ldapAuthProvider'/>
    </authentication-manager>

Spring Maven依赖项:

<dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>3.2.0.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>3.2.0.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>3.2.0.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-ldap</artifactId>
            <version>3.0.3.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.ldap</groupId>
            <artifactId>spring-ldap-core</artifactId>
            <version>1.3.2.RELEASE</version>

LDAP

的图片

sczxawaw

sczxawaw1#

您的问题似乎是“我如何调试这个”,理想情况下,您应该提供更多关于“它什么都不做”的信息,但是对于调试,SpringSecurity的标准调试输出应该告诉您发生了什么,和ApacheDS还应该指示它是否接收到请求。(如果需要,您可以将其更改为DEBUG级别)。事实上,修改该示例以与您的目录结构一起工作可能是一个好主意,首先确保您可以按原样运行它。
我总是建议在尝试部署应用程序之前为类似的内容编写一个测试类-请参见常见问题解答中的示例-您可以在IDE中调试它。
如果你真的想知道发送到目录的是什么,你可以直接使用tcpdump这样的实用程序来监控网络流量。

sudo tcpdump -A -i lo0 tcp port 389

会将到端口389的TCP通信记录到控制台。
您的构建配置有一个问题,那就是spring-security-ldap依赖项的版本与其他spring安全jar不同。它们应该都是相同的。使用maven属性来防止类似的错误,并检查您的类路径(lib目录)以确保您没有任何重复的jar或不一致的版本。

相关问题