我正在使用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
这是我春天安全的内容:
<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"
/>
对于每个角色,我有一个描述属性,其值为user-search-filter。因此,如果用户ali登录,则user-search-filter将为uid = ali,ou = users,dc = apacheLDAP。此值将被搜索到角色的描述属性中。这很好。
但是,我需要通过将角色属性插入用户架构来修改架构。因此,用户角色的检查是在使用模式中完成的。例如,如果ali具有角色1和角色2,则其用户架构将如下所示:
uid | ali
role | 1
role | 2
我应该如何修改spring-security,以便在用户模式而不是角色模式中完成对authorizaton的检查?