gpt4 book ai didi

java - Spring Security 自定义 ldap 身份验证提供程序

转载 作者:搜寻专家 更新时间:2023-10-31 19:31:26 25 4
gpt4 key购买 nike

我目前的 ldap 身份验证上下文设置如下:

    <ldap-server url="ldap://host/dn"
manager-dn="cn=someuser"
manager-password="somepass" />
<authentication-manager>
<ldap-authentication-provider user-search-filter="(samaccountname={0})"/>
</authentication-manager>

现在,我需要能够设置自定义权限映射器(它使用不同的 ldap 服务器)- 所以我假设我需要设置类似于 ( http://static.springsource.org/spring-security/site/docs/2.0.x/reference/ldap.html) 的 ldap 服务器:

<bean id="ldapAuthProvider"
class="org.springframework.security.providers.ldap.LdapAuthenticationProvider">
<constructor-arg>
<bean class="org.springframework.security.providers.ldap.authenticator.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.populator.DefaultLdapAuthoritiesPopulator">
<constructor-arg ref="contextSource"/>
<constructor-arg value="ou=groups"/>
<property name="groupRoleAttribute" value="ou"/>
</bean>
</constructor-arg>
</bean>

但是,我如何在安全上下文中将“ldapAuthProvider”引用到 ldap-server?

我也在用spring-security 3,所以''不存在...

最佳答案

我所做的只是将其添加到安全上下文中:

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

然后,像这样配置“ldapAuthProvider”bean:

<bean id="contextSource"
class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
<constructor-arg value="ldaps://url/dc=mock,dc=com" />
<property name="userDn" value="cn=username,ou=People,dc=mock,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=People</value>
</list>
</property>
</bean>
</constructor-arg>
<constructor-arg>
<bean
class="com.mock.MyCustomAuthoritiesPopulator">
</bean>
</constructor-arg>
</bean>

MyCustomAuthoritiesPopulator 的实现如下:

public class MyCustomAuthoritiesPopulator implements LdapAuthoritiesPopulator {
public Collection<GrantedAuthority> getGrantedAuthorities(
DirContextOperations arg0, String arg1) {
ArrayList<GrantedAuthority> list = new ArrayList<GrantedAuthority>();
list.add((new SimpleGrantedAuthority("ROLE_USER"));
return list;
}
}

关于java - Spring Security 自定义 ldap 身份验证提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2671295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com