轻量级LDAP实现,用于身份认证,简化LDAP使用流程。
收藏数: 10
下载次数: 2229559
类型:

lldap/lldaplldap是一个轻量级认证服务器,提供简化的LDAP接口用于身份验证。它并非完整的LDAP服务器,而是一个专注于用户管理的系统,旨在为自托管服务提供简单的LDAP认证源。该项目目标是解决传统LDAP服务器(如OpenLDAP)配置复杂、管理困难的问题,提供开箱即用的身份验证解决方案。
lldap主要作为用户信息的可信源,可与KeyCloak、Authelia等组件集成,为Nextcloud、Airsonic等开源服务提供LDAP认证支持。数据默认存储于SQLite数据库,也可切换至MySQL/MariaDB或PostgreSQL。
slapd服务,开箱即用lldap_admin)、只读组(lldap_strict_readonly)和密码管理组(lldap_password_manager)memberOf组 membership查询lldap主要面向自托管服务器场景,特别适合需要LDAP认证支持的开源服务集成,例如:
不适用于需要完整LDAP功能集的企业级场景,此类需求建议使用OpenLDAP等全功能LDAP服务器。
bashdocker run -d \ --name lldap \ -p 3890:3890 \ # LDAP端口 -p 8080:8080 \ # Web管理界面端口 -v ./data:/data \ -e LLDAP_HTTP_PORT=8080 \ -e LLDAP_LDAP_PORT=3890 \ -e LLDAP_BASE_DN=dc=example,dc=com \ -e LLDAP_ADMIN_PASSWORD=super_secret_password \ -e LLDAP_USER_UID=1000 \ -e LLDAP_USER_GID=1000 \ lldap/lldap:latest
bashdocker run -d \ --name lldap \ -p 3890:3890 \ -p 8080:8080 \ -v ./data:/data \ --user 1000:1000 \ -e LLDAP_HTTP_PORT=8080 \ -e LLDAP_LDAP_PORT=3890 \ -e LLDAP_BASE_DN=dc=example,dc=com \ -e LLDAP_ADMIN_PASSWORD=super_secret_password \ lldap/lldap:latest-rootless
yamlversion: '3.8' services: lldap: image: lldap/lldap:latest container_name: lldap ports: - "3890:3890" # LDAP端口 - "8080:8080" # Web界面端口 volumes: - ./data:/data # 数据持久化 environment: - LLDAP_BASE_DN=dc=example,dc=com # 基础DN - LLDAP_ADMIN_PASSWORD=your_secure_password # 管理员密码 - LLDAP_HTTP_PORT=8080 # Web服务端口 - LLDAP_LDAP_PORT=3890 # LDAP服务端口 - LLDAP_USER_UID=1000 # 运行用户UID(标准镜像) - LLDAP_USER_GID=1000 # 运行用户GID(标准镜像) - LLDAP_LOG_LEVEL=info # 日志级别:trace, debug, info, warn, error # 数据库配置(默认SQLite,如需MySQL/PostgreSQL取消注释) # - LLDAP_DATABASE_URL=mysql://user:pass@mysql:3306/lldap # SMTP配置(用于密码重置) # - LLDAP_SMTP_FROM=*** # - LLDAP_SMTP_HOST=smtp.example.com # - LLDAP_SMTP_PORT=587 # - LLDAP_SMTP_USER=smtp_user # - LLDAP_SMTP_PASSWORD=smtp_pass # - LLDAP_SMTP_TLS=true restart: unless-stopped networks: - lldap-network # 与其他服务共享的网络 networks: lldap-network: driver: bridge
| 环境变量 | 描述 | 默认值 |
|---|---|---|
LLDAP_BASE_DN | LDAP基础DN(域名组件) | dc=example,dc=com |
LLDAP_ADMIN_PASSWORD | 管理员密码(用于Web界面和LDAP绑定) | 无(必须设置) |
LLDAP_HTTP_PORT | Web管理界面监听端口 | 8080 |
LLDAP_LDAP_PORT | LDAP服务监听端口 | 3890 |
LLDAP_USER_UID | 运行用户UID(仅标准镜像需要) | 1000 |
LLDAP_USER_GID | 运行用户GID(仅标准镜像需要) | 1000 |
LLDAP_DATABASE_URL | 数据库连接URL(支持SQLite/MySQL/PostgreSQL) | sqlite:///data/lldap.db |
LLDAP_LOG_LEVEL | 日志级别 | info |
LLDAP_SMTP_* | SMTP相关配置(FROM、HOST、PORT、USER、PASSWORD、TLS) | 无(可选,用于密码重置邮件) |
LLDAP_DISABLE_EMAIL | 禁用邮件功能(密码重置等) | false |
http://<ip>:8080访问Web管理界面cn=admin,ou=people,dc=example,dc=com 和设置的LLDAP_ADMIN_PASSWORD登录Web界面提供以下核心功能:
普通用户可通过Web界面:
| 参数 | 值示例 | 说明 |
|---|---|---|
| LDAP服务器地址 | ldap://lldap:3890 | 容器内使用服务名,外部使用IP:端口 |
| 绑定DN | cn=admin,ou=people,dc=example,dc=com | 管理员DN(或只读用户DN) |
| 绑定密码 | your_secure_password | 对应DN的密码 |
| 用户搜索基准 | ou=people,dc=example,dc=com | 用户条目所在位置 |
| 用户搜索过滤器 | (uid={{username}}) 或 (mail={{username}}) | 根据用户名或***搜索用户 |
| 组搜索基准 | ou=groups,dc=example,dc=com | 组条目所在位置 |
| 组成员属性 | memberOf | 用于检查用户所属组 |
为提高安全性,建议为客户端服务创建只读用户:
ldap-readonly)lldap_strict_readonly组服务器:ldap://lldap:3890 端口:3890 用户DN:cn=ldap-readonly,ou=people,dc=example,dc=com 密码:readonly_password 基准DN:ou=people,dc=example,dc=com 用户过滤:(uid=%uid)
[反向代理 (Nginx/Traefik)] <---> [认证服务 (Authelia/KeyCloak)] <---> [lldap] ^ | [其他服务 (Nextcloud, *arr等)] ------------+
lldap-network)连接lldap和依赖服务/data目录正确挂载为持久卷大多数支持LDAP认证的服务均可与lldap配合使用,已验证的包括:
详细配置示例可参考lldap官方示例配置库。
LLDAP_DATABASE_URL)lldap本身不直接支持LDAPS,建议通过反向代理(如Nginx)终止SSL,配置示例:
nginxserver { listen 636 ssl; ssl_certificate /cert.pem; ssl_certificate_key /key.pem; location / { proxy_pass ldap://lldap:3890; } }
欢迎通过GitHub提交PR或报告问题。贡献前请确保:
cargo fmt格式化代码(针对Rust代码贡献)./export_schema.sh更新 schema项目地址:[***]
以下是 lldap/lldap 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务