跳转到内容

账户删除

查看 Markdown

Sudomimus 用户可以随时通过 with.sudomimus.com 的隐私视图永久删除账户。本页面向已经集成 Sudomimus 的应用开发者,说明账户删除后应用会看到什么,以及应当如何处理。

面向用户的流程本身——包括确认步骤与政策文本——属于 隐私政策 的一部分。

在准入和刷新阶段,已删除账户的处理方式与停用账户类似。两者使用不同的错误符号,而且删除状态不可逆。

调用时机 收到的错误 HTTP / OIDC 映射
Connect POST /redeem AccountDeleted 403 Forbidden
Session API POST /refresh AccountDeleted 403 Forbidden
Native API POST /direct-issue/steam-ticket AccountDeleted 403 Forbidden
Native API POST /direct-issue/access-key AccountDeleted 403 Forbidden
Session GET /userinfo 或 GET /claim-state invalid_token 401 Unauthorized
Session POST /introspect status: "revoked" 200 OK
OIDC API POST /token(auth-code) invalid_grant — “Account is deleted” 400
OIDC API POST /token(refresh-token) invalid_grant — “Account is deleted” 400
OIDC API GET /userinfo invalid_token — “Account is deleted” 401

AccountDeleted 是 AccountDisabled 的永久版本。已经签发的访问令牌在 exp 之前仍可能通过离线签名和过期时间校验,但 Sudomimus 的实时端点会拒绝它,或把会话报告为已撤销。应用看到上述任一结果后,都应立即结束本地会话。

处理方式与 AccountDisabled 基本相同,但有一处重要区别:不要显示「账户已暂停,请联系支持」之类的提示。账户删除是用户主动执行的操作,应用应清除本地会话,并在用户需要时引导其重新注册。

简单的处理流程:

flowchart TD
    Deleted["POST /refresh 失败<br/>AccountDeleted"] --> Clear["清除本地 access cookie<br/>和 SDK 状态"]
    Clear --> SignedOut["显示已登出页面"]
    SignedOut -. 可选 .-> SignUp["提供重新注册入口<br/>发起全新的 POST /establish 流程"]

应用不应执行以下操作:

  • 不要重试——该符号是终态,不是瞬态错误。
  • 不要替用户自动重建账户。重新注册必须是用户的主动行为。
  • 不要假设用户此前的数据可以延续。即使使用同一邮箱重新注册,应用看到的也是全新的 subject(扇区主体,sector subject),与旧账户没有历史关联。

独自拥有仍在运行的组织会阻塞删除

Section titled “独自拥有仍在运行的组织会阻塞删除”

应用与扇区归组织所有,不属于某个个人。只要用户是某个组织的唯一活跃 OWNER,且该组织仍有运行中的资源,就无法删除账户。

  • 当你是某个组织的唯一活跃 OWNER,且它仍有已启用应用或尚未停用的扇区时,该组织会阻塞删除。下线这些资源即可解除阻塞。
  • 如果组织中还有另一位活跃 OWNER 可以继续管理资源,就不会阻塞删除。
  • 资源已全部停用的组织从不阻塞;删除时它会直接变为无主状态。

删除尝试会以 AccountOwnsLiveOrganizations 失败(映射为 HTTP 409 Conflict);响应会带上阻塞的组织的 anchor,供产品内流程精确列出需要下线的对象。

因此,通往删除的完整路径是一条「先下线、后删除」的级联:在每一个你独自拥有的组织中,先停用每个应用,再停用此时已清空的每个扇区(此时已被允许,因为它们的应用都已停用),最后才删除账户。(你也可以顺带停用该组织本身,但这对删除并非必需。)

这是有意为之。组织——以及它所拥有的应用与扇区——是承载着其他人数据的基础设施,因此 Sudomimus 不会作为某位开发者删除个人账户的副作用而静默销毁它。如果你独自拥有一个仍有存活资源的组织并计划关闭账户,请先为它安排一个下线步骤。

删除后再次注册会得到一个全新账户,即使使用同一邮箱也一样。应用会看到新的扇区主体;偏好、登录方式、声明授权和会话都不会延续。

从应用视角看,这与全新用户没有区别。以 subject 为主键的本地数据存储应将新旧账户视为互不相关。