DingTalk同步器
钉钉同步器会将您钉钉组织中的用户导入Casdoor。 它使用钉钉API从所有部门获取用户,并保持数据同步。
配置
必填字段:
- 组织: 导入用户的Target Casdoor组织
- 名称:此同步器的唯一标识符
- 类型:选择“DingTalk”
- 应用密钥: 您的钉钉应用的应用密钥
- 应用密钥: 您的钉钉应用的应用密钥
设置步骤
步骤1:获取钉钉应用凭证
访问您的钉钉开放平台,并创建或选择一个现有应用。 您需要从应用设置中获取两个关键信息:
应用密钥用作您的应用程序的公开标识符,而应用密钥则用作您的私有身份验证令牌。 两者对于在Casdoor与您的钉钉组织之间建立安全的API通信都至关重要。
请导航至您应用的管理界面以查找这些凭据。 请妥善保管应用密钥,因为它可为您提供对贵组织用户目录的完全访问权限。
步骤2:在Casdoor中进行配置
打开“同步器”选项卡,并创建一个类型为“钉钉”的新同步器。 在相应字段中输入您的应用密钥和应用密钥。 同步器无需数据库配置字段,因为它直接连接到钉钉的API。
保存配置后,请使用测试连接按钮,以验证Casdoor能否成功与您的钉钉组织进行身份验证。
字段映射
同步器将钉钉用户属性映射到Casdoor字段如下:
| 钉钉字段 | 钉钉字段 | 描述 |
|---|---|---|
| userid | Id | 用户的唯一标识符 |
| unionid | Name | 唯一用户标识符(如果为空,则回退到userid) |
| name | DisplayName | 用户显示名称 |
| 电子邮件地址 | ||
| mobile | Phone | 手机号码 |
| avatar | Avatar | 个人资料图片URL |
| title | Title | 职位或岗位 |
| active | IsForbidden | 账户状态(反向) |
账户状态映射呈反向关系:当钉钉用户被标记为非活跃(active: false)时,他们在Casdoor中会显示为被禁止(IsForbidden: true)。 活跃的钉钉用户会正常同步为Casdoor账户。
同步器在Casdoor中使用unionid作为用户名,与OAuth提供商的行为保持一致。 这确保了通过OAuth登录的用户和通过同步器导入的用户保持一致的身份。 unionid字段提供了一个稳定的标识符,即使员工编号或其他属性发生变化,该标识符也能保持不变。
自定 义字段映射
默认情况下,同步器会将一组固定的钉钉字段映射到Casdoor字段,如上表所示。 如果您的组织需要不同的映射,请在同步器上配置表列。 当至少定义了一列时,同步器将使用您的自定义映射,而非默认值。
每个列条目都包含一个名称(钉钉源字段),并将其映射到相应的Casdoor字段。 支持的钉钉源字段名称如下:
| 钉钉字段 | 描述 |
|---|---|
userid | 钉钉中的用户唯一标识符 |
unionid | 跨应用稳定标识符 |
name | 显示名称 |
email | Email address |
mobile | 手机号码 |
avatar | 个人资料图片URL |
title | 职位名称 |
job_number | 员工编号 |
active | 账户状态(反转为IsForbidden) |
当表列为空时,同步器会回退到其内置映射。
部门和小组同步
DingTalk 同步器还会将部门同步为 Casdoor 群组。 对于您组织中的每个部门,同步器会获取部门ID和显示名称,并在Casdoor中创建相应的组。 每个用户的部门成员身份都会映射到小组分配,因此同步后用户会被放置在正确的小 组中。
部门发现为递归:从根部门开始,同步器会针对每个父部门调用topapi/v2/department/listsub,并遍历整个树的深度。 这确保了任何层级嵌套的子部门都会被包含在内,而不仅仅是根部门的直接子部门。 然后,通过topapi/v2/department/get单独获取部门详情。 如果部门查找失败,则跳过该步骤,同步过程将继续进行。
OAuth登录绑定
当用户从钉钉同步时,其钉钉unionid会存储在Casdoor用户的dingtalk字段中。 因此,已同步的用户可通过钉钉OAuth提供商登录,无需单独的账号绑定步骤。
运行同步器
通过已启用开关启用同步器,以激活计划同步。 对于即时导入,单击同步按钮以触发手动同步运行。
同步器会自动从您钉钉组织的各个部分获取用户和部门,并在用户隶属于多个部门时进行去重处理。 分页由内部管理,确保无论组织规模如何,都能实现完全同步。