隐私
AM 将可识别个人信息(PII)与认证数据分离存储。这样你可以删除用户 PII,同时保留审计和合规所需的引用信息。
当用户行使被遗忘权时,删除的是身份信息,而不是你证明该用户存在过的能力。
数据分离
┌─────────────────────────────────────────┐
│ User │
│ ┌─────────────────┐ ┌──────────────┐ │
│ │ Identity │ │ Credentials │ │
│ │ (Deletable) │ │ (Required) │ │
│ │ │ │ │ │
│ │ - given_name │ │ - email │ │
│ │ - family_name │ │ - password │ │
│ │ - display_name │ │ - verified │ │
│ │ - avatar_url │ │ │ │
│ │ - locale │ │ │ │
│ │ - timezone │ │ │ │
│ │ - external_id │ │ │ │
│ └─────────────────┘ └──────────────┘ │
└─────────────────────────────────────────┘
身份操作
| 操作 | Endpoint | 用途 |
|---|---|---|
| 获取 | GET /api/users/:user_id/identity | 读取 PII |
| 更新 | PATCH /api/users/:user_id/identity | 修改 PII |
| 删除 | DELETE /api/users/:user_id/identity | 删除全部 PII |
| 重建 | POST /api/users/:user_id/identity | 删除后恢复身份信息 |
删除权(GDPR 第 17 条)
删除身份信息,同时保留:
- 用户 ID(用于审计日志)
- 凭据(邮箱 + 密码哈希)
- 支付历史(符合法律保留要求)
- 账户成员关系(访问控制)
会被删除的数据
| 删除项 | 保留项 |
|---|---|
| given_name | user.id |
| family_name | user.application_id |
| display_name | user.status |
| avatar_url | memberships |
| preferred_language | credentials |
| locale | payment records |
| timezone | audit logs |
| external_id |
数据最小化
身份字段都是可选的。只收集你真正需要的数据:
- 用户可以随时清空字段
- 空身份是合法状态
- 数据越少,合规负担越小
凭据通过独立的用户凭据端点管理。
相关
- User Identity - 身份资源
- 用户 - 用户管理
- User - 用户资源