LLDAP 与 OneDev 集成指南:Generic LDAP 外部认证源完整配置 后端认证鉴权【免费下载链接】lldapLight LDAP implementation项目地址https://gitcode.com/gh_mirrors/ll/lldap点击查看免费下载本指南讲解如何将轻量级 LDAP 服务器 LLDAP 配置为 OneDev 的 Generic LDAP 外部认证源实现用户使用 LLDAP 中的账号名直接登录 OneDev。文章以仓库内 example_configs/onedev.md 为基础逐项解释每个配置字段的含义、与 LLDAP 内部数据模型的对应关系并结合源码说明底层实现帮助你在自建环境中一次配置成功。前置条件确认 LLDAP 与 OneDev 均已就绪开始配置前需要确认以下前提LLDAP 已安装并完成初始化管理员的 DN 与密码、LDAP 监听端口均已可用。安装方式可参考仓库内 docs/install.mdDocker 部署可参考 lldap_config.docker_template.toml 中给出的默认配置模板。OneDev 可访问 LLDAPOneDev 所在的网络环境需要能访问 LLDAP 的 LDAP 端口默认3890或 LDAPS 端口默认6360。基础 DN 已确认LLDAP 默认使用dcexample,dccom作为 base DN实际部署中请替换为你自己配置的域名 DN。OneDev 中的配置步骤在 OneDev 界面中依次进入Administration External Authentication Source Authenticator选择Generic LDAP类型然后按下表填写各项参数。配置项填写值LDAP URLldap://lldap_ip_or_hostname:3890或ldaps://lldap_ip_or_hostname:6360Authentication Required开启OnManager DNuidadmin,oupeople,dcexample,dccomManager Password你的 bind 用户密码User Search Baseoupeople,dcexample,dccomUser Search Filter((uid{0})(objectclassperson))User Full Name AttributedisplayNameEmail AttributemailUser SSH Key Attribute留空Group Retrieval选择 Search Groups Using FilterGroup Search Baseougroups,dcexample,dccomGroup Search Filter((uniqueMember{0})(objectclassgroupOfUniqueNames))Group Name AttributecnCreate User As Guest关闭OffDefault Group选择 No Default GroupTimeout300重要将表格中所有dcexample,dccom替换为你实际配置的域名。LLDAP 默认配置文件 lldap_config.docker_template.toml 中的ldap_base_dn默认值即为dcexample,dccom你可以扩展为任意数量的dc段且不要求真实拥有该域名。完成上述设置后OneDev 用户即可使用 LLDAP 中创建的用户名直接登录。逐项解读配置字段与 LLDAP 内部实现的对应关系LDAP URL 与端口LLDAP 默认监听两个端口见 server/src/configuration.rs 中的默认值定义LDAP 明文端口3890ldap_port默认值对应ldap://host:3890LDAPS 加密端口6360ldaps_options.port默认值对应ldaps://host:6360。LDAPS 不是默认开启的需要在 lldap_config.docker_template.toml 的[ldaps_options]段中设置[ldaps_options] # 是否启用 LDAPS enabled true # 监听端口 port 6360 # 证书文件路径 cert_file /data/cert.pem # 私钥文件路径 key_file /data/key.pem如果 OneDev 与 LLDAP 在同一内网且传输链路可信直接使用明文3890即可跨网络环境建议启用 LDAPS。启用 LDAPS 后OneDev 的 LDAP URL 填写ldaps://lldap_ip_or_hostname:6360。Manager DNbind 管理员账户OneDev 需要用一个有查询权限的账号执行初始 bind。LLDAP 的默认管理员由 lldap_config.docker_template.toml 中的ldap_user_dn和ldap_user_pass决定ldap_user_dn admin会创建 LDAP 用户uidadmin,oupeople,dcexample,dccom实际为cnadminLLDAP 的字段映射对uid/cn均兼容见下文ldap_user_pass为该用户的密码同时用于 LDAP bind 与管理界面登录。从源码看LLDAP 的 bind 流程位于 crates/ldap/src/password.rs 的do_bind其会调用域处理器的bind接口验证用户名密码拒绝匿名 bindAnonymous bind not allowed。因此 OneDev 的 Authentication Required 必须开启。用户搜索Search Base 与 Search FilterUser Search Baseoupeople,dcexample,dccomLLDAP 将用户统一存放在oupeople子树下每个用户的 DN 形如uiduser_id,oupeople,dcexample,dccom。该 DN 组装逻辑见 crates/ldap/src/core/user.rs。User Search Filter((uid{0})(objectclassperson)){0}是 OneDev 注入的登录用户名。LLDAP 在 crates/ldap/src/core/utils.rs 的map_user_field中将uid映射到用户主键UserColumn::UserId将objectclass映射到用户对象类同时 crates/ldap/src/core/user.rs 定义了默认用户对象类集合[inetOrgPerson, posixAccount, mailAccount, person]其中包含person因此该过滤器可以命中所有 LLDAP 用户。用户属性映射displayName、mail 与 SSH KeyUser Full Name Attribute displayNamemap_user_field中cn、displayname、display_name均映射到用户的显示名字段UserColumn::DisplayName对应 LLDAP 用户界面中的显示名称。Email Attribute mailmail以及email映射到用户邮箱字段UserColumn::Email对应 LLDAP 用户资料中的邮箱。User SSH Key Attribute 留空LLDAP 未内置 SSH Key 属性因此留空即可。若 OneDev 强制要求填写可以忽略LLDAP 的 LDAP 服务本身不强制返回该属性。组检索Search Groups Using FilterOneDev 支持从 LDAP 拉取组信息用于权限管理配置为 Search Groups Using Filter 并填写Group Search Baseougroups,dcexample,dccomLLDAP 将组统一存放在ougroups子树组 DN 形如uidgroup_name,ougroups,dcexample,dccom组装逻辑见 crates/ldap/src/core/group.rs。Group Search Filter((uniqueMember{0})(objectclassgroupOfUniqueNames)){0}同样由 OneDev 注入当前用户。LLDAP 在 crates/ldap/src/core/utils.rs 的map_group_field中uniqueMember/member映射到组成员属性返回值为组成员的完整 DNuiduser,oupeople,base_dn见 crates/ldap/src/core/group.rsobjectclass映射到组对象类默认对象类为[groupOfUniqueNames, groupOfNames]crates/ldap/src/core/group.rs其中包含groupOfUniqueNames因此过滤器可以命中所有 LLDAP 组。Group Name Attribute cn组名可通过cn、uid、displayName等属性读取均映射到组显示名GroupFieldType::DisplayName。新用户行为Create User As Guest 与 Default GroupCreate User As Guest Off新登录用户将以普通用户身份创建而非访客Guest身份便于后续在 OneDev 中授予开发权限。Default Group No Default Group不为新用户自动分配任何默认组。如果你希望自动同步 LLDAP 的组到 OneDev可以保留该默认选项依赖上面的组过滤配置。Timeout 300OneDev 与 LLDAP 之间的 LDAP 操作超时时间秒。若用户量较大或网络延迟较高可适当调大。常见问题与排查建议登录提示 bind 失败检查 Manager DN 是否写成了cnadmin之外的值。LLDAP 对 DN 的解析基于uidid,oupeople|groups,base_dn结构见 crates/ldap/src/core/utils.rs同时字段映射对uid与cn均兼容因此uidadmin,oupeople,dcexample,dccom可以正常 bind。搜索无结果确认dcexample,dccom是否全部替换为实际 base DN且用户/组确实创建在oupeople/ougroups下。LDAPS 连接失败确认已在[ldaps_options]中启用enabled true并正确配置证书与私钥路径LLDAP 启动日志会打印监听端口见 server/src/ldap_server.rs。用户能登录但组未同步确认 OneDev 的组过滤配置使用的是 Search Groups Using Filter 且过滤条件包含objectclassgroupOfUniqueNames该对象类是 LLDAP 组的默认对象类之一。配置完成后在 OneDev 使用 LLDAP 中任意已创建用户的用户名登录即可验证。更完整的配置项说明可参考 lldap_config.docker_template.toml仓库内还有大量其他应用的集成示例位于 example_configs 目录下例如 example_configs/nextcloud.md、example_configs/gitea.md、example_configs/gitlab.md 等可用于交叉验证 LLDAP 的 LDAP 行为是否符合预期。赞分享后端认证鉴权【免费下载链接】lldapLight LDAP implementation项目地址https://gitcode.com/gh_mirrors/ll/lldap点击查看免费下载相关推荐ui-ux-pro-max-skill 设计系统组件规格完全指南Button、Input、Card 等七大组件的变体、尺寸与状态规范落地ui ux pro max skill 设计系统组件规格完全指南Button、Input、Card 等七大组件的变体、尺寸与状态规范落地 本篇指南围绕 ui后端认证鉴权WeChatFerry 微信机器人从 0 到 1Hook 原理、最快跑通路径与 AI 接入完整指南WeChatFerry 微信机器人从 0 到 1Hook 原理、最快跑通路径与 AI 接入完整指南 WeChatFerry 是一款基于 Hook 技术的微信机后端认证鉴权用 tchMaterial-parser 把智慧教育平台的电子课本 PDF 批量存到本地用 tchMaterial parser 把智慧教育平台的电子课本 PDF 批量存到本地 tchMaterial parser 是一个面向国家中小学智慧教育平台后端认证鉴权上一篇3分钟掌握DamaiHelper告别抢票焦虑轻松锁定心仪演唱会门票下一篇终极Flash浏览器解决方案如何让经典Flash游戏和课件在现代电脑上完美运行创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考