跳到主要内容

14.4 用户管理

用户管理通过管理控制台 → 用户管理访问,涵盖用户、角色和单点登录(SSO)配置。

14.4.1 用户

TDengine IDMP 使用电子邮件地址作为用户 ID。首位激活或注册系统的用户自动成为超级管理员。

14.4.1.1 邀请用户

添加新用户时,请前往管理控制台 → 用户管理 → 用户,点击右上角的 + 按钮,填写以下字段:

字段说明
邮箱新用户的电子邮件地址(用作登录 ID)
角色分配的一个或多个角色,每个角色可配置可访问的元素范围

被邀请的用户将收到一封电子邮件,其中包含设置个人信息和密码的链接。系统会先创建一个状态为已邀请的账户;用户完成激活后,账户状态才会变为已激活

用户列表显示以下信息:

说明
用户名字
用户姓氏
电话号码可选电话号码
邮箱电子邮件地址(用作用户 ID)
状态账户状态(如:已激活、已邀请)
角色已分配的角色
描述可选描述

14.4.1.2 按角色分配控制元素访问权限

为用户分配角色时,可限制该用户在该角色下可访问的元素范围。操作方式为:点击角色行的可访问元素列,打开资源配置对话框。

对话框包含两个面板:

  • 左侧面板: 完整的元素树。勾选要授权访问的顶层元素节点。勾选某节点后,用户即可访问该节点及其层级下的所有元素。
  • 右侧面板: 已选元素的实时预览。

示例: 若为用户分配数据分析师角色,并在资源配置对话框中仅勾选公用事业,则该用户只能查看和操作公用事业元素子树,对其他顶层元素(如油田)无可见性。未选中的元素在资产树中完全隐藏——不会出现在资源浏览器或任何相关仪表盘、分析或事件中。

用户可持有多个角色,每个角色有独立的元素访问配置。用户的有效元素访问权限是所有角色授权顶层节点的并集。

可供分配的内置角色:

角色典型用途
工厂经理与主管生产资产的运营监管
IT/OT 系统管理员基础设施与系统配置
维护人员设备维护与工单管理
数据分析师数据探索、仪表盘与报表
运营人员日常工厂操作
工艺工程师工艺优化与分析
超级管理员完整的系统管理权限

14.4.1.3 密码重置

任何用户均可在登录页面点击忘记密码来重置自己的密码,系统将通过电子邮件发送重置链接。只有状态为已激活的用户可以接收密码重置邮件。出于安全考虑,超级管理员无法直接替其他用户重置密码。

备注

请确保部署配置中的 tda.server-url 配置为可从外部访问的 URL 或 IP 地址。若配置不正确,被邀请的用户将无法通过邮件链接访问 IDMP。

14.4.2 角色

IDMP 使用基于角色的访问控制(RBAC)。每个角色对一种或多种资源类型授予查看、新增、删除和编辑权限。用户可持有多个角色,其有效权限为所有已分配角色的并集。

系统内置多个角色,也可在角色列表页点击 + 创建自定义角色。

角色权限涵盖的资源包括: 元素模板、AI 功能、事件模板、枚举集、分析、外部表、邮件配置、通知规则模板、仪表盘模板、数据备份、仪表盘、元素、OAuth、用户、角色、计量单位(UOM)、面板模板、数据导入等。

14.4.2.1 元素级访问控制

由于元素以树形层级组织,元素访问权限与其他权限分开控制。即使角色授予了对元素的总体访问权,每个用户的元素可见范围还会进一步限定在邀请或编辑用户时配置的特定顶层节点。

用户无法访问的元素在资产树中完全不可见——不会以折叠节点的形式出现。与不可访问元素关联的属性、分析、事件、面板和仪表盘同样被隐藏,从而实现跨团队、站点或业务单元的强数据隔离。

14.4.3 单点登录(OAuth 2.0)

IDMP 支持 OAuth 2.0 单点登录。OAuth 配置通过管理控制台 → 用户管理 → OAuth 进行管理。登录页会从后台读取已配置的 OAuth 提供方列表,并根据每个提供方的授权地址、客户端 ID、回调地址和 Scope 发起授权请求。

14.4.3.1 创建 OAuth 配置

点击 + 添加新的 OAuth 提供商,填写以下字段:

