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 选项的显示名称(如 GitHub、Lark、ADFS)。 |
| 类型(User Info Mapping Type) | 是 | 选择 GitHub、Lark、ADFS 或 Custom。该字段决定 IDMP 如何获取并解析用户信息。 |
| 客户端 ID | 是 | 在 OAuth 提供商处注册的应用程序标识符。 |
| 客户端密钥 | 是 | 从 OAuth 提供商开发者控制台获取的密钥。 |
| 授权 URL | 是 | OAuth 2.0 授权端点 URL(http:// 或 https://)。 |
| Token URL | 是 | Token 交换端点 URL(http:// 或 https://)。 |
| 用户信息 URL | 非 ADFS 必填 | 获取用户档案信息的端点。ADFS 类型可留空。 |
| 回调 URL | 是 | 在 OAuth 提供商处注册的回调 URL,通常配置为 IDMP 前端登录回调页,如 https://<idmp-host>/login/back。 |
| 范围(Scope) | 否 | 请求的权限范围。ADFS 类型必须包含 openid,建议使用 openid profile email。 |
| 自定义映射规则 | Custom 时必填 | 定义 JSONPath 表达式以提取 name、email 及可选字段的 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 与自定义映射规则必填,且自定义映射规则必须包含 name 和 email。 |
14.4.3.3 自定义映射规则
当用户信息映射类型为 Custom 时,提供一个将字段名映射到 JSONPath 表达式的 JSON 对象:
{
"name": "$.username",
"email": "$.email",
"nickname": "$.display_name",
"description": "$.bio",
"phone": "$.contact.mobile"
}
支持的字段为 name、email、nickname、description 和 phone。其中 name 与 email 为必填项,其余字段为可选项。
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 URL 或 Token URL 自动推导 ADFS 的 /.well-known/openid-configuration,再读取 issuer 和 jwks_uri 拉取 JWKS,并校验 id_token 的以下内容:
- 签名
issaud(必须匹配Client ID)exp- 可选
nbf
ADFS 的用户字段映射规则是固定的:
- 邮箱:优先读取
upn,如果没有则回退到email - 显示名:优先拼接
given_name + family_name,如果缺少given_name则回退到unique_name - 昵称:读取
unique_name
14.4.3.5 OAuth 登录与自动建号
当前实现中的 OAuth 登录行为如下:
- 登录页使用配置的
authorize_url、client_id、redirect_url和scope组装授权请求。 - OAuth 提供方回调到
redirect_url后,IDMP 前端会提取code和state,再调用 IDMP 后端完成登录。 - OAuth 提供方必须返回有效的
email和name;任一缺失或邮箱格式非法,登录都会失败。 - 如果系统中已存在相同邮箱的可用用户,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 配置步骤
- 在 OAuth 提供商的开发者控制台中注册应用程序,获取客户端 ID、客户端密钥,并配置回调 URL。
- 将回调 URL 配置为 IDMP 前端登录回调页,例如
https://<idmp-host>/login/back,并确保与提供商控制台中的注册值完全一致。 - 在 IDMP 中,前往管理控制台 → 用户管理 → OAuth,点击 +。
- 选择合适的类型并填写配置:
ADFS:User Info URL留空,Scope中必须包含openidCustom:补充User Info URL和自定义映射规则
- 上传图标、分配角色并保存。
- 退出登录,验证新的登录选项是否出现在登录页面,并确认首次 OAuth 登录是否按预期复用现有账号或自动创建新账号。









