你好,游客 登录 注册 搜索
背景:
阅读新闻

Spring Security 学习之LDAP认证

[日期:2014-02-28] 来源:Linux社区  作者:stevex [字体: ]

一、前言

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

LDAP服务器:
OpenLDAP:官网--http://www.openldap.org/  , 有丰富LDAP相关文档。

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

二、Spring配置
ldap-server:

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

<security:ldap-server url="ldap://localhost:10389/o=apple" manager-dn="uid=admin,ou=system" manager-password="secret" />

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

<security:ldap-server root="o=apple" ldif="classpath:apple.ldif"/>

ldap-authentication-provider:

用户认证授权相关配置,主要是用户配置用户组合用户过滤规则,方便快速从LDAP服务器定位到用户信息,如:

<security:authentication-manager>
            <security:ldap-authentication-provider
                    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_">
            </security:ldap-authentication-provider>
    </security:authentication-manager>

Spring Security 学习之LDAP认证

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原先提供的默认实现。
<bean id="contextSource"
        class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
  <constructor-arg value="ldap://monkeymachine:389/dc=springframework,dc=org"/>
  <property name="userDn" value="cn=manager,dc=springframework,dc=org"/>
  <property name="password" value="password"/>
</bean>
<bean id="ldapAuthProvider"
    class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
 <constructor-arg>
  <bean class="org.springframework.security.ldap.authentication.BindAuthenticator">
    <constructor-arg ref="contextSource"/>
    <property name="userDnPatterns">
      <list><value>uid={0},ou=people</value></list>
    </property>
  </bean>
 </constructor-arg>
 <constructor-arg>
  <bean
    class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
    <constructor-arg ref="contextSource"/>
    <constructor-arg value="ou=groups"/>
    <property name="groupRoleAttribute" value="ou"/>
  </bean>
 </constructor-arg>
</bean>
<bean id="userSearch"
    class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
  <constructor-arg index="0" value=""/>
  <constructor-arg index="1" value="(uid={0})"/>
  <constructor-arg index="2" ref="contextSource" />
</bean>

Spring已经提供对LDAP认证的强大支持,一般情况下不需要自己定制。

Spring Security 学习之LDAP认证相关文件下载

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2014年资料/2月/28日/Spring Security 学习之LDAP认证

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款