Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1571353
  • 博文数量: 157
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4116
  • 用 户 组: 普通用户
  • 注册时间: 2013-06-14 18:26
文章分类

全部博文(157)

文章存档

2014年(67)

2013年(90)

分类: 网络与安全

2014-02-24 17:33:26

一、前言

LDAP:轻型目录访问协议,即Lightweight Directory Access Protocol (LDAP)是一个访问在线目录服务的协议,最典型例子的就是黄页、电话簿等,主要用于读极多并且写极少的场景。


LDAP服务器:

    OpenLDAP:官网-- , 有丰富LDAP相关文档。

    ADS:官网--,支持eclipse插件方式安装,提供LDAP开发的各种工具。


二、Spring配置

    ldap-server:


    目标LDAP配置,即协议、IP、端口、用户名、密码等,如:
    1
        
   


    Spring支持内嵌的LDAP测试服务器配置,ADS有提供相关的jar,内嵌LDAP服务器只需要指定root和ldif文件即可,不需要协议IP端口等配置,ldif文件可以使用ADS开发工具编辑,如:
    1
        
   


    ldap-authentication-provider:

    用户认证授权相关配置,主要是用户配置用户组合用户过滤规则,方便快速从LDAP服务器定位到用户信息,如:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        
   
                                        user-search-filter="(uid={0})"
                        user-search-base="ou=users"
                        group-search-filter="(uniqueMember={0})"
                        group-search-base="ou=groups"
                        group-role-attribute="cn"
                        role-prefix="ROLE_">
               
       


    wKioL1MK57KiW7jkAADS-65MRbs628.jpg


user-dn-pattern: 用户dn过滤规则,如user-dn-pattern="uid={0},ou=people", uid={0}表示过滤uid属性

user-search-base: 指定从哪个分支开始查找用户,如user-search-base="ou=people",默认从root开始

user-search-filter: 用户过滤规则,如user-search-filter="(uid={0})" ,与user-dn-pattern类似,使用一个即可

group-search-base: 指定从哪个分支开始查找用户用户组,如group-search-base="ou=groups"

group-search-filter: 用户组过滤规则,如group-search-filter="(uniqueMember={0})"表示使用uniqueMember属性过滤

group-role-attribute: 用户组中Role映射属性,默认为cn,验证时会自动增加role前缀

role-prefix : role前缀, 默认为"ROLE_",即role-prefix="ROLE_"


通过以上基本的配置即可支持LDAP认证授权。


三、高级配置

Spring强大的功能之一就是在提供简便配置的同时支持自己定制,而定制最基础的就是bean配置,通过替换bean的实现可以替换掉spring原先提供的默认实现。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    
        class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
 
 
 

    class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
 
  
    
    
       uid={0},ou=people
    

  

 

 
        class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
    
    
    
  

 

    class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
 
 
 



Spring已经提供对LDAP认证的强大支持,一般情况下不需要自己定制。
阅读(2785) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~