简介
我们即将开始一个个的搭建我们的协作平台, 实际上这些平台是随着我们团队不断发展, 相继引入的. 当起第三个平台搭建起来的时候, 一个严峻的问题出现了: 每个平台都有一套账号系统, 每人都要为每个平台记下不同的账户密码, 新人加入管理员要重复三遍创建账号的操作. 这是完全无法接受. 建立一个集中认证系统迫在眉睫, 经过比较 最终选择 OpenLDAP.
回头再看, 如果你打算搭建一系列的需要工具/平台, 集中认证服务是无法绕过的一项工作, 最好在一开始就做, 还可以避免后面迁移用户的麻烦, 所以这里我在最开始就介绍 LDAP.
LDAP 全称是轻量级目录访问协议(Lightweight Directory Access Protocol), 被设计为以中心化分层次的目录和文件的形式管理和访问相关信息.
它可以存储组织任何类型的信息, 在这里我们使用它最常见的用途, 集中式认证. OpenLDAP 是 LDAP 的开源实现, 下面是在 Ubuntu 14.04 上安装的过程.
安装 OpenLDAP
OpenLDAP 包含的 Ubuntu 的默认仓库, 包的名字是 sldap, 同时我们还需要一些工具 ldap-utils
sudo apt-get update
sudo apt-get install sldap ldap-utils
安装过程中, 会让你设定 LDAP 的管理员密码.
配置 sldap
这个过程可以使用交互输入的形式配置很多关键信息, 你会被问到一系列问题:
-
Omit OpenLDAP server configuration? No
-
DNS domain name:
- 这个选项会决定你的目录路径的根结构, 阅读提示信息理解它是如何实现的.
- 这其实是一个开放选项, 不过最好使用你或者团队所拥有的域名.
- 本文使用 example.com 作为样例.
-
Organization name:
- 组织名称, 依然取决于你自己的决定.
- 本次使用 example 为例.
-
Administrator password:
- 安装时候设置的管理员密码, 此时也可以更改这个密码.
-
Database backend to use?
- 后台使用的数据库, 作为样例或者轻量使用选择集成的 HDB 就足够了.
- 如果需要使用其他数据库, 阅读此文: The SQL backend How do I setup/configure back-sql?
-
Remove the database when slapd is purged? No
-
Move old database? Yes
-
Allow LDAPv2 protocol? No
这时 LDAP 就应该能够正常运行了.
安装 LDAP 的 Web 管理界面 phpLDAPadmin
ldap-utils 提供了一些命令行工具管理 openLDAP, 但是大多数人应该还是更习惯图形界面操作, 我们选择 phpLDAPadmin 作为 openLDAP 的 web 管理图形界面.
phpLDAPadmin 也包含在 Ubuntu 的默认仓库里.
sudo apt-get install phpldapadmin
一行命令就会安装好 phpLDAPadmin 以及依赖, 并且配置好 apache.
配置 phpLDAPadmin
安装好后, 我们需要做一些配置, 让 phpLDAPadmin 能够正确连接 openLDAP.
编辑配置文件
sudo vi /etc/phpldapadmin/config.php
在这个配置文件里, 写入 LDAP 服务的详细信息
$servers->setValue('server','host','server_domain_name_or_IP');
接下来需要配置 LDAP 服务的域名, 我们之前选择的是 example.com
, 这里的值就是 "dc=example, dc=com
$servers->setValue('server','base',array('dc=example,dc=com'));
接着修改管理员登陆的 bind_id 参数, cn=admin 已经是对的了, 只需修改 dc 即可.
$servers->setValue('login','bind_id','cn=admin,dc=example,dc=com');
最后隐藏模板的警告:
$config->custom->appearance['hide_template_warning'] = true;
保存退出
登陆 phpLDAPadmin web 接口
访问页面
http://domain_name_or_IP_address/phpldapadmin
可以看到这个界面

点击左侧列表 "Login" 连接, 使用管理员账户登陆.


添加组织、组和用户
LDAP 非常灵活, 可以使用多种不同的方式创建关系和结构, 下面我们针对信息创建一些基础结构, 然后用再用信息信息填充它们.
创建组织
点击左侧的 "Create new entry here".

选择 "Generic: Organizational Unit" 模板. 命名为 "groups"

确认改动

左侧可以看到成功创建 "groups"

重复以上过程, 创建 "users" 组织.
创建组
创建三个不同的组, 'admin' 'irc' 'user' 并赋予不同的权限. 点击 "groups" 选择创建子条目

选择 "Generic: Posix Group"

命名为 "admin"

重复以上步骤, 再创建 "irc" 和 "user" 组.

创建用户
接下来创建用户, 并指定到组里. 点击 "ou=users" 开始.
选择 "Generic: User Account"

填写以下内容

需要注意的是, Common Name 必须是唯一的, 建议使用用户名替代自动生成的 FistName LastName 结构的 CN.
点击创建按钮并确认.
添加用户到组
一个用户可以添加到多个组里. 选中之前创建的组, 点击 "Add new attribute":

选择 'memblerUid'

输入要添加的 Uid

然后可以通过 "modify group members" 添加更多用户.

总结
现在 LDAP 已经完美运行, 并且已经创建好一些分组和用户, 可以集成到其它服务里了.
网友评论