Openldap集成Kerberos

news2024/10/23 2:43:54

在这里插入图片描述

文章目录

  • 一、背景
  • 二、Openldap集成Kerberos
    • 2.1kerberos服务器中绑定Ldap服务器
      • 2.1.1创建LDAP管理员用户
      • 2.1.2添加principal
      • 2.1.3生成keytab文件
      • 2.1.4赋予keytab文件权限
      • 2.1.5验证keytab文件
      • 2.1.6增加KRB5_KTNAME配置
    • 2.2Ldap服务器中绑定kerberos服务器
      • 2.2.1生成LDAP数据库RootDN的密码文件
      • 2.2.2增加kerberos在ldap数据库的container DN
      • 2.2.3更新kerberos的server配置
      • 2.2.4增加rootDN全局权限
      • 2.2.5加载kerberos对应schema
      • 2.2.6创建kerberos的LDAP数据库
      • 2.2.7重启kerberos服务
      • 2.2.8验证kerberos+ldap集成
  • 本人其他相关文章链接

一、背景

亲测可用,之前搜索了很多博客,啥样的都有,就是不介绍报错以及配置用处,根本不懂照抄那些配置是干啥的,稀里糊涂的按照博客搭完也跑不起来,因此记录这个。

项目背景:公司项目当前采用http协议+shiro+mysql的登录认证方式,而现在想支持ldap协议认证登录然后能够访问自己公司的项目网站。

举例说明:假设我们公司有自己的门户网站,现在我们收购了一家公司,他们数据库采用ldap存储用户数据,那么为了他们账户能登陆我们公司项目所以需要集成,而不是再把他们的账户重新在mysql再创建一遍,万一人家有1W个账户呢,不累死了且也不现实啊。

需要安装openldap+kerberos,且ldap和kerberos安装在同一台服务器上,当前版本如下:

  • centos 7.9
  • openldap 2.4.44
  • phpldapadmin 1.2.5
  • 服务器IP:10.110.38.162
  • Kerberos :Kerberos 5 release 1.15.1

本博客参考的博客是:

  • ① Openldap安装部署
  • ② Kerberos基本原理、安装部署及用法
  • ③ Openldap集成Kerberos

注意:这个文章是真实可行的,但是有执行顺序,一定要先安装“Openldap安装部署”+“Kerberos基本原理、安装部署及用法”之后,确保安装无误后再去安装“Openldap集成Kerberos”。
在这里插入图片描述

我当时犯的毛病就是前两个没完全照着文档安装完成就直接安装的第三个,然后出现各种问题,我还不知道为点啥。人家博客都说了要先安装前两个,再看这个“Kerberos基本原理、安装部署及用法”。所以一定要注意安装顺序,遇到不懂得配置也没事先照着安。

二、Openldap集成Kerberos

2.1kerberos服务器中绑定Ldap服务器

2.1.1创建LDAP管理员用户

在kdc服务器执行如下操作:

kadmin.local -q "addprinc ldapadmin@NODE3.COM"

2.1.2添加principal

在kdc服务器执行如下操作:

kadmin.local -q "addprinc -randkey ldap/bridge1@NODE3.COM"

2.1.3生成keytab文件

在kdc服务器执行如下操作:

kadmin.local -q "ktadd -k /etc/openldap/ldap.keytab ldap/bridge1@NODE3.COM"

2.1.4赋予keytab文件权限

把生成的ldap.keytab文件转移到openldap服务器节点上,并在openldap服务器节点执行如下操作:(本机此处都是在同一台机器执行)

chown ldap:ldap /etc/openldap/ldap.keytab && chmod 640 /etc/openldap/ldap.keytab

2.1.5验证keytab文件

使用ldapadmin用户测试,输入密码没有报错说明已通过kerberos身份验证

kinit ldapadmin

2.1.6增加KRB5_KTNAME配置

在openldap服务器节点,确保LDAP启动时使用上一步创建的keytab文件,在/etc/sysconfig/sladp文件中增加如下内容

KRB5_KTNAME=/etc/openldap/ldap.keytab

然后重启服务

systemctl restart slapd

至此,LDAP在Kerberos服务器上已完成集成。

2.2Ldap服务器中绑定kerberos服务器

Kerberos.schema是在krb5-server-ldap安装之后才出现的,不能使用该软件安装后自带的kerberos.ldif,需要手动生成。安装软件krb5-server-ldap,获取kerberos.schema。
在openldap服务器节点执行如下命令:

yum -y install krb5-server-ldap

移动kerberos.schema到目的目录

