企业身份与 HR 联动

Passport 的账号体系同时覆盖两类身份场景:个人身份(C 端用户自助注册)与企业身份(由组织管理,员工无法自行注册)。企业账号通过与 HR 系统联动自动维护入职、转岗、离职生命周期,离职后其所有登录凭据立即失效。

身份模型

概念说明
身份(passport_user)「一个人」的锚点,一人一条。个人身份与企业身份最终都归属到同一个人
个人账号住平台租户(租户 ID 为 0),自助注册,全局唯一登录名
企业账号住企业租户,登录名租户内唯一,由管理员创建或 HR 同步产生,不可自助注册

同一个人可以同时持有个人账号与多个企业账号(例如既是某产品的 C 端用户、又是某公司的员工),这些账号通过身份层关联到同一个人。当员工用企业邮箱自助注册过个人账号时,激活企业账号会自动归并到既有身份,个人资料随之共享。

企业账号生命周期

            HR 同步入职(直接激活)/ 管理员创建
PENDING ────────────────────────────────▶ ACTIVE
   │  员工首登:企业邮箱验证码 + 设置密码       │
   │                                       ▼
   └──── DISABLED ◀──── HR 离职 / 管理员停用 ──┘
                (登录凭据立即失效;复职后恢复)
状态含义能否登录
待激活(PENDING)账号已创建但员工尚未设置密码否
已启用(ACTIVE)正常使用中是
已停用(DISABLED)已离职或被管理员停用否

员工侧:激活企业账号

HR 同步或管理员创建的账号初始为「待激活」,员工按以下步骤激活:

  1. 访问 Passport 登录页,进入「激活企业账号」页面(/activation)
  2. 输入企业邮箱,获取验证码(验证码 5 分钟内有效)
  3. 输入验证码并设置密码(8 ~ 30 位)
  4. 激活成功后即可正常登录

未激活的账号尝试登录会提示 Account pending activation,需先完成激活。

管理员侧:创建企业账号

  1. 进入「账号」页面,切换到「企业账号」标签
  2. 点击「创建账号」,填写用户 ID、用户名、邮箱等信息
  3. 账号默认「已启用」;若希望员工自行激活,可随后将其停用再改为待激活,或直接由 HR 同步管理

HR 系统联动

HR 系统是企业身份的唯一权威来源,Passport 是消费方。同步按工号幂等,可反复执行:

HR 事件Passport 行为
入职创建企业账号(默认待激活,可配置为直接激活)
转岗 / 调岗更新姓名、邮箱与部门(群组)归属
离职账号停用 + 全部登录凭据立即失效
复职恢复为已启用,保留历史账号

字段映射

HR 字段Passport 落点说明
工号(employeeId)账号 external_id同步幂等键
姓名(name)账号名称
企业邮箱(email)账号邮箱激活流程的验证渠道
部门(department)群组(passport_group)租户内按名称映射,不存在则自动创建

同步方式

方式说明现状
定时拉取(PULL)Passport 每小时调用 HR 系统的员工列表接口做全量 diff已支持
事件推送(PUSH)HR 系统在入转调离时回调 Passport即将支持
SCIM 2.0对接 AzureAD / Okta / 飞书 / 钉钉等身份平台规划中

员工列表接口的返回格式约定为数组:

[
  {
    "employeeId": "10001",
    "name": "张三",
    "email": "zhangsan@corp.com",
    "department": "研发部"
  }
]

配置 HR 同步(管理员)

  1. 进入管理后台「HR 同步」页面
  2. 打开「启用同步」开关
  3. 填写员工列表 API 地址与鉴权请求头(如 Bearer ...,选填)
  4. 按需开启「入职直接激活」——开启后同步入职的账号跳过激活流程直接可用(员工通过忘记密码流程设置密码)
  5. 点击「保存」;可随时点击「立即同步」验证效果,页面会显示新建 / 更新 / 离职停用的账号数与上次同步时间

同步仅在保存的租户范围内生效,不会触碰其他租户的账号。

离职即时生效

Passport 的登录 Token 是无状态 JWT,签名校验不查库。为保证离职即刻生效,账号被停用(HR 离职同步或管理员手动停用)时,Passport 会记录吊销时刻:

  • 该账号签发于吊销时刻之前的所有 Token 立即被网关拒绝
  • 复职后重新登录获得的 Token 不受影响

管理员在账号列表中通过状态开关停用企业账号,效果与 HR 离职同步一致。

企业应用访问控制(身份选择与拦截)

企业应用(归属某租户的应用)仅限该租户的企业身份访问,校验由 Passport 在单点登录入口统一完成(OAuth2 / OIDC / SAML authorize),各企业应用无需自行实现:

  • 当前已是该租户的活跃企业账号 → 直接放行;
  • 同一人以个人身份访问,但名下已有该租户的企业账号 → 展示身份选择页,确认后以企业身份重签 Token 并继续原来的跳转;
  • 与租户无任何关系 → 展示拦截页("该应用仅限 XX 企业成员使用"),个人身份永远不会拿到企业租户数据。

邀请成员(管理员)

管理员可以把既有用户邀请为企业成员:

  1. 进入「账号」页面,切换到「企业账号」标签
  2. 点击「邀请成员」,输入受邀人邮箱
  3. 系统生成一条接受链接(7 天内有效),由管理员把链接发给对方
  4. 受邀人打开链接后,Passport 自动在其名下创建该租户的企业账号(待激活)并发送验证码
  5. 受邀人完成激活流程即可访问企业应用