慢慢地折腾的东西多了,发现帐号管理是个大问题。Gitlab,Blog,Wiki,Sentry,ownCloud……每个系统都是独立的用户,管理起来相当麻烦。久闻LDAP用户认证,今日得以一试,记之。

LDAP,Lightweight Directory Access Protocol,是一个轻量型目录访问协议。LDAP的一个常用使用方法是单点登录,用户可以在多个服务中使用同一个密码。在这里,我们将以OpenLDAP为例,在Ubuntu上进行安装配置,同时安装 phpLDAPadmin 来提供一个简单的web接口。

安装

Default

$ sudo apt-get update

# 安装过程中会要求输入一些信息,可以随意填写,后续我们将再进行重新配置

$ sudo apt-get install slapd ldap-utils

1

2

3$sudoapt-getupdate

# 安装过程中会要求输入一些信息,可以随意填写,后续我们将再进行重新配置

$sudoapt-getinstallslapdldap-utils

配置 slapd:

Default

$ sudo dpkg-reconfigure slapd

1$sudodpkg-reconfigureslapd

Omit OpenLDAP server configuration? No

DNS domain name?这个选项会决定目录的基本结构,如果没有自己的域名,也可以随便填写一个;

这里,我们以 test.com 为例

Organization name?随意填写,我们以 example 为例

Administrator password?管理员密码,安装的时候已经随意填写了一个,这次我们需要认真填写一个了;

数据库后端? HDB

Remove the database when slapd is purged? No

Move old database? Yes

Allow LDAPv2 protocol? No

接下来安装phpLDAPadmin,方便我们通过浏览器直接管理LDAP:

Default

$ sudo apt-get install phpldapadmin

1$sudoapt-getinstallphpldapadmin

配置

phpLDAPadmin

修改phpLDAPadmin配置文件,/etc/phpldapadmin/config.php:

Default

# LDAP 服务器IP或者域名

$servers->setValue('server','host','127.0.0.1');

# 修改基本的目录结构

$servers->setValue('server','base',array('dc=test,dc=com'));

# 修改登陆用户

$servers->setValue('login','bind_id','cn=admin,dc=test,dc=com');

# 隐藏警告信息,因为这些信息大多数没用

$config->custom->appearance['hide_template_warning'] = true;

# 限制匿名登陆

$servers->setValue('login','anon_bind', false);

# 或者还可以设置登陆限制

$servers->setValue('login','allowed_dns',array=('cn=admin,dc=test,dc=com'));

1

2

3

4

5

6

7

8

9

10

11

12

13# LDAP 服务器IP或者域名

$servers->setValue('server','host','127.0.0.1');

# 修改基本的目录结构

$servers->setValue('server','base',array('dc=test,dc=com'));

# 修改登陆用户

$servers->setValue('login','bind_id','cn=admin,dc=test,dc=com');

# 隐藏警告信息,因为这些信息大多数没用

$config->custom->appearance['hide_template_warning']=true;

# 限制匿名登陆

$servers->setValue('login','anon_bind',false);

# 或者还可以设置登陆限制

$servers->setValue('login','allowed_dns',array=('cn=admin,dc=test,dc=com'));

配置Nginx

Default

$ sudo ln -sv /usr/share/phpldapshare/htdocs /var/www

1$sudoln-sv/usr/share/phpldapshare/htdocs/var/www

然后添加Nginx配置文件,这里还可以添加 htpasswd 访问限制;

Default

# phpLDAPadmin