mv /usr/share/doc/krb5-server-ldap-1.15.1/Kerberos.schema /etc/openldap/schema

手动创建文件schema_convert.conf用来生成kerberos.ldif,文件内容如下

vim schema_convert.conf
-----------------------------------------------
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/collective.schema
include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/duaconf.schema
include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/java.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/ppolicy.schema
include /etc/openldap/schema/kerberos.schema

使用命令生成kerberos.ldif

cd ~
slapcat -f schema_convert.conf -F /root/ -n 0 -s "cn={13}kerberos,cn=schema,cn=config">/home/cn=Kerberos.ldif

并注释掉如下属性:

#structuralObjectClass: olcSchemaConfig
#entryUUID: ff864160-c092-103e-89e3-570a7b5d6144
#creatorsName: cn=config
#createTimestamp: 20240617011641Z
#entryCSN: 20240617011641.575801Z#000000#000#000000
#modifiersName: cn=config
#modifyTimestamp: 20240617011641Z

修改生成的kerberos.ldif,把dn: cn={12}kerberos改为dn: cn={13}kerberos,cn=schema,cn=config,把cn: {12}kerberos改为cn: {13}kerberos 注:这里的cn={13}kerberos是因为schema_convert.conf文件里面kerberos排行13,故kerberos是作为第13个导入到openldap里面的。

2.2.1生成LDAP数据库RootDN的密码文件

kdb5_ldap_util -D cn=admin,dc=node3,dc=com -w 123456 stashsrvpw -f /etc/krb5.ldap cn=admin,dc=node3,dc=com

2.2.2增加kerberos在ldap数据库的container DN

增加一个kerberos1.ldif文件

vim kerberos1.ldif 

dn: cn=kerberos,dc=node3,dc=com
cn: kerberos
objectClass: organizationalRole

执行命令,添加cn=Kerberos,dc=node3,dc=com节点

ldapadd -x -D cn=admin,dc=node3,dc=com -W -f kerberos1.ldif

2.2.3更新kerberos的server配置

[realms]字段,NODE3.COM设置为需要的值,增加database_module=openldap_ldapconf配置

[kdcdefaults]
 kdc_ports = 88
 kdc_tcp_ports = 88

[realms]
 NODE3.COM = {
  #master_key_type = aes256-cts
  acl_file = /var/kerberos/krb5kdc/kadm5.acl
  dict_file = /usr/share/dict/words
  admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
  supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
  database_module = openldap_ldapconf
  #kdc = kdc.node.com
  #admin_server = kdc.node.com
  kdc = 127.0.0.1:88
  admin_server =127.0.0.1:749
}

[dbdefaults]
 ldap_kerberos_container_dn = cn=kerberos,dc=node3,dc=com

[dbmodules]
 openldap_ldapconf = {
  db_library = kldap
  ldap_servers = ldap://127.0.0.1:389
  ldap_kdc_dn = cn=admin,dc=node3,dc=com
  ldap_kadmind_dn = cn=admin,dc=node3,dc=com
  ldap_service_password_file = /etc/krb5.ldap

  #ldap_kdc_dn = "uid=kdc-service,dc=node,dc=com"
  #ldap_kadmind_dn = "uid=kadmin-service,dc=node,dc=com"
  #ldap_service_password_file = /etc/krb5kdc/service.keyfile
 # ldap_servers = ldapi:///
  ldap_conns_per_server = 5
 }

注意:ldap_kerberos_container_dc字段为kerberos在ldap数据库的container。ldap_kdc_dn和ldap_kadmind_dc分别对应kerberos访问LDAP数据库时的服务和管理账号,为方便管理,都是用rootdn。

2.2.4增加rootDN全局权限

修改ldap全局配置文件/etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif增加rootDN创建库权限

vi /etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif
#增加如下两行
olcRootDN: cn=config
olcRootPW: 123456
#更改完毕需要重启slapd服务
Ps –aux | grep slapd
Kill  -9  $PID
Systemctl restart slapd

2.2.5加载kerberos对应schema

cd ~
ldapadd -x -D "cn=config" -w 123456 -f cn=kerberos.ldif

2.2.6创建kerberos的LDAP数据库

kdb5_ldap_util -D cn=admin,dc=node3,dc=com -w 123456 -H ldap://127.0.0.1:389 create -r NODE3.COM –s

执行成功,可在ldap客户端查看到kerberos中多了以下节点显示,如下图。

在这里插入图片描述

2.2.7重启kerberos服务

在kdc服务器节点执行如下操作:

