身份与账户 #

每一个 Matrix 身份都是一个 Matrix 用户 ID(MXID),格式是:

@本地名:服务器名

比如:

@alice:your-name.hagency.cloud
  • @ 是 前缀符号(sigil),表示这是一个用户。其他前缀还有 ! 代表房间、# 代表房间别名、$ 代表事件(详见下)。
  • 本地名(localpart)——在一台主机服务器内部的账户名。协议规范允许的字符是 [a-z0-9._=-],老账户里可能出现 /,总长度上限 255 字符。大小写一般保留但比较时不区分。
  • 服务器名(server-name)——主机服务器的 DNS 名称。两台不同服务器上的同名本地名是完全不同的两个人。

MXID 是永久的。你的 显示名(人类友好的名字,如"Alice Chen")和 头像 可以随时修改;MXID 不能。这在用户之间相互验证身份时很关键——你验证的是 MXID,不是显示名,因为显示名容易伪造。

Matrix 前缀符号 #

Matrix 用四种前缀字符区分标识符的种类:

前缀含义示例
@用户(账户)@alice:your-name.hagency.cloud
!房间(内部 ID)!AbCdEfGhIjKlMn:server
#房间别名(人类友好名字)#general:your-name.hagency.cloud
$事件(消息、反应等)$event_hash:server

内部房间 ID(!…)是不透明的且永久唯一。房间别名(#general:server)只是一个 指向 某个房间 ID 的人类友好指针;同一个房间可以有多个别名,管理员可以随时修改。

第三方标识符(3PIDs) #

你还可以给 Matrix 账户绑定一些"外部"标识:邮箱、手机号,以及(历史遗留的)Microsoft / Google 账户。这些 3PID 让别人即便不知道你的 MXID,也可以通过邮箱或电话号码找到你。绑定信息保存在一个 身份服务器 里(Hagency 自带一台),随时可以解绑。

查找流程 #

  1. Alice 想把 bob@example.com 邀请到一个房间。
  2. 她的客户端问身份服务器:"这个邮箱绑定了 Matrix 账户吗?"
  3. 如果有,身份服务器返回 Bob 的 MXID,客户端就直接发邀请。
  4. 如果没有,客户端可以改发一封邮件邀请——Bob 点开链接后会被引导去创建或登录 Matrix 账户并认领这个邀请。

3PID 查找是 opt-in 的:你必须显式绑定这个 3PID 才会被发现。很多 Matrix 用户只有一个本地名,完全匿名运行,从来不碰 3PID。

隐私 #

身份服务器是一个典型的隐私权衡。绑定后你获得可发现性,但也"广播"了"这个 3PID 属于 Matrix 用户"这一事实。Hagency 的身份服务器按工作区隔离——外部服务器无法枚举你的工作区。如果你不在乎被人用邮箱找到,干脆别绑。

设备 ID #

当你从一个新客户端(笔记本、手机、平板、服务端机器人)登录时,主机服务器会给这个会话分配一个 设备 ID(例如 WOXXHRVJKP)。一个 MXID 可以同时拥有很多设备 ID,每个你登录过的地方对应一个。

  • 每个设备都有自己的 access token。
  • 每个设备都有自己的 设备密钥,用于端到端加密(详见 端到端加密)。
  • 你可以在客户端的安全设置里列出和注销设备,或者在 Hagency 仪表板的 Matrix 用户面板里做同样的事。
  • 在某台设备上登出只注销那一台。你也可以一键"登出所有会话"——在你怀疑某处被攻陷时特别有用。

设备是 E2EE 信任的基本单位:当有人验证"Alice"时,实际验证的是 Alice 的跨签名密钥,而跨签名密钥又为 Alice 所有设备背书。新设备加入后需要重新被验证(或者通过跨签名自动继承信任,这个我们在加密那一章里讲)。

Hagency Server 的首位用户 #

Hagency Cloud 平台账户与 Hagency Server 账户相互独立。创建服务器后,打开 /auth/ 账号中心并注册首位管理员。该账户使用自己的登录凭据,并拥有服务器上的 Matrix ID。

自定义 Matrix 身份域名需在创建服务器用户前设置。如需通过 Hagency Cloud 管理用户与房间,请在服务器设置中授权平台管理。后续用户可以通过管理工具创建,或在开放注册后自行注册。

下一步 #

  • 端到端加密——设备密钥如何成为 E2EE 信任的基本单位
  • 架构——保存你账户的主机服务器
  • 客户端——挑一个应用登录