在前面的文章中介绍了如何使用docker快速搭建ldap服务并进行确认,以及在java中如何使用jndi对ldap进行访问,但是按照官方github上的示例,由于没有将端口暴露出来,所以在宿主机对容器内运行的openldap服务进行访问只能通过容器IP,而且前提是宿主机和容器是能够互通的。但是只需要将服务的端口暴露出来,在外部也可以直接访问了。

端口及说明

缺省ldap使用389端口,加密使用636

启动

使用 -p将389端口进行暴露

docker run --name openldap -p 389:389 --detach osixia/openldap:1.2.2

确认宿主机IP

liumiaocn:openldap liumiao$ ifconfig |grep 192inet 192.168.31.242 netmask 0xffffff00 broadcast 192.168.31.255
liumiaocn:openldap liumiao$

连接方式1: 通过ldapuri

通过ldapsearch的ldapuri进行访问,形式如下:

ldapsearch -x -H ldap://IP地址或者可解析的地址:端口 -b 指定的baseDN -D 绑定的服务器的DN -w 简单认证方式的密码

  • 使用示例
liumiaocn:openldap liumiao$ ldapsearch -x -H ldap://192.168.31.242:389 -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=org> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
## example.org
dn: dc=example,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Inc.
dc: example# admin, example.org
dn: cn=admin,dc=example,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9TE5GaU0rZVZXNGlRR3FDdzQ5UzRMNjRlb2xjMjY5OU4=# search result
search: 2
result: 0 Success# numResponses: 3
# numEntries: 2
liumiaocn:openldap liumiao$

另外,如果端口为389,在ldapuri中可以省略,上述例子则变为:

ldapsearch -x -H ldap://192.168.31.242 -b dc=example,dc=org -D “cn=admin,dc=example,dc=org” -w admin

连接方式2: 使用hostname和ip的方式

这里继续使用ldapsearch作为连接验证方式,除了-H指定ldapuri,也可以直接通过-h和-p来指定hostname和ip的方式进行

ldapsearch -x -h IP地址或者可解析的地址 -p 端口 -b 指定的baseDN -D 绑定的服务器的DN -w 简单认证方式的密码

  • 使用实例
liumiaocn:openldap liumiao$ ldapsearch -x -h 192.168.31.242 -p 389 -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=org> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
## example.org
dn: dc=example,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Inc.
dc: example# admin, example.org
dn: cn=admin,dc=example,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: e1NTSEF9TE5GaU0rZVZXNGlRR3FDdzQ5UzRMNjRlb2xjMjY5OU4=# search result
search: 2
result: 0 Success# numResponses: 3
# numEntries: 2
liumiaocn:openldap liumiao$

同样,port为389时也可以省略,上述方式可以变为:

ldapsearch -x -h 192.168.31.242 -b dc=example,dc=org -D “cn=admin,dc=example,dc=org” -w admin

连接方式3: 使用JNDI方式连接

使用java的JNDI可以对LDAP进行操作,前面的文章中给除了简单的示例代码进行验证,详细参看:

  • LDAP基础:2:使用Java验证OpenLdap用户登录:https://blog.csdn.net/liumiaocn/article/details/83720115

这里接着使用对刚刚启动的OpenLdap容器的服务进行连接确认, 首先确认连接信息

  • Ldap使用的IP: 192.168.31.242
  • 用户名(DN):cn=admin,dc=example,dc=org
  • 用户密码:admin

使用IP+port的ldapuri

liumiaocn:~ liumiao$ java LdapDemo "192.168.31.242:389" "cn=admin,dc=example,dc=org" "admin"
IPAdress: 192.168.31.242:389
Username: cn=admin,dc=example,dc=org
Password: admin
env setting
login verification begins...
login successfully.
liumiaocn:~ liumiao$

port为389的情况下也可以省略

liumiaocn:~ liumiao$ java LdapDemo "192.168.31.242" "cn=admin,dc=example,dc=org" "admin"
IPAdress: 192.168.31.242
Username: cn=admin,dc=example,dc=org
Password: admin
env setting
login verification begins...
login successfully.
liumiaocn:~ liumiao$

总结

这样可以看到,一个通过docker方式快速启动的OpenLdap服务,简单的使用方式已经就绪,可以通过ldapsearch从客户端进行访问,也可以通过代码的编程接口进行访问。

