IWish Auth开发者文档
V1 Alpha GitHub

飞书身份边界

内部员工身份、组织同步和业务 App 禁止事项

内部员工的飞书身份就是 IWish Auth 的统一员工身份。auth_users 只是权限、会话、审计和外键所需的不可见技术主体,管理后台不得要求维护第二套“Auth 内部员工账号”。业务 App 禁止直接接飞书,只能读取 IWish Auth 返回的稳定身份上下文。

1. 身份来源

使用者登录方式identitySourceemployee
公司内部员工飞书 OAuthfeishu飞书员工档案
外部客户或协作账号邀请/邮箱密码emailnull

飞书真实工作邮箱不作为内部身份主键。Auth 使用稳定飞书标识和受控 synthetic email,避免与外部邮箱身份错误合并。

Supabase Auth 的企业登录 provider 标识为 custom:feishu。该值只属于 IWish Auth 平台配置,业务 App 不得直接使用它发起飞书授权。

2. 飞书同步内容

IWish Auth 同步:

  • 公司部门层级和部门状态。
  • 员工、工号、职位、上级、部门关系和在职状态。
  • 离职、冻结、未入职等状态变化。

同步采用全量分页、批次写入和成功后 finalize。任何分页或字段权限错误都不能把本轮未读到的员工误判为离职。

3. 业务 App 可以获取什么

App session 的 employee 可能包含:

{
  "feishuUserId": "ou_xxx",
  "openId": "ou_xxx",
  "unionId": "on_xxx",
  "employeeNo": "E1001",
  "workEmail": "staff@example.com",
  "jobTitle": "广告优化师",
  "managerUserId": "ou_manager",
  "departmentIds": ["od_marketing"],
  "departmentNames": ["广告投放部"],
  "employmentStatus": "active",
  "lastSyncedAt": "2026-07-20T08:00:00Z"
}

字段可能为 null 或空数组,业务 App 必须容忍。employmentStatus 不是权限,仍需检查 permissions

4. 业务 App 禁止事项

  • 不创建自己的飞书应用来完成统一登录。
  • 不请求飞书 OAuth、通讯录或 tenant token。
  • 不保存飞书 access token、refresh token、App Secret 或用户凭据。
  • 不通过飞书邮箱自动合并外部账号。
  • 不复制部门/员工为另一套可编辑主数据。
  • 不通过直接查询 Auth/Supabase 表获取员工。

业务 App 只使用 IWish Auth SDK 返回的稳定上下文。是否展示部门、按部门筛选或使用职位属于业务 App 自身决策。

5. 离职与组织变化

员工离职或冻结后,IWish Auth 会使统一登录和 App session 失效,并停止返回有效 clientAssignments。业务 App 不应等待本地人工禁用。

部门调整会在后续 session 上下文中反映。业务 App 如果缓存部门用于报表,需要设置明确的同步/失效策略,不能把缓存作为身份来源。

6. 外部账号边界

外部客户不要求拥有飞书账号。管理员可以先独立创建客户项目,再按需邀请外部访问账号。外部账号是否能查看某个项目取决于 App 权限和业务 App 数据授权,不由“客户项目存在”自动推导。

7. 平台管理边界

飞书目录状态由 GET /v1/admin/feishu/status 查询,手动同步由受保护的 Admin API 发起。只读管理需要 auth.feishu.read,执行同步需要 auth.feishu.sync。这些权限只授予平台管理员,不属于业务 App Manifest。