1

嗨,我用 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 以便在用户模式而不是角色模式中完成授权检查?

4

0 回答 0