0
点赞
收藏
分享

微信扫一扫

【apollo】——apollo整合ldap


LDAP

LDAP概念

    LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,但是简单多了并且可以根据需要定制。
    LDAP认证是通过WSS3.0加上轻量目录LDAP协议搭建的用户认证方式,通过https加密传输,主要用于做文档管理。LDAP用户认证就是把用户数据放在LDAP服务器上,通过LDAP服务器上的数据对用户进行认证处理。

LDAP用户认证原理

1).每一个登陆,连接请求先去拉取所有的可通过用户的列表,然后去查找是否在已注册用户列表。(不推荐)
2).每一个登陆,连接请求去发送本地的用户、密码给LDAP服务器,然后在LDAP服务器上进行匹配,然后判断是否可以通过认证。(推荐)

为什么用LDAP做身份验证?

1).LDAP数据库对读操作进行优化的种数据库,在读写比例大于7比1的情况下,LDAP会体现出高的性能。
2).更灵活添加数据类型,LDAP是根据schema的内容定义各种属性之间的从属关系及匹配模式的。
例如:在传统的结构化数据库mysql中添加一个字段,就需要在用户表中添加一个字段。但是在数据量极大的时候是很耗时间的,效率低,用户体验差,但是LDAP只需要在Schema中加入新的属性,不会由于用户的属性增多而形象查询性能。
3).LDAP是个开放的标准协议,不同于一般的SQL数据库,LDAP的客户端是跨平台的,方便简洁。
4).在存储上LDAP是以树形结构存储数据,任何一个分支都可以单独在服务器中进行分布式管理,不仅有利于服务器的负载均衡,还方便做跨区域的服务器部署。
5).LDAP支持强认证方式,可以达到很高的安全级别,根据UTF-8编码。

什么是dn?

DN,Distinguished Name分辨名
LDAP中,一个条目的分辨名叫做“DN”,DN是该条目在整个树中的唯一名称标识
DN相当于关系数据库表中的关键字,是一个识别属性,通常用于检索
常见的两种DN设置
1)、基于cn(姓名)
cn=Fran Smith,ou=employees,dc=foobar,dc=com (dn格式就是这么一大串)
最常见的CN是/etc/group转来的条目
2)、基于uid(User ID)
uid=fsmith,ou=employees,dc=foobar,dc=com
最常见的UID是/etc/passwd和/etc/shadow转来的条目
Base DN (就是dc=,dc= ) 唯一限定名
LDAP目录树的最顶部就是根,也就是所谓的“Base DN"。
(假定我在名为FooBar 的电子商务公司工作,​​​这家公司在Internet上的名字是foobar.com​​​)。 BaseDN通常采用两种格式:
商务型格式——以X.500格式表示的基准DN
o=“FooBar, Inc.”, c=US
Internet型格式——以公司的Internet 域名地址表示的基准DN)、是最常用的格式
dc=foobar, dc=com

apollo整合ldap,openLDAP

解压apollo-portal-x.x.x-github.zip后,在config目录下创建application-ldap.yml,内容参考如下,相关的内容需要按照具体情况调整:

spring:
ldap:
base: "dc=example,dc=org"
username: "cn=admin,dc=example,dc=org" # 配置管理员账号,用于搜索、匹配用户(这个需要根据自身ldap进行修改)
password: "password"(上面用户对应的密码)
searchFilter: "(uid={0})" # 用户过滤器,登录的时候用这个过滤器来搜索用户
#(这个需要看ldap中用户对应的是哪个字段,例如我们公司就是cn,即用cn替代uid)
urls:
- "ldap://localhost:389" #换成自己的域名,注意要带着端口号

ldap:
mapping: # 配置 ldap 属性
objectClass: "inetOrgPerson" # ldap 用户 objectClass 配置
loginId: "uid" # ldap 用户惟一 id,用来作为登录的 id(和上面searchFilter的要一样)
userDisplayName: "cn" # ldap 用户名,用来作为显示名
email: "mail" # ldap 邮箱属性(自己配置的邮件属性值)

用户搜索配置filter
OpenLDAP开启memberOf特性后,可以配置filter从而缩小用户搜索的范围:
filter: # 配置过滤,目前只支持 memberOf

memberOf:"cn=ServiceDEV,ou=DEV,dc=example,dc=org|cn=WebDEV,ou=DEV,dc=example,dc=org" # 只允许 memberOf 属性为 ServiceDEV 和 WebDEV 的用户访问

配置完成后,修改scripts/startup.sh,指定spring.profiles.active为github,ldap,重启即可。


举报

相关推荐

0 条评论