本文档解释了 n8n 如何管理用户、身份验证和授权。它涵盖了用户创建、身份验证方法、权限模型以及用户之间的资源共享。
有关工作流权限的具体信息,请参阅项目和共享系统。有关用户信息的数据库存储,请参阅数据库和迁移。
n8n 提供了一个全面的用户管理系统,具有不同的身份验证方法和基于角色的权限模型。该系统支持以下功能:
来源
用户管理系统的核心是 User 实体,它存储用户信息并链接到身份验证方法。用户可以处于不同的状态,例如活动、待定(已邀请但尚未设置)或禁用。
来源
n8n 支持多种身份验证方法,这些方法可以根据配置启用或禁用。
来源
用户管理系统提供各种操作来创建、更新和删除用户,以及管理他们的权限。
新用户通常是通过邀请创建的。邀请过程包括:
来源
用户可以通过 MeController 管理自己的个人资料,该控制器提供以下端点的支持:
来源
管理员操作由 UsersController 处理,该控制器允许:
来源
n8n 通过作用域(scopes)实现了基于角色的访问控制(RBAC)系统,提供细粒度的权限。
权限系统包括:
来源
授权系统使用中间件和装饰器来保护路由和检查权限。
来源
n8n 允许通过项目在用户之间共享和转移资源(工作流和凭证)。
资源可以与特定的权限共享
来源
删除用户时,其资源可以被
来源
用户管理和认证系统围绕几个关键控制器组织
AuthController 处理用户认证和会话管理
POST /login: 认证用户GET /login: 检查用户是否已登录GET /resolve-signup-token: 验证邀请令牌POST /logout: 退出用户登录来源
几个控制器处理用户管理的各个方面
MeController:
PATCH /me: 更新当前用户PATCH /me/password: 更新密码POST /me/survey: 存储调查答案PATCH /me/settings: 更新用户设置UsersController:
GET /users: 列出所有用户GET /users/:id/password-reset-link: 生成密码重置链接PATCH /users/:id/settings: 更新其他用户的设置DELETE /users/:id: 删除用户PATCH /users/:id/role: 更改用户的角色InvitationController:
POST /invitations: 发送邀请POST /invitations/:id/accept: 接受邀请OwnerController:
POST /owner/setup: 设置实例所有者POST /owner/dismiss-banner: 关闭横幅来源
n8n 支持使用基于时间的一次性密码 (TOTP) 进行多因素认证
来源
n8n 的用户管理和认证系统为管理用户、权限和资源共享提供了全面的解决方案。该系统足够灵活,可以支持各种身份验证方法,同时通过基于角色的权限和范围来维护安全的访问控制。
该实现采用了基于项目的模型,用户可以属于具有不同角色的不同项目,资源由项目拥有,而不是直接由用户拥有。这种架构支持个人使用和团队协作。
来源