Skip to content

SCIM 用户配置 (scim) ​

Headless 命令 — 不依赖桌面 GUI,直接使用核心包运行。适用于服务器、CI/CD、容器化等无桌面环境。

核心特性 ​

  • 👤 用户管理: 创建、查看、列出和删除 SCIM 用户
  • 🔌 连接器管理: 查看与外部身份提供商的连接状态
  • 🔄 同步配置: 触发身份提供商的用户同步
  • 📊 配置状态: 查看 SCIM 配置概览(用户数、连接器数、同步记录)

概述 ​

ChainlessChain CLI SCIM(System for Cross-domain Identity Management)模块实现了 SCIM 2.0 协议,用于与企业身份提供商(IdP)进行自动化用户配置。

users 子命令管理 SCIM 用户的完整生命周期:创建、查询、列出和删除。connectors 查看与外部 IdP(如 Azure AD、Okta、OneLogin)的连接状态。sync 触发指定连接器的用户同步操作,将 IdP 中的用户变更自动同步到本地。status 提供全局配置概览。

命令参考 ​

scim users list — 列出用户 ​

bash
chainlesschain scim users list
chainlesschain scim users list --json

列出所有 SCIM 用户,显示 ID、用户名、显示名称和活跃状态。

scim users create — 创建用户 ​

bash
chainlesschain scim users create <username>
chainlesschain scim users create alice -n "Alice Wang" -e "alice@example.com"

创建一个 SCIM 用户。--name 指定显示名称,--email 指定邮箱。

scim users get — 查看用户 ​

bash
chainlesschain scim users get <user-id>
chainlesschain scim users get usr-001 --json

按 ID 查看 SCIM 用户详情。

scim users delete — 删除用户 ​

bash
chainlesschain scim users delete <user-id>
chainlesschain scim users delete usr-001

删除指定 SCIM 用户。

scim connectors — 查看连接器 ​

bash
chainlesschain scim connectors
chainlesschain scim connectors --json

列出所有 SCIM 连接器,显示名称、提供商和状态。

scim sync — 触发同步 ​

bash
chainlesschain scim sync <connector-id>
chainlesschain scim sync conn-001

触发指定连接器的用户同步操作。

scim status — 配置状态 ​

bash
chainlesschain scim status
chainlesschain scim status --json

显示 SCIM 配置概览:用户数、连接器数、同步操作数、最后同步时间。

数据库表 ​

表名说明
scim_resourcesSCIM 用户资源(用户名、显示名称、邮箱、活跃状态、元数据)
scim_sync_log同步记录(连接器 ID、操作类型、状态、时间戳)

系统架构 ​

用户命令 → scim.js (Commander) → scim-manager.js
                                        │
                ┌──────────────────────┼──────────────────────┐
                ▼                      ▼                      ▼
          用户管理                连接器管理                同步引擎
    (CRUD 操作)            (IdP 连接状态)          (触发/记录同步)
                ▼                                            ▼
        scim_resources                                scim_sync_log

配置参考 ​

bash
# CLI 标志
-n, --name <name>         # 用户显示名称 (scim users create)
-e, --email <email>       # 用户邮箱 (scim users create)
--json                    # JSON 格式输出

# 配置路径
~/.chainlesschain/chainlesschain.db              # scim_resources / scim_sync_log 表
$APPDATA/chainlesschain-desktop-vue/.chainlesschain/config.json  # IdP 连接器配置(provider/endpoint/credentials)

性能指标 ​

操作目标实际状态
users list (100 条)< 50ms~25ms✅
users create< 30ms~15ms✅
users get< 20ms~8ms✅
connectors 列表< 30ms~15ms✅
sync (本地记录)< 100ms~50ms✅

测试覆盖率 ​

✅ scim-manager.test.js  - 覆盖 CLI 主要路径
  ├── 参数解析
  ├── 正常路径
  ├── 错误处理
  └── JSON 输出

关键文件 ​

  • packages/cli/src/commands/scim.js — 命令实现
  • packages/cli/src/lib/scim-manager.js — SCIM 管理库

测试 ​

bash
npx vitest run __tests__/unit/scim-manager.test.js
# 23 tests, all pass

使用示例 ​

场景 1:用户管理 ​

bash
# 创建用户
chainlesschain scim users create alice \
  -n "Alice Wang" -e "alice@example.com"

chainlesschain scim users create bob \
  -n "Bob Li" -e "bob@example.com"

# 列出所有用户
chainlesschain scim users list

# 查看用户详情
chainlesschain scim users get usr-001 --json

# 删除用户
chainlesschain scim users delete usr-001

场景 2:IdP 同步 ​

bash
# 查看连接器状态
chainlesschain scim connectors --json

# 触发同步
chainlesschain scim sync conn-001

# 查看配置概览
chainlesschain scim status

故障排查 ​

症状可能原因解决方案
"No SCIM users"未创建用户使用 scim users create
"User not found"用户 ID 不存在使用 scim users list 确认有效 ID
"No SCIM connectors"未配置连接器需在配置文件中添加 IdP 连接器
同步失败连接器不可达检查 IdP 连接和凭证

安全考虑 ​

  • SCIM 2.0 标准: 遵循 RFC 7643/7644 标准,兼容主流 IdP
  • 用户隔离: SCIM 用户独立管理,不影响本地用户体系
  • 同步审计: 所有同步操作记录完整日志
  • 安全删除: 用户删除操作不可恢复,需谨慎操作

相关文档 ​

基于 MIT 许可发布