认证、会话与服务范围
fn-knock 的认证用于保护网关后的服务,不等同于 Docker 或 OpenWrt 管理面板的访问密码。前者决定访问者能否通过网关;后者只保护管理后台入口。
一次登录会经过什么
对于非本地来源的受保护服务,通常会经过以下步骤:
- 网关按映射规则判断该服务是否需要认证。
- 登录页执行已启用的人机验证。
- 按登录模式完成身份验证。
- 创建会话,并按会话设置决定是否授予当前 IP。
- 访问 Host 时再检查该凭据的服务范围。
局域网、回环和其他私网来源默认属于本地豁免,不会完整经历上述流程,凭据的服务范围也不会用于限制它们。公网验证请使用真实外部网络。
登录回跳被暂停时
认证页检测到目标指回当前验证页、同一目标持续循环或回跳地址不安全时,会暂停自动跳转并显示提示。此时不要反复刷新认证页;回到原始业务 Host 重新发起访问,再依次检查认证 Host、根域与 Cookie 作用域、访问协议,以及前置代理传递的 Host、X-Forwarded-Host 和 X-Forwarded-Proto。边缘平台不应缓存登录或重定向响应。
登录模式
| 模式 | 可用方式 | 适合场景 |
|---|---|---|
TOTP 登录模式 | TOTP;已绑定时可使用 Passkey 和外部账号 | 个人使用、需要硬件或生物识别快捷登录 |
账号密码登录模式 | 用户名和密码 | 多人使用、需要独立账号 |
两种模式在 认证配置 中切换。切换前,系统会检查必要的密码或 TOTP 是否已准备好;切换后,未启用方式创建的会话需要重新登录。
凭据与权限的关系
- TOTP 是一个可命名的身份凭据,可限制其可访问的子域;关联的 Passkey 和 OIDC 登录会继承该范围。
- 账号密码模式中的账号同样可以配置服务范围。
- 对
要求登录的 Host,有效手动来源授权可独立放行;登录后自动创建的 IP 授权通常允许同一来源继续访问。自动授权不会覆盖浏览器中已携带的服务范围拒绝;没有可用来源授权时,网关才按会话和凭据范围继续判断。 - 登录后的自动 IP 授权由
系统设置 → 会话控制。它是来源 IP 的放行路径,不是凭据范围控制;手动白名单过宽时,该来源无需浏览器登录也可能直接进入受保护 Host。 - 服务范围受限的登录凭据不会创建自动 IP 授权,以免来源 IP 授权扩大该凭据的服务范围。这包括受限的 TOTP、其关联 Passkey / OIDC,以及受限服务范围的账号密码账号;它们不适合用作直连模式的自动放行凭据。
管理面板密码不是网关登录
Docker、OpenWrt 等部署会先要求设置管理面板密码。这个密码保护的是 7991 管理入口;它不会自动成为访问者登录网关服务的账号,也不会替代 TOTP 或账号密码认证。
推荐顺序
- 设置一种主登录方式,并准备至少一个备用凭据。
- 为需要隔离的人员或设备建立独立凭据。
- 给每个凭据设置可访问的子域范围。
- 再给常用设备绑定 Passkey,或配置外部账号登录。
- 最后调整会话时长、
记住我和登录后 IP 授权策略。
