企业级AI交互系统OpenWebUI集成LDAP用户权限认证(1)
本文介绍如何安装启用LDAP认证服务,及其用户权限及用户组设置。
推荐超级课程:
@TOC
安装 OpenLDAP
sudo apt install ldap-utils slapd
sudo dpkg-reconfigure slapd
配置 OpenLDAP
以下部分描述了在 OpenLDAP 中配置和注册用户的过程。
- [启动服务]
- [允许外部连接]
- [编辑默认配置]
- [配置 root 用户]
- [可选:安装管理工具]
- [注册新用户]
启动服务
启动 OpenLDAP 服务。
sudo systemctl start slapd.service
启用OpenLDAP服务并在操作系统中初始化它。
sudo systemctl enable slapd.service
允许外部连接
要在 Ubuntu 上启用与 OpenLDAP 的外部连接,您需要向防火墙添加例外。
sudo ufw allow ldap
在 CentOS 上,您需要允许通过防火墙的连接并允许应用程序通过 SELinux 访问 OpenLDAP。
sudo firewall-cmd --permanent --add-port=389/tcp --add-port=389/udp
sudo firewall-cmd --reload
sudo setsebool -P allow_ypbind=1 authlogin_nsswitch_use_ldap=1
sudo setsebool -P httpd_can_connect_ldap on
编辑默认配置
在使用 OpenLDAP 服务器之前,您必须确保该服务器已正确配置。 因此,您应该检查写入文件ldap.conf
的默认配置。
在您喜欢的文本编辑器中
ldap.conf
打开该文件。 这两个 Linux 发行版都nano
默认安装了文本编辑器。您可以使用以下命令在终端中编辑此文件:Ubuntu
sudo nano /etc/ldap/ldap.conf
CentOS
sudo nano /etc/openldap/ldap.conf
取消注释以下内容:
BASE dc=example,dc=com URI ldap://ldap.example.com ldap://ldap-master.example.com:666
编辑这些条目
BASE
以替换您的域名以及URI
LDAP 服务器的完全限定域名或 IP 地址。 例如,有以下几种:BASE dc=team,dc=ai,dc=com URI ldap://team.ai.com
按 Ctrl + X
Y
并输入,然后在 nano 中保存并关闭文件。
配置 root 用户
要在 LDAP 中执行管理任务,您必须更改 LDAP 根用户。在 LDAP 条目中,该用户olcRootDN
被称为用户。
要更改 OpenLDAP,您必须创建一个 LDIF 文件,其中包含有关您想要在 LDAP 服务器上更改的内容的信息。请勿手动编辑/etc/ldap/slapd.d
该目录或其中的 LDIF 文件。/etc/openldap/slapd.d
您需要在任何文件夹中创建一个 LDIF 文件,在您的用户文件夹中创建它并将所有内容放在该文件中。 然后ldapadd
运行该工具将 LDIF 文件应用到服务器。
以下步骤将更改 LDAP 默认根用户,使其能够管理服务器中的所有条目。
为 root 用户创建密码。
slappasswd
输入并确认密码。 此命令
{SSHA}yh/GrT7AsObYUoHu89ynjzOljpBP10sp
应输出密码哈希,例如: 复制输出并将其保存到文本文件。使用您喜欢的文本编辑器
rootpw.ldif
创建文件。nano rootpw.ldif
输入以下内容:
dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}yh/GrT7AsObYUoHu89ynjzOljpBP10sp
{SSHA}yh/GrT7AsObYUoHu89ynjzOljpBP10sp``slappasswd
用您从命令中获得的哈希值替换。应用更改。
ldapadd -Y EXTERNAL -H ldapi:/// -f rootpw.ldif
使用以下命令导入基本 LDAP schema:
Ubuntu
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/openldap.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/dyngroup.ldif
CentOS
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/openldap.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldif
配置对 LDAP 服务器的访问并为该服务器配置管理员用户。
manager.ldif
创建文件。nano manager.ldif
输入以下内容:
dn: olcDatabase={1}monitor,cn=config changetype: modify replace: olcAccess olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=team,dc=ai,dc=com" read by * none dn: olcDatabase={2}mdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=team,dc=ai,dc=com dn: olcDatabase={2}mdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=Manager,dc=team,dc=ai,dc=com dn: olcDatabase={2}mdb,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}yh/GrT7AsObYUoHu89ynjzOljpBP10sp dn: olcDatabase={2}mdb,cn=config changetype: modify add: olcAccess olcAccess: {0}to attrs=useteamssword,shadowLastChange by dn="cn=Manager,dc=team,dc=ai,dc=com" write by anonymous auth by self write by * none olcAccess: {1}to dn.base="" by * read olcAccess: {2}to * by dn="cn=Manager,dc=team,dc=ai,dc=com" write by * read
olcRootPW
替换为您使用该工具获取的密码slappasswd
哈希。dc=team,dc=ai,dc=com
用您自己的base DN 替换。**✪ 提示:**在 Ubuntu 上,您可能必须更改为
olcDatabase={2}mdb
。olcDatabase={1}mdb
使用以下命令的输出来确定文件的名称。ls /etc/ldap/slapd.d/cn=config/
应用设定:
ldapmodify -Y EXTERNAL -H ldapi:/// -f manager.ldif
创建一个新的 LDIF 文件以创建组织组。
nano org.ldif
输入以下内容:
dn: dc=team,dc=ai,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: ai team Server
dc: team
dn: cn=Manager,dc=team,dc=ai,dc=com
objectClass: organizationalRole
cn: Manager
description: LDAP Manager
dn: ou=teamusers,dc=team,dc=ai,dc=com
objectClass: organizationalUnit
ou: teamUsers
dc=team,dc=ai,dc=com
用 base DN 替换。team
您可以更改群组及其teamUsers
名称。 ai team 不要求用户组具有唯一的名称。
- 将内容应用于管理员用户。
ldapadd -x -D cn=Manager,dc=team,dc=ai,dc=com -W -f org.ldif
系统将提示您输入 LDAP 密码。输入为 LDAP 根用户定义的纯文本密码。
可选:安装管理工具
OpenLDAP 包含几个客户端工具,您可以使用它们通过终端管理服务器。 但是,对于初学者或不熟悉 CLI 的用户来说,这些工具可能很难。
OpenLDAP 开发人员不分发或认可任何图形用户界面工具,但有几种替代管理工具(例如Apache Directory Studio)可供您安装以管理 LDAP 服务器。
这是一个可选步骤,但如果您想使用图形用户界面管理 LDAP 服务器,建议执行此步骤。
Apache™ Directory Studio
Apache™ Directory Studio是一个由 Eclipse™ 平台提供支持的 LDAP 服务器桌面客户端。该平台允许您无需使用终端即可查看、编辑和创建 LDAP 服务器中的条目。
**❕重要提示:**您必须安装 Java 运行时环境才能运行此应用程序。要运行此应用程序,您至少需要 JDK 11。它也适用于 Windows™。
- 下载并安装Apache Directory Studio 🡥 。
- 打开应用程序。
- 单击工作台按钮。
- 在顶部菜单中,单击文件 > 新建。
- 展开LDAP 浏览器目录,选择LDAP 连接,然后单击下一步。
- 在“连接名称”
LDAP server
中,输入连接的名称(例如, - 在主机名中,输入您的 LDAP 服务器的地址。
- 在加密方法中,输入用于 LDAP 连接的加密类型。 在本教程中,LDAP 服务器上没有加密,但建议您为 LDAP 连接添加加密。
- 单击**“下一步” 。**
- 输入LDAP 服务器所需的身份验证方法。 在此示例中,LDAP 服务器使用简单身份验证。
- 输入绑定 DN
cn=Manager,dc=team,dc=ai,dc=com
。例如,这是您配置为 LDAP 管理员的用户。 - 输入 LDAP 管理员用户的密码。
- 单击**“完成”即可连接到服务器。**
注册新用户
LDAP 条目排列成称为目录信息树 (DIT) 的树状结构。 该树中的每个项目都通过一个可分辨名称 (DN) 进行标识。 DN 由 DIT 中的条目规范组成。 例如,team.ai.com
某个域中的用户john
可以按以下方式识别:
cn=john,dc=team,dc=ai,dc=com
cn
字段是一个通用名称,最常用于表示树中的单个对象。dc
该字段是用于标识 LDAP 域名组件的域组件。
john
如果teamusers
它是某个组的一部分,这将是 LDAP 条目。
cn=john,ou=teamusers,dc=team,dc=ai,dc=com
ou
字段是用于对 LDAP 服务器中的其他条目进行分组的组织单位。
有关这些对象 ID 的更多信息,请参阅[LDAP OID 参考指南 🡥 。
用户具有可以在 LDAP 条目中注册的属性。 这些属性可以对应用户的电子邮件、密码、位置等。 ai team 要求平台内的用户拥有电子邮件地址、用户名和密码。
要在 LDAP 服务器中注册新用户,ldapmodify
您需要创建一个具有所有属性的 LDIF 文件并运行该工具来注册该用户。 以下步骤将详细介绍整个过程以及每个用户在平台内需要具备的属性。
创建一个新的 LDIF 文件。
nano addUserName.ldif
addUserName
替换为您要添加的用户的名称。为用户输入以下内容:
dn: cn=User Name,dc=team,dc=ai,dc=com changetype: add objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: person objectClass: top uid: username cn: User Name sn: Name displayName: User Name mail: username@example.com useteamssword: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
dc=team,dc=ai,dc=com
用基本 DN 替换。sn
中,输入用户的姓氏。uid
中,输入用户的用户名。displayName
在 中,输入用户的显示名称。mail
中,输入用户的电子邮件地址。useteamssword``slappasswd
输入您使用命令获取的用户密码的哈希值。
输入以下命令来注册用户:
ldapadd -D "cn=Manager,dc=team,dc=ai,dc=com" -W -f addUserName.ldif
PLA (phpldapadmin) LDAP管理工具
phpLDAPadmin 是一个基于Web的LDAP服务器管理工具。
以下是安装步骤:
docker pull leenooks/phpldapadmin:2.0.0-dev
通过环境变量设置LDAP服务器连接等信息: Environment variables: Configuration-Variables