ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

将 Gogs 接入 LLDAP:Simple Auth 与 Bind DN 两种 LDAP 认证配置实战

将 Gogs 接入 LLDAP:Simple Auth 与 Bind DN 两种 LDAP 认证配置实战 后端认证鉴权【免费下载链接】lldapLight LDAP implementation项目地址https://gitcode.com/gh_mirrors/ll/lldap点击查看免费下载本篇指南基于 LLDAP 官方示例 example_configs/gogs.md 整理面向需要为自建 Gogs 代码托管服务接入轻量 LDAP 目录LLDAP做统一登录的运维与开发者。读完本文你将掌握两条完整可落地的接入路径通过 Gogs 管理后台的「LDAP (Simple Auth)」向导式配置以及通过conf/auth.d/*.conf文件进行 Bind DN 方式的高级配置并理解 LLDAP 默认端口3890/6360、目录结构oupeople、ougroups与只读绑定账号权限lldap_strict_readonly等关键背景保证配置一次通过。LLDAP 侧的准备工作理解目录结构与默认端口在动手配置 Gogs 之前先确认 LLDAP 服务端的三个事实它们直接决定 Gogs 表单里要填的值。端口LLDAP 默认在3890端口提供未加密的 LDAP 服务在6360端口提供 LDAPS 服务。这两个默认值可以在源码中确认server/src/configuration.rs 中ldap_port默认3890server/src/configuration.rs 中 LDAPSport默认6360同时 server/src/cli.rs 也注明 CLI 参数--ldap-port默认 3890、server/src/cli.rs 中--ldaps-port默认 6360且都可通过LLDAP_LDAP_PORT、LLDAP_LDAPS_OPTIONS__PORT环境变量覆盖。注意这是 LLDAP 的刻意选择与标准 LDAP 的 389/636 不同务必以你自己的config.toml或 docker compose 端口映射为准不要想当然填 389 或 636。目录结构LLDAP 的用户统一放在oupeople,base_dn组统一放在ougroups,base_dn这是 README.md 明确说明的布局。默认 base DN 为dcexample,dccom因此用户bob的完整 DN 是cnbob,oupeople,dcexample,dccom组family在cnfamily,ougroups,dcexample,dccom。权限组LLDAP 预置三个内置权限组服务启动时自动创建见 server/src/main.rslldap_admin管理组拥有 Web UI 全部权限、lldap_password_manager可改他人密码、lldap_strict_readonly严格只读。权限判定逻辑在 crates/access-control/src/lib.rs用户按「lldap_adminlldap_password_managerlldap_strict_readonly 普通用户」的顺序匹配取权限。强烈建议为 Gogs 这类下游服务单独创建绑定账号并加入lldap_strict_readonly而不是把 LLDAP 的admin密码交给 Gogs以避免把完整管理权限暴露给单一服务。方式一Simple Auth推荐管理后台图形化配置这是最简单、最适合不熟悉 LDAP 的用户的路径全程在 Gogs 的 Web 管理界面完成。操作入口登录 Gogs 管理员账号 → 进入Administration管理后台→ 选择Authentication认证→ 点击添加认证源。各字段填写要点认证类型Type选择LDAP (Simple Auth)。认证源名称Name任意起名例如lldap仅用于在 Gogs 后台区分多个认证源。安全协议Security ProtocolLLDAP 只兼容两个选项——LDAPS需要先在 LLDAP 配置中启用 LDAPS见下文和Unencrypted明文。Gogs 界面里的 StartTLS 等选项与 LLDAP 不兼容不要选。主机HostLLDAP 服务器的 IP 或 FQDN如果你配置了 DNS。端口Port以你的实际配置为准。一般规律是未加密用3890LDAPS 用6360——但务必回查你的config.toml或 docker compose 端口映射因为端口可能被改过或做了映射。用户 DNUser DN必须遵循uid%s,oupeople,your_base_dn的格式%s会被 Gogs 替换为登录用户名。例如 base DN 为dcexample,dccom时填uid%s,oupeople,dcexample,dccom。用户过滤器User Filter推荐((objectClassperson)(uid%s))。注意这里用uid%s而用户 DN 里也用uid%s是可行的——DN 用于建立绑定上下文过滤器用于定位用户条目二者由 Gogs 分别独立使用。用户名属性Username Attributeuid。名字属性Given NamegivenName。姓氏属性Surnamesn。邮箱属性Emailmail。其余字段如果你不熟悉 LDAP其余字段如 Bind DN、Bind Password、Admin Filter、组成员过滤等建议全部留空。留空时 Gogs 会直接用用户自己提供的凭据做绑定验证行为最接近「Simple Auth」语义。启用 LDAPS 的前提LLDAP 侧需在 lldap_config.docker_template.toml 的[ldaps_options]中设置enabledtrue并配置cert_file/key_file对应环境变量LLDAP_LDAPS_OPTIONS__ENABLED、LLDAP_LDAPS_OPTIONS__PORT、LLDAP_LDAPS_OPTIONS__CERT_FILE、LLDAP_LDAPS_OPTIONS__KEY_FILE见 server/src/cli.rs否则 Gogs 连接 LDAPS 端口会失败。方式二Bind DN配置文件方式更精细的权限控制当需要把 LDAP 绑定凭据、搜索范围、管理员判断逻辑等全部固化在 Gogs 侧、或想用独立只读账号而非用户自己的账号执行搜索时采用 Bind DN 方式。以下配置改编自 Gogs 官方仓库conf/auth.d/ldap_bind_dn.conf.example在 Gogs 容器内该文件应放在conf/auth.d/some_name.conf例如$ cat /srv/git/gogs/conf/auth.d/ldap_bind_dn.conf id 101 type ldap_bind_dn name LDAP BindDN is_activated true is_default true [config] host ldap.example.com port 6360 # 0 - Unencrypted, 1 - LDAPS, 2 - StartTLS security_protocol 1 # You either need to install the LDAPS certificate into your trust store - # Or skip verification altogether - for a restricted container deployment a sane default. skip_verify true bind_dn uidbinduser,oupeople,dcexample,dccom bind_password yourPasswordInBackticks user_base dcexample,dccom attribute_username uid attribute_name givenName attribute_surname sn attribute_mail mail attributes_in_bind false # restricts on the user_base. filter ((objectClassperson)(uid%s)) # The initial administrator has to enable admin privileges. # This is only possible for users who were logged in once. # This renders the following filter obsolete; Though its response is accepted by Gogs. admin_filter (memberOfcnyourAdminGroup,ougroups,dcexample,dccom)逐项说明顶层字段id、type ldap_bind_dn、name、is_activated、is_default是 Gogs 认证源注册信息其中id在 Gogs 内部需唯一。host/portLLDAP 地址与端口含义同方式一未加密3890、LDAPS6360。security_protocol取值含义已写在注释里——0未加密、1LDAPS、2StartTLS。LLDAP 仅支持前两者。skip_verify true跳过 LDAPS 证书校验。若你的 LLDAP 证书未安装进 Gogs 容器的系统信任库这是受限容器部署下省去证书管理的务实默认若已把证书装进信任库可改为false以启用完整校验。bind_dn/bind_passwordGogs 用这对凭据先绑定 LLDAP 完成搜索授权。bind_dn指向你为集成创建的专用账号格式为uidbinduser,oupeople,base_dn。注意密码用反引号包裹这是 Gogs 配置文件的约定避免特殊字符被解析。user_base搜索根通常就是 base DN如dcexample,dccom。attribute_username uid、attribute_name givenName、attribute_surname sn、attribute_mail mail把 LLDAP 用户的属性映射为 Gogs 的用户名字段。attributes_in_bind false不把用户属性作为绑定参数参与绑定。filter((objectClassperson)(uid%s))限定搜索范围为user_base%s为登录用户名。admin_filter(memberOfcnyourAdminGroup,ougroups,dcexample,dccom)命中该过滤器的 LLDAP 用户在 Gogs 中成为管理员。注释中的说明值得注意——Gogs 的初始管理员必须先登录一次才能授予管理权限因此该过滤器的实际作用有限Gogs 仍会接受它的响应保留它可以作为后续管理员的判断依据。两个关键注意点绑定账号必须属于lldap_strict_readonly文中示例的binduser应是 LLDAP 中创建的专用账号并加入lldap_strict_readonly组。这样 Gogs 只能读取目录做认证无法通过这个账号修改任何用户数据。这正对应 README.md 的官方建议大多数 LDAP 集成应使用lldap_strict_readonly或lldap_password_manager组的用户避免把完整管理权限授予外部服务。yourAdminGroup按需替换尖括号只是便于阅读的占位符实际填写时要去掉如果不需要管理员映射整行admin_filter可以直接省略。端口与安全协议核对清单由于「端口写错」是接入失败最常见的原因这里把核对动作固化成一个清单查看 LLDAP 的config.toml或 Docker 环境变量ldap_port/LLDAP_LDAP_PORT决定未加密端口默认 3890[ldaps_options] enabled与port/LLDAP_LDAPS_OPTIONS__PORT决定 LDAPS 端口默认 6360。若 LLDAP 跑在 Docker 里还要核对 docker compose 的端口映射例如3890:3890的左侧宿主机端口Gogs 连接的是宿主机暴露出来的端口。官方 Docker 镜像在 Dockerfile 中声明ENV LDAP_PORT3890。在 Gogs 侧填写端口后建议先在 LLDAP 所在主机上用ldapsearch或 Gogs 后台的测试按钮验证连通性再保存认证源。版本与兼容性说明本文档描述的配置方案已在Gogs v0.14dev上实测通过测试环境为podman 4.3.1见 example_configs/gogs.md。由于 LLDAP 刻意保持轻量、并非完整功能 LDAP 服务器README.md 也提醒 LDAP 浏览工具类服务通常不受支持如果你的 Gogs 版本较新或较旧字段名与conf/auth.d目录约定可能略有差异建议以你所用 Gogs 版本的官方文档为准核心的 DN、过滤器与属性映射逻辑不受影响。赞分享后端认证鉴权【免费下载链接】lldapLight LDAP implementation项目地址https://gitcode.com/gh_mirrors/ll/lldap点击查看免费下载相关推荐Apache APISIX ldap-auth-advanced 插件实战基于 search-then-bind 的 LDAP 身份认证Apache APISIX ldap auth advanced 插件实战基于 search then bind 的 LDAP 身份认证 本指南以 ApachAPI网关后端云原生微服务OpenCore Legacy Patcher 老 Mac 装新系统OpenCore Legacy Patcher 老 Mac 装新系统 2013 年的 MacBook Pro 打开软件更新弹出此 Mac 型号不再受支持后端认证鉴权Gogs LDAP 认证实现解析BindDN 与 Simple Auth 双模式、完整配置参考与源码原理Gogs LDAP 认证实现解析BindDN 与 Simple Auth 双模式、完整配置参考与源码原理 本篇基于 Gogs 仓库中 LDAP 认证模块说明文后端代码托管上一篇MDUT跨平台数据库安全利用工具技术架构深度解析下一篇fast-colors generateOffCenterPalette() 深度指南以输入色为中心的非对称色板生成创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表