LDAP基础:3:通过389端口对openldap进行操作相关推荐

  1. LDAP基础安装与简单入门使用

    0x00 前言简述 主要产品 基本模型 应用场景 0x01 环境安装 基于 yum 安装 基于 Docker 安装 0x02 LDAP配置&命令 slapd 命令 ldapsearch 命令 ...

  2. 端口基础常识大全+常用端口对照

    端口基础常识大全+常用端口对照 [color=Red][size=4][b]端口基础常识大全[/b][/size][/color] [color=Green]1) 公认端口(Well Known Po ...

  3. LDAP基础:8:ldap用户密码确认和修改

    ldap用户密码的修改可以使用ldappasswd命令,也可以使用万能的ldapmodify结合ldif文件来实现,但所修改的都是普通的用户,cn=admin的管理员用户的修改一般可以通过slappa ...

  4. LDAP基础功能(重点为搜索:ldapsearch)

    LDAP基础功能(重点为搜索:ldapsearch) 主目录http://407711169.blog.51cto.com/6616996/1439944 一.基本操作 连接 连接操作作用于应用程序与 ...

  5. 网络工程基础- -mac地址以及端口安全

    网络工程基础-mac地址以及端口安全 前言 MAC地址(英语:Media Access Control Address),直译为媒体存取控制位址,也称为局域网地址(LAN Address)物理地址(P ...

  6. 计算机AL教程笔记,计算机系统基础学习笔记(2)-数据的位运算操作

    C语言的位运算操作包括两类,逻辑运算操作和逻辑移位操作. 逻辑运算操作 C语言提供了四种按位逻辑操作符,分别是按位取反,按位与,按位或,按位异或.在编译时,编译器会根据操作数的宽度分别转换为不同的指令 ...

  7. c# 找出目录下的所有子目录_C# 基础知识系列- 14 IO篇 文件的操作(2)

    前接上一篇内容. 如果是第一次捧场的小伙伴,为了您阅读的连贯性,烦请扫一眼<C# 基础知识系列- 14 IO篇 文件的操作(1)>.本篇是IO之文件操作的第二篇,介绍一下目录和路径的相关类 ...

  8. 2022施工员-土建方向-通用基础(施工员)理论题库模拟考试平台操作

    题库来源:安全生产模拟考试一点通公众号小程序 2022施工员-土建方向-通用基础(施工员)考试题库为施工员-土建方向-通用基础(施工员)模拟考试题库仿真模拟预测!2022施工员-土建方向-通用基础(施 ...

  9. 数据库应用程序开发基础篇—— .NET中SQL Server数据库的操作C#篇之一

    数据库应用程序开发基础篇-- .NET中SQL Server数据库的操作C#篇之一 写在前面:前面介绍了数据库系统的基本概念,SQl语句基本使用方法,接下来通过学习具体语言和具体数据库结合的应用开发来 ...

最新文章

  1. Handler消息机制(十):HandlerThread源码解析
  2. 【翻译】24款界面精美的免费UI工具包
  3. 电子词典系统vc++_电子词典系统
  4. Oracle一定有sqlplus吗,oracle sqlplus执行sql文件
  5. 盘点三个JavaScript案例——实现限时秒杀、定时跳转、改变盒子大小
  6. 三种方法实现轮播图配置,史上最简方法~
  7. 引领PCB行业变革 捷配开启免费打样新时代
  8. OSG仿真案例(0)
  9. BZOJ3881 Coci2015 Divljak fail树+差分
  10. android ndk opencv 3,opencv_and_opencv_contrib
  11. 机器学习- 吴恩达Andrew Ng 编程作业技巧 for Week3
  12. win7系统备份怎么做的几种方法
  13. 学拳录 23退步压肘
  14. Python「剪藏」网页为 PDF
  15. ERDAS 2015 64位破解安装教程
  16. python获取网页图片_python抓取网页中的图片示例
  17. yolov5s-5.0网络模型结构图
  18. (二)Python Excel 操作
  19. 搜狗词库scel格式转为txt格式(python3版本)
  20. java 魔鬼数字_程序中的魔鬼数字

热门文章

  1. 安装vm12+CentOS7+Docker以及常见问题解决
  2. Apple Watch 中国应用初体验:勇气可嘉,但缺乏存在感
  3. 「Activiti精品 悟纤出品」Activiti7数据库表 - 第332篇
  4. 用户账号管理和组管理
  5. 碰撞检测之Sphere-Box检测
  6. 木星协定_木星笔记本简介
  7. 山财计算机考试科目,山东财经大学考研——22考研儿注意了,这几所高校发布了初试科目变更通知...
  8. 第八章 对立统一——异步时钟同步化
  9. 电脑插了两根内存条只读出来一根,另一条是为硬件保留的内存空间
  10. week16 CSP-M4-B ZJM要抵御宇宙射线