systemctl restart krb5kdc
systemctl restart kadmin

至此,Kerberos在LDAP服务器上已完成集成。

2.2.8验证kerberos+ldap集成

通过kadmin命令行增加一个principal,在kerberos显示成功。
在这里插入图片描述

在ldap客户端通过kerberos验证显示成功。

在这里插入图片描述

本人其他相关文章链接

1.Centos7.9安装openldap
2.Centos7.9安装kerberos
3.Openldap集成Kerberos
4.Centos7.9安装phpldapadmin
5.java连接ldap实现用户查询功能
6.java连接kerberos用户认证
7.javax.security.auth.login.LoginException: Unable to obtain password from user
8.javax.security.auth.login.LoginException: null (68)
9.javax.security.auth.login.LoginException: Message stream modified (41)
10.javax.security.auth.login.LoginException: Checksum failed
11.javax.security.auth.login.LoginException: No CallbackHandler available to garner authentication info
12.javax.security.auth.login.LoginException: Cannot locate KDC
13.javax.security.auth.login.LoginException: Receive timed out
14.java: 无法访问org.springframework.context.ConfigurableApplicationContext
15.LDAP: error code 34 - invalid DN
16.LDAP: error code 32 - No Such Object
17.java: 无法访问org.springframework.ldap.core.LdapTemplate

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1844093.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MicroPython+ESP32 C3+ST7735S LCD屏 WIFI联网显示实时时间

案例地址:https://gitee.com/whltaoin_admin/MP_ESP32_ST7735S- 展示效果 ESP32LCD屏 WIFI联网并显示实时时间 TFT LCD模块参数介绍 名称:1.8 128*160 RGB_TFT驱动芯片:ST7735S ESP32 C3 参数介绍(经典款) 外观及…

LeetCode 算法:两两交换链表中的节点 c++

原题链接🔗:两两交换链表中的节点 难度:中等⭐️⭐️ 题目 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交…

sqlcoder实践