字段必填说明
图标提供商 Logo 图片,显示在登录页面。仅支持 png/jpg/jpeg/gif/webp,且文件大小必须小于 1 MB。
名称OAuth 选项的显示名称(如 GitHubLarkADFS)。
类型(User Info Mapping Type)选择 GitHubLarkADFSCustom。该字段决定 IDMP 如何获取并解析用户信息。
客户端 ID在 OAuth 提供商处注册的应用程序标识符。
客户端密钥从 OAuth 提供商开发者控制台获取的密钥。
授权 URLOAuth 2.0 授权端点 URL(http://https://)。
Token URLToken 交换端点 URL(http://https://)。
用户信息 URL非 ADFS 必填获取用户档案信息的端点。ADFS 类型可留空。
回调 URL在 OAuth 提供商处注册的回调 URL,通常配置为 IDMP 前端登录回调页,如 https://<idmp-host>/login/back
范围(Scope)请求的权限范围。ADFS 类型必须包含 openid,建议使用 openid profile email
自定义映射规则Custom 时必填定义 JSONPath 表达式以提取 nameemail 及可选字段的 JSON 对象。
角色通过该 OAuth 提供商登录的用户所分配的角色。

14.4.3.2 不同类型的处理方式

类型用户信息来源特殊要求
GitHub调用 User Info URL,再按内置 GitHub 解析逻辑提取用户信息。User Info URL 必填。
Lark调用 User Info URL,再按内置 Lark 解析逻辑提取用户信息。User Info URL 必填。
ADFS从 Token 响应中的 id_token 读取声明,并通过 OIDC 发现和 JWKS 验签。User Info URL 留空;Scope 必须包含 openid
Custom调用 User Info URL,再按自定义 JSONPath 规则提取用户信息。User Info URL 与自定义映射规则必填,且自定义映射规则必须包含 nameemail

14.4.3.3 自定义映射规则

用户信息映射类型Custom 时,提供一个将字段名映射到 JSONPath 表达式的 JSON 对象:

{
"name": "$.username",
"email": "$.email",
"nickname": "$.display_name",
"description": "$.bio",
"phone": "$.contact.mobile"
}

支持的字段为 nameemailnicknamedescriptionphone。其中 nameemail 为必填项,其余字段为可选项。

14.4.3.4 ADFS 配置要点

对于 ADFS 类型,建议按照以下方式配置:

Authorize URL: https://adfs.example.com/adfs/oauth2/authorize
Token URL: https://adfs.example.com/adfs/oauth2/token
Redirect URL: https://<idmp-host>/login/back
Scope: openid profile email

当前实现会基于配置的 Authorize URLToken URL 自动推导 ADFS 的 /.well-known/openid-configuration,再读取 issuerjwks_uri 拉取 JWKS,并校验 id_token 的以下内容:

  • 签名
  • iss
  • aud(必须匹配 Client ID
  • exp
  • 可选 nbf

ADFS 的用户字段映射规则是固定的:

  • 邮箱:优先读取 upn,如果没有则回退到 email
  • 显示名:优先拼接 given_name + family_name,如果缺少 given_name 则回退到 unique_name
  • 昵称:读取 unique_name

14.4.3.5 OAuth 登录与自动建号

当前实现中的 OAuth 登录行为如下:

  • 登录页使用配置的 authorize_urlclient_idredirect_urlscope 组装授权请求。
  • OAuth 提供方回调到 redirect_url 后,IDMP 前端会提取 codestate,再调用 IDMP 后端完成登录。
  • OAuth 提供方必须返回有效的 emailname;任一缺失或邮箱格式非法,登录都会失败。
  • 如果系统中已存在相同邮箱的可用用户,IDMP 会直接复用该账号,不会再创建新用户。
  • 如果系统中不存在该邮箱,IDMP 会自动创建一个状态为已激活的 OAuth 用户,并授予此 OAuth 配置中预先选择的角色。
  • 已删除或已禁用的用户不能通过 OAuth 登录。

14.4.3.6 可选部署配置

以下配置会影响登录页与 OAuth 的最终行为:

配置项作用
tda.sso-login-first登录页自动跳转到第一个可用的 OAuth 提供方。
tda.sso-login-silent自动跳转时附加 prompt=none,适合静默 SSO 尝试。
tda.oauth.tls-configuration-name指向 quarkus.tls.<name> 命名 TLS 配置,用于 OAuth/ADFS HTTPS 证书校验。若未配置,则使用 JVM 默认信任库和主机名校验。

如果 OAuth 或 ADFS 端点使用私有 CA 或自签名证书,可以显式指定 TLS 配置。例如:

tda:
oauth:
tls-configuration-name: oauth-client

quarkus:
tls:
oauth-client:
trust-all: true
备注

trust-all: true 仅建议用于测试环境。生产环境请改为配置受信任证书库,而不是关闭证书校验。

14.4.3.7 配置步骤

  1. 在 OAuth 提供商的开发者控制台中注册应用程序,获取客户端 ID、客户端密钥,并配置回调 URL。
  2. 将回调 URL 配置为 IDMP 前端登录回调页,例如 https://<idmp-host>/login/back,并确保与提供商控制台中的注册值完全一致。
  3. 在 IDMP 中,前往管理控制台 → 用户管理 → OAuth,点击 +
  4. 选择合适的类型并填写配置:
    • ADFSUser Info URL 留空,Scope 中必须包含 openid
    • Custom:补充 User Info URL 和自定义映射规则
  5. 上传图标、分配角色并保存。
  6. 退出登录,验证新的登录选项是否出现在登录页面,并确认首次 OAuth 登录是否按预期复用现有账号或自动创建新账号。