菜单

用户管理和认证

相关源文件

本文档解释了 n8n 如何管理用户、身份验证和授权。它涵盖了用户创建、身份验证方法、权限模型以及用户之间的资源共享。

有关工作流权限的具体信息,请参阅项目和共享系统。有关用户信息的数据库存储,请参阅数据库和迁移

概述

n8n 提供了一个全面的用户管理系统,具有不同的身份验证方法和基于角色的权限模型。该系统支持以下功能:

  • 多种身份验证方法(电子邮件/密码、LDAP、SAML、MFA)
  • 用户邀请和入门
  • 基于角色的访问控制
  • 用户之间的资源共享
  • 团队协作

来源

用户实体和身份验证

用户管理系统的核心是 User 实体,它存储用户信息并链接到身份验证方法。用户可以处于不同的状态,例如活动、待定(已邀请但尚未设置)或禁用。

用户类型和状态

  • 所有者:实例所有者,拥有所有功能的完全访问权限
  • 管理员:具有提升权限的管理员用户
  • 成员:权限有限的普通用户
  • 待处理用户:已邀请但尚未完成设置的用户
  • Shell 用户:没有个人信息的占位符用户

来源

认证方法

n8n 支持多种身份验证方法,这些方法可以根据配置启用或禁用。

  1. 电子邮件/密码:标准的用户名和密码身份验证
  2. LDAP:目录服务集成
  3. SAML:企业 SSO 集成
  4. 多因素身份验证 (MFA):使用基于时间的一次性密码 (TOTP) 的附加安全层
  5. API 密钥:API 访问身份验证

来源

用户管理操作

用户管理系统提供各种操作来创建、更新和删除用户,以及管理他们的权限。

用户创建和邀请

新用户通常是通过邀请创建的。邀请过程包括:

  1. 现有用户(拥有相应权限)通过电子邮件邀请新用户
  2. 在待定状态下创建用户 shell
  3. 被邀请者会收到一封包含注册链接的电子邮件
  4. 被邀请者设置他们的账户(姓名、密码)

来源

用户配置文件管理

用户可以通过 MeController 管理自己的个人资料,该控制器提供以下端点的支持:

  • 更新个人信息
  • 更改密码
  • 设置 MFA
  • 更新偏好设置

来源

用户管理

管理员操作由 UsersController 处理,该控制器允许:

  • 列出/筛选用户
  • 删除带有资源转移的用户
  • 更改用户角色
  • 生成密码重置链接

来源

权限和授权系统

n8n 通过作用域(scopes)实现了基于角色的访问控制(RBAC)系统,提供细粒度的权限。

角色和作用域层级

权限系统包括:

  1. 全局角色:实例范围内的角色(所有者、管理员、成员)
  2. 项目角色:项目内的角色(所有者、管理员、编辑者、查看者)
  3. 资源角色:特定于工作流和凭证等资源的角色
  4. 作用域:分配给角色的精细权限

来源

授权流程

授权系统使用中间件和装饰器来保护路由和检查权限。

来源

资源共享和转移

n8n 允许通过项目在用户之间共享和转移资源(工作流和凭证)。

共享工作流和凭证

资源可以与特定的权限共享

来源

用户删除和资源转移

删除用户时,其资源可以被

  1. 与用户一同删除
  2. 转移到另一个用户的个人项目中
  3. 转移到团队项目中

来源

API 路由和控制器

用户管理和认证系统围绕几个关键控制器组织

认证控制器

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: 关闭横幅

来源

多因素认证 (MFA)

n8n 支持使用基于时间的一次性密码 (TOTP) 进行多因素认证

MFA 设置和使用

来源

结论

n8n 的用户管理和认证系统为管理用户、权限和资源共享提供了全面的解决方案。该系统足够灵活,可以支持各种身份验证方法,同时通过基于角色的权限和范围来维护安全的访问控制。

该实现采用了基于项目的模型,用户可以属于具有不同角色的不同项目,资源由项目拥有,而不是直接由用户拥有。这种架构支持个人使用和团队协作。

来源