使用Spring Security的ldap身份验证和数据库授权

时间:2019-07-22 17:11:07

标签: spring-security

在现有应用程序中,身份验证和授权都使用数据库。现在,我必须在ldap中实现身份验证,并在数据库中实现授权。

使用的现有应用程序

public class AuthenticationFilter extends AuthenticationProcessingFilter implements HttpSessionListener {

@Override
    public Authentication attemptAuthentication(HttpServletRequest request)
            throws AuthenticationException {
. . . .
}

@SuppressWarnings("unchecked")
    @Override
    protected void onSuccessfulAuthentication(HttpServletRequest request,
            HttpServletResponse response, Authentication authResult)
            throws IOException {
....
}

@Override
    protected void onUnsuccessfulAuthentication(HttpServletRequest request,
            HttpServletResponse response, AuthenticationException failed)
            throws IOException {
. . . 
}
}

2. public class UserDetailsServiceImpl implements UserDetailsService {

      public UserDetails loadUserByUsername(String login) throws UsernameNotFoundException, DataAccessException {

. ...
}

}

我曾尝试使用以下配置对LdapAuthenticationProvider进行测试,但它总是说:凭据不良。有谁能对此提供帮助?

<bean id="contextSource"
        class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
<constructor-arg value="ldap://monkeymachine:389/dc=springframework,dc=org"/>
<property name="userDn" value="cn=manager,dc=springframework,dc=org"/>
<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=people</value></list>
    </property>
</bean>
</constructor-arg>
<constructor-arg>
<bean
    class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
    <constructor-arg ref="contextSource"/>
    <constructor-arg value="ou=groups"/>
    <property name="groupRoleAttribute" value="ou"/>
</bean>
</constructor-arg>
</bean>

0 个答案:

没有答案