账户与凭据
Sudomimus 将账户身份、认证凭据与邮箱所有权保存在不同的记录中。这套模型由 Connect、OIDC 与原生 direct-issue 共同使用。
| 记录 | 表示什么 |
|---|---|
| Account | 用户本人:稳定的内部记录与个人资料,不直接携带邮箱字段。 |
| Authentication | 账户可使用的一项登录凭据,例如邮箱验证码、通行密钥、Steam 身份、OAuth 身份或企业联合身份。 |
| EmailIdentity | 账户拥有的一封已验证邮箱。每条记录会保存验证来源,且最多一封被标记为主要邮箱。 |
为什么要拆开
Section titled “为什么要拆开”凭据证明的是这个人如何登录;邮箱身份记录证明的是这个人拥有哪封邮箱。两者有关联,但不是同一个事实。
例如:
- 通过邮箱验证码注册时,会同时创建邮箱登录凭据与已验证邮箱身份。
- Google、GitHub 或 Discord 登录可以建立邮箱所有权,但不会自动把邮箱验证码注册成新的登录方式。
- 纯 Steam 账户可以正常登录,同时完全没有已验证邮箱。
- 删除一种登录方式本身不会改写账户的邮箱所有权记录。
这样,平台可以分别判断允许的登录方式、基于邮箱的准入规则与令牌声明,而不需要把某一张凭据表当成所有身份事实的来源。