受权管理-LDAP-介绍与环境搭建

LDAP介绍

转自:https://blog.csdn.net/tanshizhen119/article/details/79942315java

仍是先来百度百科介绍。git

LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,通常都简称为LDAP。它是基于X.500标准的,可是简单多了而且能够根据须要定制。与X.500不一样,LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,全部与LDAP相关的RFC均可以在LDAPman RFC网页中找到。github

之前我也就听了一下公司里主要是用来存放用户的信息,而后用来作统一认证的。ldap协议是一个标准解析,因此好多开源软件都支持ldap,gerrit,gitlab,redmine,jenkins等等等,好多好多。我这个专题主要是面向开源的系统,因此ldap是一个基础。docker

先来个图:apache

PS:安装的是否我选择的是LDIF存储格式。编程

大概就是这样,存储就像一棵树同样,一级一级的,最里面的那层存储的最详细的信息。例如:windows

dc=maxcrc,dc=com—— maxcrc公司网络

ou=people——people部门数据结构

cn=devops+displayName....uid=100001+user——这个是员工的具体信息运维

dc, ou,cn, uid都有明确的定义,并且是标准的。这个咱们会在ldap schema文件里再说明一下。

网上关于ldap的文章也不少,ldap还有好多的高级用法,能够用来管理好多的数据,最基本的功能就是存储信息。

若是想要深刻学习的,能够下载这本书下来看看 《Linux+UNIX+OpenLDAP实战指南》  密码:cdjj 

感受还能够。

优势:

1. 速度快,分布式。

2. 标准协议,能够适用在不少场景,并且集成成本低。

3. 是一个很是成熟的产品,网上的资料,用法都不少,学习成本低(不过开发的可能了解的很少,偏运维应该是了解得透透的吧)

 

LDAP环境搭建

hub镜像地址: osixia/openldap

github地址:https://github.com/osixia/docker-openldap 这上面会对此docker镜像有明确的说明,包括如何运行。各类场景都有,请好好阅读。

下载docker镜像命令:docker pull osixia/openldap   

运行命令:docker run --name ldap --env LDAP_ORGANISATION="shanktech" --env LDAP_DOMAIN="shanktech.com" --env LDAP_ADMIN_PASSWORD="123456" -p 389:389 -p 636:639 --detach osixia/openldap:1.2.0

此命令咱们没有对目录进行映射,因此当docker运行结束后,产生的全部数据会丢失

若是不想用docker运行,也能够再官网上下载安装包进行安装。在windows上也是能够进行安装。

openldap for windows 下载地址 这个安装就很简单了,下一步下一步便可.

 

在osixia/openldap  docker容器里使用的是MDB格式。

运行docker run命令后ldap服务就起来了。

这边推荐一个客户端 ApacheDirectoryStudio 能够直接点击下载,基于java eclipse写的,运行起来和eclipse差很少。

 

建立LDAP链接

上图 

1. 输入ip 由于没有改端口因此使用的是默认端口。

 

2. 输入用户名和密码登陆

咱们在运行docker run命令的时候设置了环境变量。

-env LDAP_ORGANISATION="shanktech" 

--env LDAP_DOMAIN="shanktech.com" 

--env LDAP_ADMIN_PASSWORD="123456"

因此登陆LDAP的用户名和密码为 用户名:cn=admin,dc=shanktech,dc=com 密码为123456

3.插入新数据

上一波图,不过相信,不用看图你们也能够作出来。第一次接触ldap, 昨天本身摸索了很久,不过通过学习发现了本身迷茫的圆心,主要在schema, objectcalss, atrr不是很理解致使的。下面我会对进行详细的解释,由于这个在网上没有,至少我没有搜索到。

 

这样就插入了一条数据。

LDAP说明重点知识介绍

在回顾一下LDAP存储格式,是以一种树状的格式存储的。在个人理解,ldap是先定义了一个树状数据结构,在叶子节点上定义了专属的属性。这些定义是经过schema文件来体现的,咱们来举一个例子以下图:

schema文件就是放了这些定义的信息的。(ldap有高级的玩法,就是本身自定义schema文件,本身定义节点。固然这不能乱定义的,要在扩展节点上定义本身的叶子节点属性,看到这些让我想起了简单网络管理协议SNMP

接下来咱们再谈一下ObjectClass和attr的关系。

其实看这个ldap这个树状结构,属性与属性之间个独立,分散,像是一个个特征同样。Objectclass是将这些有关联关系的特征组织起来,定义成一个模板。让你去好组织数据。这个和咱们常说面向的对象编程里的class, 属性一致。ldap这里的属性与class都是标准定义的而已。下图对Objectclass大概解释了一下。

 

使用LDAP认证登陆Gerrit系统

 

 

1. 首先将Gerrit认证换成LDAP

在gerrit.config中修改配置,而后重启。

[auth]
type = LDAP
[ldap]
  server = ldap://192.168.2.189
  accountBase = dc=shanktech,dc=com
  accountPattern = (&(objectClass=person)(uid=${username}))
  accountFullName = displayName
  accountEmailAddress = mail
  username = cn=admin,dc=shanktech,dc=com

  password = 123456

以下图:

而后登陆成功

 

写的这些都是很基本的功能,先不打算深刻了,我是计划着先把全部的工具都跑一遍,而后再逐渐的深刻。

相关文章
相关标签/搜索