背景 Defog llama-3 意义 翻译自然语言到sql,类似脑机接口,大模型重要应用领域 sql是数据库查询标准;关系数据库,工具(datax,sqoop,logstash,hive),非关系数据库(MongoDB,图数据库&#xff…

安装Xshell和Xftp后,打开程序下无法使用,要继续使用此程序,您必须应用最新的更新或使用新版本。

之前我遇到这种情况的时候,修改了nslicense.dll,结果这次重新下载结果把修改代码给忘了(因为我也不会这个),于是我用了最直接的办法去官网找最新版本下载:xshell/xftp官网 后面直接点下载,然后开…

网络编程5----初识http

1.1 请求和响应的格式 http协议和前边学过的传输层、网络层协议不同,它是“一问一答”形式的,所以要分为请求和响应两部分看待,同时,请求和响应的格式是不同的,我们来具体介绍一下。 1.1.1 请求 在介绍请求之前&…

PMP报考千万不要踩这些坑

8月份的PMP考试即将到来,在这里预祝大家都能一次过~~~~ - 现在这个大环境不是很好,很多公司都是需要学历、相关证书的,说实在的我公司要求就是除了要有专业证书之外还要额外其他的证书,例如,pmp证书。这段时间我的同…

卷积篇 | YOLOv8改进之引入重新参数化再聚焦卷积RefConv | 即插即用

前言:Hello大家好,我是小哥谈。论文提出了重新参数化再聚焦卷积RefConv作为常规卷积层的替代品,它是一个即插即用模块,可以在没有任何推理成本的情况下提高性能。具体来说,在给定预训练模型的情况下,RefConv对从预训练模型继承的基核进行可训练的再聚焦变换,以建立参数之…

AI制作PPT如何简化大学生的答辩准备?

时间过的好快,马上又到了一年一度的毕业季了。大学生活是丰富多彩的,同时大学的学业也是非常重要的。对于大学生来说最后的毕业答辩是非常重要的,关乎到能不能顺利毕业,想到自己为了答辩PPT熬的夜,掉的头发&#xff0c…

番外篇 | 基于改进YOLOv5的安全帽佩戴检测 | 重参数化结构RepVGG + 空间对象注意力机制RCS-OSA模块

前言:Hello大家好,我是小哥谈。RCS-YOLO是一种目标检测算法,它是基于YOLOv3算法的改进版本。通过查看RCS-YOLO的整体架构可知,其中包括RCS-OSA模块。RCS-OSA模块在模型中用于堆叠RCS模块,以确保特征的复用并加强不同层之间的信息流动。本文针对安全帽佩戴的检测就是基于RC…

dup和dup2函数

#include <unistd.h> int dup(int oldfd); 功能&#xff1a;根据oldfd生成newfd,newfd采用最小位使用原则分配&#xff0c;新旧文件描述符都可以操作文件&#xff0c;它们共享光标和打开文件的方式。 参数&#xff1a;olfd:旧的文件描述符 返回值&#xff1a;成功返回新的…

视频监控平台功能:国外的硬盘录像机NVR通过ISUP协议(原ehome协议)接入AS-V1000视频平台

目录 一、背景说明 二、ISUP协议介绍 1、海康ISUP协议概述 2、ISUP协议支持主码流和子码流切换 &#xff08;1&#xff09;灵活配置和个性化 &#xff08;2&#xff09;适应不同网络带宽&#xff0c;提高使用体验 3、海康ehome相关文章 三、ISUP协议接入说明 1、平台侧…

【ARMv8/v9 GIC 系列 4.1 -- GIC CPU Interface 访问支持情况】

文章目录 GIC CPU Interface 访问支持Bit[27:24]: GIC CPU接口汇编代码实现访问小结 GIC CPU Interface 访问支持 在ARMv8架构中&#xff0c;ID_AA64PFR0_EL1是一个系统寄存器&#xff0c;提供了有关处理器功能的详绀信息。这个寄存器的位[27:24]专门用于描述GIC&#xff08;通…

VScode中js关闭烦人的ts检查

类似如下的代码在vscode 会报错&#xff0c;我们可以在前面添加忽略检查或者错误&#xff0c;如下&#xff1a; 但是&#xff01;&#xff01;&#xff01;这太不优雅了&#xff01;&#xff01;&#xff01;&#xff0c;js代码命名没有问题&#xff0c;错在ts上面&#xff0c;…

码蹄集 BD202401 补给

错误解法&#xff1a;简单将取半前后的综合排序后取最小值&#xff0c;这样没有考虑这样一种情况&#xff1a;取半的时机不对&#xff0c;也许取半某个大一点的P之后反而能进一步取一个补给点了呢&#xff1f;&#xff1f;对不对。这样简单排序只不过是“最省钱”的一种&#x…

Linux源码阅读笔记02-进程原理及系统调用

进程和进程的生命周期 进程&#xff1a;指计算机中已运行的程序。进程本身不是基本的运行单位&#xff0c;而是线程的容器。程序本身不是基本的运行单位&#xff0c;而是线程的容器。程序是指令、数据和组织形式的描述&#xff0c;进程才是程序的真正运行实例。Linux内核把进程…

AndroidStudio中如何运行class中的main()函数?

直接右键运行Run main()是会报错的, * What went wrong: A problem occurred configuring project :app. > Could not create task :app:RsaUtils.main(). > SourceSet with name main not found. 需要Run main with Coverage 有些文章说需要在gradle.xml里面加上&…

HNU操作系统2023期中考试试卷及参考答案

本试题参考 甘晴void 的CSDN博客【2.2】操作系统OS_甘晴void的博客-CSDN博客&#xff0c;本意为期中复习自用&#xff0c;答案在其基础上进行进一步完善&#xff0c;若有错误还请指正&#xff01; 第一题&#xff1a;基础题&#xff08;20分&#xff09; 1.1&#xff08;4分&a…

智慧物流:实现供应链的技术升级

智慧物流不仅是物流管理系统的智能化升级&#xff0c;更是以物联网、大数据分析等技术手段为基础的一种高效、智能的供应链解决方案。通过实时监控、数据分析和智能优化&#xff0c;智慧物流将传统物流的各个环节有效连接起来&#xff0c;实现信息流、资金流和物流的无缝对接。…

全网最全postman接口测试教程和项目实战~从入门到精通

Postman实现接口测试内容大纲一览&#xff1a; 一、什么是接口&#xff1f;为什么需要接口&#xff1f; 接口指的是实体或者软件提供给外界的一种服务。 因为接口能使我们的实体或者软件的内部数据能够被外部进行修改。从而使得内部和外部实现数据交互。所以需要接口。 比如&…

GPT-4o与GPT-4的价格对比

截图来源于微软Azure的OpenAI服务。 GPT-4o比GPT-4的价格降低是肉眼可见&#xff0c;可惜计价是美元单位&#xff0c;较国内的价格而言还是比较贵&#xff0c;拿来做Demo演示可以&#xff0c;商用的话&#xff0c;还要仔细考量考量。 国内的地板价已经来到了0.5元/百万Token的…