嗨,我用 spring security 和 ldap 实现 j2ee。
这是我的 ldap 结构:
DIT
|
|--Root DSE
|
|--dc=apacheLDAP
| |
| |--ou=roles
| | |
| | |--role=1
| | |--role=2
| | |--role=3
| |
| |--ou=users
| | |
| | |--user=ali
| | |--user=john
| | |--user=bettyboop
|
|--ou=system
|
|uid=admin
这是我的spring security的内容:
<security:authentication-manager>
<security:ldap-authentication-provider
user-search-filter="uid={0}"
user-search-base="ou=user,dc=apacheLDAP"
group-search-filter="description={0}"
group-search-base="ou=roles,dc=apacheLDAP"
group-role-attribute="role"
role-prefix="ROLE_"
/>
</security:authentication-manager>
<security:ldap-server url="ldap://192.168.1.100:10389"
manager-dn="uid=admin,ou=system"
manager-password="secret"
/>
对于每个角色,我都有一个描述属性,该属性具有用户搜索过滤器的值。所以如果用户 ali 登录,用户搜索过滤器将是 uid=ali,ou=users,dc=apacheLDAP。该值将被搜索到角色的描述属性中。这很好用。
但是,我需要通过将角色属性插入用户模式来修改模式。所以用户角色的检查是在使用模式中完成的。例如,如果 ali 有角色 1 和角色 2,他的用户模式将如下所示:
uid | ali
role | 1
role | 2
我应该如何修改 spring-security 以便在用户模式而不是角色模式中完成授权检查?