Files
iAOP/web/auth/README.md
T

57 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# web/auth — iAOP 登录认证 + 用户/角色管理
issue #134 / PRD 8.2 认证鉴权。纯静态(无构建链)Demo 级实现:
登录页 + 会话管理 + 用户/角色管理 + 三级 RBAC 门控 + OIDC SSO 预留。
## 文件
```
web/auth/
├── auth.js # 共享库:用户 CRUD(加盐 SHA-256)/ 会话 / 权限矩阵 / 审计 / OIDC 配置点
├── login.html # 登录页(本地账号;配置 OIDC 后出现 SSO 入口)
├── users.html # 用户/角色管理页(仅 admin)+ OIDC 配置 + 审计日志查看
├── users.js # 管理页逻辑
└── README.md
```
## 使用
```bash
# 从 web/ 根目录起服务(studio 集成依赖 ../auth 相对路径)
cd web && python -m http.server 8083
# 打开 http://127.0.0.1:8083/auth/login.html
```
首次运行内置管理员 **admin / admin123**(登录后请立即在用户管理页改密)。
未登录访问 `web/studio/`(模板配置台)会自动跳转登录页,登录后按会话角色
应用三级 RBAC(Viewer 只读 / Editor 配置 / Publisher 发布+回滚)。
## 语义对齐
| 能力 | 对齐后端 |
|------|----------|
| 角色 readonly / engineer / admin,动作 view / edit / publish / manage | `core/template-console/rbac.py`(Resource/Action/RoleKind) |
| 用户数据(username/role/enabled/salt/hash) | `core/data-bus/config/postgres.template.yaml` users/permissions 表(Demo 落 localStorage,后端 HTTP 就绪后替换 `UserStore` 读写即可) |
| 写操作审计(时间/操作人/动作/资源/原因) | `template_registry._log` 风格 + `prompts.drain_audit` 语义 |
| OIDC 配置点(issuer/client_id/redirect_uri) | PRD 8.2 双轨:未配置走本地账号,配置后登录页出现 SSO 入口(标准授权码流程 authorize URL 已可生成;令牌换会话的后端端点待企业 IAM 就绪后对接) |
## 各前端页面接入方式
```html
<script src="../auth/auth.js"></script>
<script>
var session = Auth.requireAuth("../auth/login.html"); // 未登录 → 跳登录页
if (session) { /* Auth.can(session.role, "edit" | "publish" | "manage") 门控写操作 */ }
</script>
```
`web/studio` 已接入(未登录不可进入,写操作按会话角色门控,发布/回滚落审计);
auth.js 缺失时 studio 降级为手动角色切换演示,向后兼容。
## 安全说明(Demo 边界)
- 密码加盐 SHA-256(Web Crypto)存储,不落明文;会话 token 8 小时过期,
账号禁用/删除即时失效;
- localStorage 存储仅用于无后端 Demo;生产部署需由后端接管 users 表
(PostgreSQL)与会话签发,本库 API(login/session/can/audit)保持不变。