zoukankan      html  css  js  c++  java
  • spring security LDAP获取用户信息

    很多企业内部使用LDAP保存用户信息,这章我们来看一下如何从LDAP中获取Spring Security所需的用户信息。

    首先在pom.xml中添加ldap所需的依赖。

    <dependency>
      <groupId>org.apache.directory.server</groupId>
      <artifactId>apacheds-server-jndi</artifactId>
      <version>1.5.5</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.ldap</groupId>
      <artifactId>spring-ldap</artifactId>
      <version>1.2.1</version>
    </dependency>
        

    然后修改配置文件,使用内嵌的ldap服务器和ldap-authentication-provider。

    <ldap-server ldif="classpath:users.ldif" port="33389" root="dc=family168,dc=com"/>
    
    <ldap-authentication-provider
        group-search-filter="member={0}"
        group-search-base="ou=groups"
        user-search-base="ou=people"
        user-search-filter="uid={0}"
    />
        

    这里配置内嵌的ldap服务器从users.ldif文件中读取初始化数据,端口使用33389,查询目录的根目录设置为dc=family168,dc=com。

    ldap-authentication-provider设置查找组和用户的配置,分别使用ou=groups表示组,使用ou=people表示用户。

    用于保存ldap初始信息的文件内容如下:

    dn: ou=groups,dc=family168,dc=com
    objectclass: top
    objectclass: organizationalUnit
    ou: groups
    
    dn: ou=people,dc=family168,dc=com
    objectclass: top
    objectclass: organizationalUnit
    ou: people
    
    dn: uid=user,ou=people,dc=family168,dc=com
    objectclass: top
    objectclass: person
    objectclass: organizationalPerson
    objectclass: inetOrgPerson
    cn: FirstName LastName
    sn: LastName
    uid: user
    userPassword: user
    
    dn: uid=admin,ou=people,dc=family168,dc=com
    objectclass: top
    objectclass: person
    objectclass: organizationalPerson
    objectclass: inetOrgPerson
    cn: FirstName LastName
    sn: LastName
    uid: admin
    userPassword: admin
    
    dn: cn=user,ou=groups,dc=family168,dc=com
    objectclass: top
    objectclass: groupOfNames
    cn: ROLE_USER
    member: uid=user,ou=people,dc=family168,dc=com
    member: uid=admin,ou=people,dc=family168,dc=com
    
    dn: cn=admin,ou=groups,dc=family168,dc=com
    objectclass: top
    objectclass: groupOfNames
    cn: ROLE_ADMIN
    member: uid=admin,ou=people,dc=family168,dc=com
        

    这里在dc=family168,dc=com目录下创建了groups和people两个目录,然后在people目录下创建了user和admin两个用户。在groups目录下创建了admin和user两个目录,并将user和admin两个用户与groups的user目录关联,又将admin用户与groups的admin目录关联。

    在系统初始化后,Spring Security会在people下读取用户信息,而对应的权限信息是对应用户所关联的groups信息,Spring Security会将查询到的权限信息加上ROLE_前缀,如cn=admin最终会转换为ROLE_ADMIN。

  • 相关阅读:
    Asp.net分页控件AspNetPager的使用(DataList和Reapter结合Linq的编辑与删除)
    Zend Framework使用Extjs进行数据库交互和分页
    课程设计之(struts2+Hibernate)航空订票系统
    课程设计之(ZendFrameWrok)构建的航空订票系统网站
    Ubuntu10.10 Zend FrameWork配置及helloworld显示
    ExtJs、Struts2、Hibernate3.2登录页面的简单实现
    Asp.net的FileUpload控件的文件上传与Extjs文件上传的简单Demo
    学习linux的一些网络资源
    100条超搞笑的“雷人”QQ/MSN 签名
    超难的75道逻辑思维题
  • 原文地址:https://www.cnblogs.com/wenjieyatou/p/6118714.html
Copyright © 2011-2022 走看看