繁体   English   中英

Spring LDAP 3.1自定义用户映射器

[英]Spring LDAP 3.1 Custom User Mapper

我正在使用Spring Security和Spring LDAP开发应用程序。 这是我的spring-security.xml的一部分:

<authentication-manager alias="authenticationManager">
    <ldap-authentication-provider
            user-search-filter="sAMAccountName={0}"
            user-search-base="OU=UK,OU=Domain Objects,dc=test,dc=test1"
            group-search-filter="member={0}"
            group-search-base="OU=_Groups,OU=UK,OU=Domain Objects,dc=test,dc=test1"
            group-role-attribute="cn"
            role-prefix="ROLE_">
    </ldap-authentication-provider>
</authentication-manager>

<ldap-server url="ldap://host:389/"
                      manager-dn="managerUser"
                      manager-password="ManagerPassword" />

现在,我需要对用户属性进行一些逻辑处理。 我想知道是否有一种方法可以在登录阶段获取该属性,或者每次需要该属性时都需要在LDAP上进行搜索。

现在看网上,我有点困惑,因为我在网上找到了许多获取自定义属性的方法:在DAO或AbstractContextMapper中扩展ContextMapper或扩展LdapUserDetailsMapper。

您能帮我找到正确的解决方案吗? 我认为最好的方法是拥有一个可以在登录阶段放置所需属性的对象,而不是每次需要该属性时都查询LDAP。 谢谢

我不确定您要问的是什么。 我可以告诉您的是,一旦您通过LDAP spring安全性进行了身份验证,便会缓存用户详细信息,因此您无需在每个后续请求中都调用LDAP。

这意味着在用户登录后调用的任何后续方法都可以获取用户详细信息,如下所示:

Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
UserDetails ldapUser = (UserDetails) authentication.getPrincipal();

或者,如果您愿意,可以将其转换为您创建的自定义类,只要实现UserDetails。

public class MyUser implements UserDetails {
.....
}

这有帮助吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM