深入理解 authentik 中的流程(Flows)机制
authentik The authentication glue you need. 项目地址: https://gitcode.com/gh_mirrors/au/authentik
什么是 authentik 流程
在 authentik 项目中,流程(Flows)是构建认证、授权、注册和用户设置工作流的核心组件。它通过将多个阶段(Stages)按特定顺序组合起来,形成一个完整的业务流程执行链。
流程机制采用了模块化设计思想,每个阶段代表一个独立的验证或逻辑步骤。这种设计使得系统具有极高的灵活性,管理员可以根据实际需求自由组合不同的阶段来创建定制化的工作流。
流程的基本组成
一个典型的登录流程通常包含以下几个阶段:
- 身份识别阶段:用户通过用户名或电子邮件地址标识自己
- 密码验证阶段:检查用户输入的密码是否与数据库中存储的哈希值匹配
- 登录阶段:将当前待处理的用户与当前会话关联起来
当这些阶段成功完成后,authentik 就会完成用户的登录过程。
流程执行机制
authentik 的流程执行有两个重要特点:
-
动态策略评估:默认情况下,策略会在阶段即将呈现给用户之前动态评估。这种设计使得登录过程可以根据每个策略的成功或失败而继续、改变或停止。
-
流程计划模式:通过启用阶段绑定中的"在流程规划时评估"选项,可以在流程执行时生成包含所有阶段的流程计划。这意味着所有附加策略都会在执行时统一评估。
流程权限管理
流程可以附加策略来控制访问权限。这些策略决定了当前用户是否能够查看和使用该流程。需要注意的是,在某些情况下(如尚未认证用户),策略无法针对用户和组进行匹配。
流程的导入与导出
authentik 提供了流程的导入导出功能,便于:
- 与其他管理员共享配置
- 社区交流最佳实践
- 故障排查
- 应用新功能和工作流
从 2022.8 版本开始,流程以 YAML 格式导出,但仍支持导入 JSON 格式的流程。
创建自定义流程
创建自定义流程的步骤如下:
- 以管理员身份登录 authentik 管理界面
- 导航至"流程与阶段 → 流程"
- 点击"创建"按钮,配置流程参数后完成创建
创建流程后,可以:
- 将特定阶段绑定到流程
- 为流程附加策略
- 进一步定制用户的登录和认证过程
流程配置选项详解
创建或编辑流程时,可配置以下选项:
基本信息
- 名称:在管理界面中显示的描述性名称
- 标题:终端用户在遇到流程时看到的标题
- Slug:流程使用时出现在URL中的标识符
流程用途
流程需要指定单一用途,可用选项包括:
- 认证
- 授权
- 注册
- 用户设置等
认证设置
可配置流程的认证要求:
- 是否需要初始认证
- 用户是否必须是超级用户
- 是否只能通过重定向阶段启动
- 是否需要外部站点
行为设置
-
兼容模式:
- 增强与密码管理器和移动设备的兼容性
- 解决某些浏览器对DOM API的支持问题
- 特别建议在移动设备访问时启用
-
拒绝操作:
- 配置当策略拒绝访问时的行为
- 可设置为显示消息、重定向或混合行为
-
策略引擎模式:
- 可配置为"任一策略通过即成功"或"所有策略必须通过"
外观设置
-
布局:
- 可选择堆叠元素、左右内容或侧边栏布局
-
背景:
- 可自定义流程UI的背景图像
- 会覆盖品牌设置中的默认背景
最佳实践建议
- 对于简单需求,优先考虑使用系统提供的默认流程
- 创建自定义流程时,先规划好需要的阶段序列
- 移动端应用建议启用兼容模式
- 复杂的访问控制建议使用流程计划模式
- 定期导出重要流程作为备份
通过合理配置 authentik 的流程机制,管理员可以构建出既安全又用户友好的认证授权体系,满足各种复杂的业务场景需求。
authentik The authentication glue you need. 项目地址: https://gitcode.com/gh_mirrors/au/authentik
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考