feat(auth): replace TOTP with phone-first login
This commit is contained in:
@@ -41,7 +41,6 @@ Tenant Active
|
||||
+ Module / Feature 可用
|
||||
+ Operation Permission
|
||||
+ DataScope / Resource Scope
|
||||
+ 必要时 MFA
|
||||
```
|
||||
|
||||
验收:
|
||||
@@ -53,7 +52,7 @@ Tenant Active
|
||||
|
||||
## P1:接口最小权限与 DataScope 审计
|
||||
|
||||
- 建立 endpoint authorization manifest:method、route、realm、module、permission、DataScope、MFA、audit action。
|
||||
- 建立 endpoint authorization manifest:method、route、realm、module、permission、DataScope、audit action。
|
||||
- 后台写接口不得只使用 `[Authorize]`。
|
||||
- tenant/platform 权限不得串用。
|
||||
- `[AllowAnonymous]` 只能出现在白名单路由。
|
||||
|
||||
@@ -28,9 +28,9 @@ Client
|
||||
## 账号与 Session
|
||||
|
||||
- 账号由 ASP.NET Core Identity 管理。
|
||||
- 密码最少 10 位;PBKDF2 迭代次数 210,000。
|
||||
- 密码最少 8 位且必须同时包含字母和数字;PBKDF2 迭代次数 210,000。
|
||||
- 连续 5 次密码失败后锁定 15 分钟。
|
||||
- TOTP、恢复码和 Authenticator Key 使用 Identity 标准能力。
|
||||
- 普通租户用户使用手机号和密码或手机号短信验证码登录;平台管理员当前使用账号和密码登录。
|
||||
- 微信等外部身份只保存 provider subject、openid、unionid,不保存 `session_key` 或原始 secret。
|
||||
- Data Protection key 持久化到 PostgreSQL;非 Development 环境必须提供带私钥的 PKCS#12 证书保护 key ring。
|
||||
|
||||
@@ -40,7 +40,6 @@ Access token:
|
||||
- 固定 15 分钟。
|
||||
- 包含 `sub`、`sid`、`jti`、`iat`、`iss`、`aud`、`exp`、`scope`。
|
||||
- tenant token 必须包含 `tid`;platform token 禁止包含 `tid`。
|
||||
- 完成 MFA 的 Session 可包含 `amr=mfa`。
|
||||
- 不包含 role 或 permission claim。
|
||||
|
||||
Refresh token:
|
||||
@@ -83,7 +82,7 @@ Host 是认证上下文,不是普通参数。`TenantResolutionMiddleware` 在
|
||||
- 租户角色、权限、菜单、用户角色绑定都带租户上下文。
|
||||
- 平台角色不带租户键,不能自动读取租户业务数据。
|
||||
- 菜单只决定 UI bootstrap 展示,不作为 API 授权依据。
|
||||
- 后台 API 必须声明明确 permission;高风险写操作按策略要求 MFA 和审计。
|
||||
- 后台 API 必须声明明确 permission;高风险写操作必须记录审计。
|
||||
|
||||
DataScope:
|
||||
|
||||
@@ -103,14 +102,14 @@ DataScope:
|
||||
|
||||
必须落审计:
|
||||
|
||||
- 登录、刷新重放、logout-all、强制改密、MFA 变更;
|
||||
- 登录、刷新重放、logout-all、强制改密;
|
||||
- 角色、权限、成员状态、租户状态、Provider 配置、支付运营动作;
|
||||
- System Scope 和跨租户平台操作。
|
||||
|
||||
错误响应:
|
||||
|
||||
- 401:未认证或 token/session 无效。
|
||||
- 403:已认证但 realm、tenant、permission、DataScope、MFA 或套餐能力不满足。
|
||||
- 403:已认证但 realm、tenant、permission、DataScope 或套餐能力不满足。
|
||||
- 404:未知 Host、不可见资源或需要隐藏存在性的资源。
|
||||
- 响应不得泄露完整手机号、openId、邮箱、密钥、支付账号或内部 provider payload。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user