server {

listen 80;

root /var/www/phpldapadmin;

index index.html index.htm index.php;

server_name ldap.chenjiehua.me;

location / {

try_files $uri $uri/ /index.html;

}

location ~ \.php$ {

fastcgi_pass unix:/var/run/php5-fpm.sock;

fastcgi_index index.php;

include fastcgi_params;

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17# phpLDAPadmin

server{

listen80;

root/var/www/phpldapadmin;

indexindex.htmlindex.htmindex.php;

server_nameldap.chenjiehua.me;

location/{

try_files$uri$uri//index.html;

}

location~\.php${

fastcgi_passunix:/var/run/php5-fpm.sock;

fastcgi_indexindex.php;

includefastcgi_params;

}

}

然后就可以通过浏览器来访问 ldap 了。

SLDAP

默认情况下,OpenLDAP并没有开启 memberof,参考官方文档 12.8 节,再参考这篇How to enable MemberOf using OpenLDAP文章解决:

首先创建两个节点:Groups node

People node

Default

# 保存为文件 add_nodes.ldif

dn: ou=people,dc=test,dc=com

objectClass: organizationalUnit

ou: People

dn: ou=groups,dc=test,dc=com

objectClass: organizationalUnit

ou: Groups

1

2

3

4

5

6

7

8# 保存为文件 add_nodes.ldif

dn:ou=people,dc=test,dc=com

objectClass:organizationalUnit

ou:People

dn:ou=groups,dc=test,dc=com

objectClass:organizationalUnit

ou:Groups

Default

$ ldapadd -x -D cn=admin,dc=example,dc=com -W -f add_nodes.ldif

1$ldapadd-x-Dcn=admin,dc=example,dc=com-W-fadd_nodes.ldif

再添加三个文件 memberof_config.ldif, refint1.ldif,refint2.ldif

Default

# memberof_config.ldif

dn: cn=module,cn=config

cn: module

objectClass: olcModuleList

olcModuleLoad: memberof

olcModulePath: /usr/lib/ldap

dn: olcOverlay={0}memberof,olcDatabase={1}hdb,cn=config

objectClass: olcConfig

objectClass: olcMemberOf

objectClass: olcOverlayConfig

objectClass: top

olcOverlay: memberof

olcMemberOfDangling: ignore

olcMemberOfRefInt: TRUE

olcMemberOfGroupOC: groupOfNames

olcMemberOfMemberAD: member

olcMemberOfMemberOfAD: memberOf

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18# memberof_config.ldif

dn:cn=module,cn=config

cn:module

objectClass:olcModuleList

olcModuleLoad:memberof

olcModulePath:/usr/lib/ldap

dn:olcOverlay={0}memberof,olcDatabase={1}hdb,cn=config

objectClass:olcConfig

objectClass:olcMemberOf

objectClass:olcOverlayConfig

objectClass:top

olcOverlay:memberof

olcMemberOfDangling:ignore

olcMemberOfRefInt:TRUE

olcMemberOfGroupOC:groupOfNames

olcMemberOfMemberAD:member

olcMemberOfMemberOfAD:memberOf

Default

# refint1.ldif

dn: cn=module{1},cn=config

add: olcmoduleload

olcmoduleload: refint

1

2

3

4# refint1.ldif

dn:cn=module{1},cn=config

add:olcmoduleload

olcmoduleload:refint

Default

# refint2.ldif

dn: olcOverlay={1}refint,olcDatabase={1}hdb,cn=config

objectClass: olcConfig

objectClass: olcOverlayConfig

objectClass: olcRefintConfig

objectClass: top

olcOverlay: {1}refint

olcRefintAttribute: memberof member manager owner

1

2

3

4

5

6

7

8# refint2.ldif

dn:olcOverlay={1}refint,olcDatabase={1}hdb,cn=config

objectClass:olcConfig

objectClass:olcOverlayConfig

objectClass:olcRefintConfig

objectClass:top

olcOverlay:{1}refint

olcRefintAttribute:memberofmembermanagerowner

执行

Default

$ sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f memberof_config.ldif

$ sudo ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f refint1.ldif

$ sudo ldapadd -Q -Y EXTERNAL -H ldapi:/// -f refint2.ldif

1

2

3$sudoldapadd-Q-YEXTERNAL-Hldapi:/// -f memberof_config.ldif

$sudoldapmodify-Q-YEXTERNAL-Hldapi:/// -f refint1.ldif

$sudoldapadd-Q-YEXTERNAL-Hldapi:/// -f refint2.ldif

ldap 统一认证 java_LDAP统一用户认证相关推荐

  1. 安全认证宇宙之用户认证0x01

    安全认证之用户认证 web服务器:Nginx 安装用户认证并分析原理(举一隅不以三隅反则不复也) php artisan make:auth 和php artisan migrate 除了首页各个路由 ...

  2. 统一用户认证和单点登录和授权的原理与流程

    统一用户认证和单点登录和授权的原理与流程 1 前言 2 介绍 2.1 统一用户认证 2.2 单点登录 2.3 授权 3 原理 3.1 统一用户认证原理 3.2 单点登录原理 3.3 OAuth授权原理 ...

  3. Spring Security Oauth2 JWT 实现用户认证授权功能

    Spring Security Oauth2 JWT 一 用户认证授权 1. 需求分析 1.1 用户认证与授权 什么是用户身份认证? 用户身份认证即用户去访问系统资源时系统要求验证用户的身份信息,身份 ...

  4. 在spring security手动 自定义 用户认证 SecurityContextHolder

    1.Spring Security 目前支持认证一体化如下认证技术: HTTP BASIC authentication headers (一个基于IEFT  RFC 的标准) HTTP Digest ...

  5. 配置用户通过Telnet登录设备的身份认证(AAA本地认证)

    背景信息 用户通过Telnet登录设备时,设备上必须配置验证方式,否则用户无法成功登录设备.设备支持不认证.密码认证和AAA认证三种用户界面的验证方式,其中AAA认证方式安全性最高. 采用AAA本地认 ...

  6. php lumen auth,学习 Lumen 用户认证 (一)

    好久没写 PHP 代码了,尤其是 Lumen,我是 Lumen 的忠实用户,自从面世开始,我就将 Lumen 作为我 API 的主要框架使用. 但说到 API,不得不说的一个概念:「前后端分离」,现在 ...

  7. 转:权限管理——用户认证和用户授权

    转自: https://blog.csdn.net/xdd19910505/article/details/51926540 因为做了权限的项目经理,so,恶补一下一个权限框架:shiro.其实作为框 ...

  8. Django auth用户认证模块

    Django auth用户认证模块 1.Django auth用户认证 2.Django auth用户模型 3.自定义auth用户模型 4.数据迁移 5.web开发一个应用 5.1 定义路由 1.一级 ...

  9. 权限管理——用户认证和用户授权

    因为做了权限的项目经理,so,恶补一下一个权限框架:shiro.其实作为框架首要目标是易于使用和理解.安全有时候是很复杂的,甚至是痛苦的,但框架没有必要这样.框架应该尽可能掩盖复杂的地方,露出一个干净 ...

  10. Flask Web开发基础实战-1.0用户认证与注册模块

    目录: 前言: 一,账户密码安全性 使用Werkzeug实现密码散列 二,创建登录的认证蓝本 三,Flask-Login认证用户 1.用于登录的用户数据库模型 2.保护路由 3.添加登录表单 4.登入 ...

最新文章

  1. centos7 systemctl 管理 mysql
  2. android shortcut livefoulder
  3. 前端基础知识整理汇总(中)
  4. Entity Framework Core 2.0 使用代码进行自动迁移
  5. 窄带物联网(NB-IoT)初步了解
  6. 二叉树的前中后层遍历
  7. 基于SURF特征的目标检测
  8. 韩立刚计算机网络——第三章:数据链路层
  9. 大数据去重bitmap以及布隆过滤器
  10. 2021下半年河南郑州普通话测试报名入口
  11. 立方单位换算计算机,立方进率换算(立方进率单位换算表)
  12. 时差怎么理解_时差是怎么形成的?
  13. php获取图片格式(图片后缀)
  14. 4.顺序栈和循环队列的基本运算
  15. 现实版“武大郎和潘金莲”的婚姻情感纠葛
  16. OrCAD+PADS联合绘制PCB的总结
  17. java 高德计算距离,距离、长度、面积
  18. C++ 数组名a、数组名取地址a、数组首地址a[0]、数组指针*p
  19. 怎样判断一个P2P平台是否靠谱?
  20. JavaScript核心 DOM 和 BOM操作

热门文章

  1. abaqus更改计算机名,ABAQUS 2016 安装教程
  2. uvlayout和MAYA的接口的问题
  3. 苹果系统摩尔庄园是什么服务器,摩尔庄园手游官服和渠道服有什么区别_可以一起玩吗_官服和渠道服详细介绍...
  4. 微信小程序 图片处理:压缩、上传、审核
  5. ArcScan矢量化
  6. kaptcha生成java验证码
  7. pdf怎么转图片,可得到高清图
  8. java saxreader 字符串_Java SAXReader.read方法代碼示例
  9. SECS的常用术语介绍与使用
  10. 2022年4月30号Mysql语句增删改查(CRUB)重在实操。