跳到正文

外部账号登录(OIDC / OAuth / LDAP)

外部账号登录把 QQ、Google、Microsoft、GitHub、兼容 OIDC 的身份提供商,或 LDAP / Active Directory 目录账号绑定到一个 TOTP 凭据。它只在 TOTP 登录模式 下可用;登录成功后仍使用 fn-knock 的会话、服务范围和登录后 IP 授权策略。

OIDC / OAuth 由浏览器跳转到第三方站点完成授权;LDAP 由 fn-knock 服务端通过 LDAPS 或 StartTLS 连接目录。两者都必须先绑定到现有 TOTP,不能自动创建 fn-knock 身份。

QQ 使用内置接入

QQ 是 fn-knock 的内置公共提供商,不需要注册 QQ 应用,也不需要填写 Client ID、Client Secret、Issuer 或手工登记 Callback URL。添加后仍要为每个使用者把 QQ 账号绑定到目标 TOTP 凭据。

完整的前提、绑定邀请、回调要求与撤销方式见绑定 QQ 快捷登录

Google、Microsoft、GitHub 与自定义 OIDC

  1. 确认认证 Host 已配置为可从公网访问的 HTTPS 地址。
  2. 在认证配置顶部操作菜单的 OIDC 配置 中添加提供商。
  3. 将 fn-knock 显示的 Callback URL 原样填入第三方提供商的回调地址列表。
  4. 填入提供商要求的 Client ID、Client Secret;Microsoft 可指定 commonorganizations 或租户 ID,自定义 OIDC 还需要 Issuer。
  5. 检查 Scopes。输入支持空格或逗号分隔,至少保留提供商完成身份识别所需的 openid 及必要用户信息范围。
  6. 在目标 TOTP 凭据的 管理快捷登录 → 外部账号绑定 中生成邀请,完成授权绑定。
  7. 用无痕窗口从登录页验证,再检查该 TOTP 的服务范围。

Callback URL 必须使用访问者实际可见的认证 Host。localhost、容器名、内网 IP 或错误端口会导致第三方提供商拒绝回调。QQ 的动态回调由系统处理,不适用本段的手工登记步骤。

一般提供商在必填连接参数完整时创建为启用状态;缺少参数时会保存为 待配置 草稿。编辑时 Client Secret 留空表示保留现值。停用提供商会隐藏或拒绝该登录入口,但保留配置以便重新启用。

LDAP / Active Directory

进入 认证配置 → OIDC 配置,在 LDAP / Active Directory 提供商 中添加 OpenLDAP、Active Directory 或自定义 LDAP。目录连接始终验证 TLS 证书,不支持明文 LDAP;使用私有 CA 时,把签发链的 PEM 证书填入 私有 CA PEM

设置行为
服务器 URL每行一个;LDAPS 使用 ldaps://ldap.example.com:636,StartTLS 使用 ldap://ldap.example.com:389。按顺序尝试不可用的服务器
Base DN用户搜索的根 DN,例如 dc=example,dc=com
搜索后绑定先用服务账号在 Base DN 下按过滤器找到唯一用户,再用该用户 DN 和用户密码验证
直接绑定先按 {username} 模板生成 DN 或 UPN 并验证用户密码,再在 Base DN 下读取身份属性
用户过滤器必须包含 {username};输入会按 LDAP 过滤器规则转义
稳定 ID 属性用于持续识别同一目录身份;OpenLDAP 默认 entryUUID,Active Directory 默认 objectGUID

启用前先点击 测试。搜索后绑定会测试连接与服务账号;直接绑定需要输入一个目录账号完成一次性测试,测试凭据不会保存。连接超时、证书名称不匹配、私有 CA 缺失、Base DN 错误或过滤器返回零个/多个用户都会导致登录失败。

绑定目录账号

  1. 认证配置 中打开目标 TOTP 的 快捷登录
  2. 外部账号绑定 中生成邀请,选择已启用的 LDAP 提供商。
  3. 让目录账号使用者在 30 分钟内打开邀请链接,完成人机验证并输入目录用户名和密码。
  4. 返回快捷登录页确认提供商、账号、Subject 和最近使用时间,再用无痕窗口验证登录。

邀请链接会把验证成功的目录身份绑定到指定 TOTP,属于敏感授权材料。一个目录身份不能通过同一提供商同时绑定到多个 TOTP。删除绑定只移除 fn-knock 中的关联,不会修改目录账号;删除提供商会同时删除该提供商下的所有绑定。

访问范围

OIDC 和 LDAP 都不是独立管理员身份。它们继承所绑定 TOTP 的子域与协议映射范围;撤销绑定后,外部账号不能再登录,但不会删除该 TOTP 本身。删除提供商会同时移除该提供商下的外部账号绑定,执行前应确认所有使用者还有 TOTP 或其他恢复方式。

绑定邀请固定有效 30 分钟,并把完成授权的外部身份接到当前 TOTP。邀请链接属于敏感授权材料,不应放在群聊、工单或公开页面。绑定完成后,在快捷登录管理页核对提供商、账号、Subject 和最近使用时间。

常见问题

现象检查项
登录页没有外部账号入口当前必须是 TOTP 登录模式,且提供商已启用并完成必填配置
提供商拒绝回调Callback URL、HTTPS、允许的 redirect URI、域名和端口
回调后显示未绑定先在 fn-knock 中完成外部账号与 TOTP 的绑定
LDAP 显示服务不可用从 fn-knock 所在环境检查目录 DNS、端口、TLS 证书链和系统时间
LDAP 凭据正确但仍失败检查 Base DN、用户过滤器、绑定模式,以及稳定 ID 和用户名属性;搜索结果必须唯一
登录后仍被拒绝检查关联 TOTP 的服务范围和目标 Host 策略

QQ群:1081609274