认证体系总览
先理解这套认证在做什么
敲门 knock 的认证目标,不是只做一个“后台登录页”,而是把外部访问入口真正变成一扇门。
访问者通常会经历这几个阶段:
- 常规登录先通过人机验证
- 再使用
TOTP或Passkey完成身份认证 - 如果启用了外部账号登录,也可以跳转到第三方提供商完成授权
- 登录成功后创建会话
- 再根据
系统设置 → 凭据里的“登录后 IP 授权”策略,决定是否给当前 IP 自动授权
因此,这套认证体系本质上同时管理了 3 件事:
- 你是谁
- 你当前是否有有效会话
- 你的当前出口 IP 是否应被信任
人机验证通常是第一步
很多人第一次看文档时会把注意力全放在 TOTP 和 Passkey 上,但常规登录页的真实第一步是:
- 先完成人机验证
只有验证码通过后,后面的:
TOTPPasskey 一键登录
才会继续展开。
如果你启用了 外部账号登录,登录页还会出现 使用 Google 登录、使用 GitHub 登录 这类按钮。这条路径会跳转到第三方提供商完成授权,成功后仍然回到 fknock 的同一套会话与 IP 授权逻辑。
当前可选的人机验证方案见:
三类主要登录凭据
TOTP
TOTP 是基础凭据,也是第一次部署时必须优先配置的能力。
你可以把它理解为:
- 用身份验证器 App 每 30 秒滚动生成一次 6 位验证码
- 管理员登录时输入验证码即可完成验证
详细说明见:
Passkey
Passkey 是建立在 TOTP 之上的便捷登录方式。
你可以把它理解为:
- 在支持的设备上,用生物识别或系统安全模块完成“一键登录”
- 适合作为自己常用设备的长期登录方式
但它不是 TOTP 的替代品,而更像更顺手的补充。
详细说明见:
外部账号登录
外部账号登录支持把 Google、Microsoft、GitHub 或自定义 OIDC 账号绑定到某个 TOTP。
你可以把它理解为:
- 用第三方账号完成授权
- 授权成功后,系统找到它绑定的 TOTP
- 再按同一套会话、白名单和有效期策略完成登录
它同样不是 TOTP 的替代品,而是另一种绑定在 TOTP 下的快捷登录方式。
详细说明见:
登录成功后会发生什么
登录成功会同时触发以下动作:
- 记录登录日志
- 创建登录会话
- 按当前会话策略生成、跳过或更新自动 IP 授权记录
- 如果当前 TOTP 尚未绑定 Passkey,可能会提示你在当前设备上绑定
如果你使用的是外部账号登录,登录日志和事件中心里会把认证方式记录为 OIDC,并尽量显示对应提供商名称;会话和自动白名单的后续行为仍和 TOTP / Passkey 登录一致。
其中最容易被忽略的是第 3 点。
这一步现在不再只有一种固定行为。
常见策略有:
跟随会话:当前 IP 会跟着这次登录一起获得授权不自动白名单IP:只保留浏览器会话,不额外给 IP 放行自定义:给当前 IP 签发固定时长授权,主动退出登录时仍会立即撤销
如果你处在直连模式里,这又意味着:
- 你后续能否继续访问,很大程度上取决于当前出口 IP 是否还保持不变
登录成功后的 toolbar 小组件
这是一项最近很值得单独认识的新体验。
在下面两种模式里:
反代模式子域模式
当你已经登录成功,并进入需要认证的业务页面后,页面右下角默认会出现一个小型 toolbar 小组件。
它主要解决的是:
- 不必每次都退回首页再找别的应用
- 已登录状态下可以更方便地切换当前接入的服务
- 需要离开时也可以直接从这里退出登录
这个小组件能做什么
点击后会展开一个小菜单。
在 反代模式 下,它通常会列出:
- 你当前配置的各个路径应用
在 子域模式 下,它通常会列出:
- 你当前配置的各个业务子域
你可以直接从这里切换应用。
默认出现在哪里
默认会出现在:
- 屏幕右下角
能不能挪位置
可以。
它支持拖动到屏幕四个角落:
- 左上
- 右上
- 左下
- 右下
拖过去之后,位置会被记住,下次打开页面时会继续沿用。
能不能直接退出登录
可以。
展开菜单后,点击:
Logout
就可以直接退出当前登录;页面还会先弹出一次确认,避免误触。
记住我 的真实含义
登录页里的 记住我 不是一个单纯的界面偏好,而是会改变登录有效期。
- 默认不勾选时:登录会话通常约
24 小时 - 默认勾选时:可延长到约
1 年 - 这两个默认值现在都可以在
系统设置 → 凭据里调整 - 如果当前使用的是
跟随会话,对应的登录后 IP 授权也会一起延长 - 新时长只会影响之后新创建的登录会话
建议只在自己的可信设备上使用。
退出登录会发生什么
退出登录时,系统会:
- 清理当前登录会话
- 清理当前登录生成的自动 IP 授权(如果有)
如果你之前还有手动添加的白名单,那些手动记录不会因为退出登录而消失。
认证相关的几个页面分别负责什么
| 页面 | 作用 |
|---|---|
| 验证码设置 | 讲登录页先做人机验证,以及 PoW 和 Turnstile 怎么选 |
| Cloudflare Turnstile 启用指南 | 讲 Cloudflare 的 site_key、secret_key、hostname 和 widget 创建流程 |
| TOTP 与密码器 App | 讲 TOTP 是什么、怎么绑、该装什么身份验证器 |
| Passkey | 讲 Passkey 是什么、什么时候值得绑定、绑定后有哪些边界 |
| 外部账号登录 | 讲 Google、Microsoft、GitHub 和自定义 OIDC 怎么配置、绑定与登录 |
| 会话管理与 IP 轨迹 | 讲当前在线会话、踢出会话和 IP 漂移轨迹 |
| 日志、会话与安全防护 | 讲登录日志、会话、异常登录退避和扫描防护 |
| IP 白名单 | 讲登录后 IP 授权、手动白名单和直连模式里的放行关系 |
建议的配置顺序
如果你是第一次部署,建议这样走:
- 先绑定 TOTP
- 确认至少有一个可正常使用的身份验证器
- 再给自己的常用设备绑定 Passkey
- 如有需要,再配置外部账号登录并绑定到对应 TOTP
- 最后再决定是否使用
记住我
这样可以同时兼顾:
- 可恢复性
- 日常体验
- 安全边界
