Skip to content

This page has no English translation yet. The Chinese original is shown below — help us translate it.

本地账号与独立应急管理员 ​

本地账号使用用户名和密码登录,与企业 SSO 提供方独立。普通成员和应急管理员 都复用 enterprise_users 作为成员主体,凭据和会话分别保存在 local_admin_credentials、local_admin_sessions。应急管理员通过 is_emergency=true 区分并受到额外保护。审计主体仍为 enterprise:<user_id>。

部署默认账号 ​

登录页为 /#/login。全新部署默认创建 admin / nexusdesk。 迁移 0029_default_admin 自动执行 backend/migrations/sql/0029_default_admin.sql; 容器启动引导也会幂等执行该 SQL,支持数据库升级后部署新的租户。 SQL 使用 nexusdesk.tenant_id 会话设置选择租户,缺省为 local;部署程序自动传入 AGENT_TENANT_ID。

  • 首次登录必须修改初始密码;修改前服务器只允许登录、退出和改密,拒绝工作台业务接口。
  • 修改后撤销全部旧会话,用新密码重新登录。新密码沿用 12–128 字符要求。
  • 数据库保存 PBKDF2 摘要,不保存明文密码。短初始密码只存在于部署种子中,不放宽普通改密规则。
  • 已有本地管理员时不新增、不重置;重复启动/执行 SQL 不覆盖已修改的密码。
  • 默认账号初始化后关闭开发模式匿名管理员。快速体验 Nginx 也不再自动注入管理员令牌。
  • 已有自定义管理员的部署仍使用原账号,原密码和权限均保留。

本地升级在 backend 目录执行:

powershell
.venv\Scripts\python.exe -m alembic upgrade head

无需额外手工创建账号。原交互初始化命令仅适用于尚未创建任何本地管理员的租户; 已有账号时该命令会拒绝覆盖。

接口 ​

接口行为
GET /api/v1/auth/local/status返回是否已初始化及是否允许本地开发体验,不暴露账号信息
POST /api/v1/auth/local/login输入 username、password,返回一小时有效的 Bearer 令牌及用户基本信息
POST /api/v1/auth/local/logout携带 Bearer local_...,撤销当前会话,重复退出也成功
POST /api/v1/auth/local/password携带本地会话及 old_password、new_password,改密后撤销所有本地会话,须重新登录
GET /api/v1/me本地会话复用现有角色鉴权,返回 admin 和固定用户主体

不提供公开注册或浏览器匿名初始化。管理员可以在“系统管理 → 成员管理”中邀请 普通本地成员、重置其密码并撤销会话;应急管理员不能通过成员或企业身份接口停用、 删除、降权或绑定 SSO。服务器/数据库拥有者仍可进行人工恢复。

完整权限模型、接口和固定角色矩阵见 用户权限模块 P0。

密码和会话 ​

  • PBKDF2-HMAC-SHA256,600,000 次迭代,独立随机盐;只保存摘要。
  • 随机 256 位会话令牌,数据库只保存 SHA-256 摘要;过期、退出和改密后拒绝使用。
  • 按租户、用户名与实际客户端 IP 在数据库中限流,跨进程生效:每 15 分钟每用户名最多 10 次、每 IP 最多 30 次尝试。成功登录也计数。
  • 代理部署应仅对可信代理启用 Uvicorn forwarded headers,否则多个用户可能共享代理 IP 限额。
  • 未知用户与错误密码返回相同错误;接口响应不缓存,参数校验不回显密码。
  • 生产环境通过 HTTPS 使用;密码和 Bearer 令牌不应写入访问日志。
  • 审计包含初始化、登录成功/失败、退出、改密,不记录密码或完整令牌。

登录页 V1 ​

左侧深靛蓝品牌区、玻璃质感抽象轨道;右侧白色登录区。 延续模型网关蓝紫主色,分为“账号登录”和“企业登录”两个页签。 账号登录用于本地账号;企业登录页签按已启用的提供方动态展示,不虚构已配置的企业入口。 已实现密码显示/隐藏、失败重试、语言切换、窄屏布局和企业 SSO 弹窗。 未登录或凭据失效时跳转登录页,登录后恢复平台内的原始路径。 右上角账户菜单提供访问策略、修改密码(仅本地会话)和退出。 服务令牌保留为折叠入口;只在当前浏览器会话保存凭据。

背景插画使用内置 imagegen 生成,项目资产为 frontend/public/images/login-orbit.png。生成提示:从确认的登录稿提取左侧深靛蓝背景、 半透明紫色玻璃轨道与球体,去除全部文字和表单,上方留出标题空间。

验证 ​

  • PostgreSQL 集成:本地管理员、企业身份与部署共 30 项测试通过,迁移升降级通过。
  • 浏览器:本地登录、失败重试、改密、过期、SSO 弹窗及桌面/窄屏布局及首次改密共 7 项通过。
  • 兼容性:Agent 工作台和既有企业身份/嵌入聊天共 5 项浏览器回归通过。
  • 企业 SSO 测试使用模拟提供方;真实企业配置仍需对应应用的凭据和回调地址。

NexusDesk 采用 Apache License 2.0 许可