毕升Office账号可以是独立的账号,也可以是通过API从集成方同步而来的账号。
同步方式主要有两种:主动调用API批量同步;在需要时(如使用集成预览、编辑文件),通过API服务被动获取并创建账号。
主动同步账号的方式主要分为下面两种:调用API批量同步账号,即使用相关接口和参数进行账号同步;配置LDAP信息同步账号,即使用LDAP进行账号同步。
该方法是指:集成系统主动调用毕升Office账号导入API批量导入用户账号信息。可导入通讯录信息、部门信息到毕升Office系统中,已经在系统中存在的账户信息不会被导入,仅会被更新。
使用此种方式时,需要先使用root管理员身份进行授权签名的操作,将获取的Token设置到Cookie中,然后再调用相关的接口。
向http://bsd_host/apps/api/contact/dataImport发送POST请求,请求需要传递的参数格式如下:
{
"contracts": [
{
"contractId": "linkedID_contractID001",
"title": "contract001",
"creator": {
"personInfoId": "linkedID_pInfoID001",
"userId": "IMPuser001",
"title": "IMPuser001_名称",
"phone": "00000000001",
"email": "IMPuser001@xx.xx"
}
}
],
"departments": [
{
"departmentId": "linkedID_depID001",
"title": "department001",
"parentDepartmentId": "$ROOT"
}
],
"personInfos": [
{
"personInfoId": "linkedID_pInfoID001",
"userId": "IMPuser001",
"title": "IMPuser001_名称",
"phone": "00000000001",
"email": "IMPuser001@xx.xx",
"parentDepartments": [
"linkedID_contractID001",
],
"frozen": false
}
]
}
参数中的contracts部分为通讯录信息。contracts信息为空时,不进行通讯录创建的操作。
参数中的departments部分为通讯录信息。departments信息为空时,不进行部门创建的操作。
参数中的personInfos部分为通讯录信息。personInfos信息为空时,不进行用户创建的操作。
在系统中包含多个通讯录时,用户身份可能同时存在于多个通讯录的不同部门中,此时需要在parentDepartments中添加不同通讯录下的部门ID,即可在不同通讯录的部门中导入用户身份。值为$ROOT时,指示当前用户身份在默认通讯录下。
$ROOT只在系统被初始化为单租户系统时可用。
导入的参数结构如下:
{
"contracts": [
{
"contractId": "linkedID_contractID001",
"title": "contract001",
"creator": {
"personInfoId": "linkedID_pInfoID001",
"userId": "IMPuser001",
"title": "IMPuser001",
"phone": "00000000001",
"email": "IMPuser001@xx.xx"
}
},
{
"contractId": "linkedID_contractID002",
"title": "contract002",
"creator": {
"personInfoId": "linkedID_pInfoID002",
"userId": "IMPuser002",
"title": "IMPuser002",
"phone": "00000000002",
"email": "IMPuser002@xx.xx"
}
}
],
"departments": [
{
"departmentId": "linkedID_depID001",
"title": "department001",
"parentDepartmentId": "$ROOT"
},
{
"departmentId": "linkedID_depID001_1",
"title": "department001_1",
"parentDepartmentId": "linkedID_depID001"
},
{
"departmentId": "linkedID_depID002",
"title": "department002",
"parentDepartmentId": "linkedID_contractID001"
}
],
"personInfos": [
{
"personInfoId": "linkedID_pInfoID001",
"userId": "IMPuser001",
"title": "IMPuser001",
"phone": "00000000001",
"email": "IMPuser001@xx.xx",
"parentDepartments": [
"linkedID_contractID002",
"linkedID_depID002"
]
},
{
"personInfoId": "linkedID_pInfoID002",
"userId": "IMPuser002",
"title": "IMPuser002",
"phone": "00000000002",
"email": "IMPuser002@xx.xx",
"parentDepartments": [
"$ROOT"
]
}
]
}
在毕升Office系统中创建的用户结构为:
在毕升Office系统中,可以进行LDAP信息的配置,从而实现从集成方的LDAP服务中导入既存的部门、用户信息,并使用集成方LDAP服务进行用户登录验证的功能。
ldap:
basedn: dc=company,dc=com
adminuid: admin
adminpassword: 123456
ldapurl: ldap://yourhost:389
LDAP设置画面如上图,其中各项目的说明如下:
LDAP服务中的数据结构如下图所示:
设置LDAP导入所需的信息后,点击从LDAP中导入数据按钮,LDAP中的数据将会被导入至毕升Office系统中。
该方法是指集成方提供一个请求用户信息的服务地址,当毕升Office服务发现该用户信息不存在的时候,将调用该服务地址请求用户数据,并在毕升Office系统中创建账号。例如服务地址的值为http://yourhost/getUserInfo,需要获得userId为”externalUser“的用户信息时,系统将会发送GET请求至http://yourhost/getUserInfo?userid=externalUser。获取到的用户信息返回值的结构应如下:
{
"status": true,
"user": {
"userId":"externalUser",
"uname": "externalUserName",
"avatar": "http://yourhost/avatar.png",
"phone": "",
"email": "",
"department": {
"departmentId": "externalDepartmentId001",
"title": "externalDepartmentName001",
"subDepartment": {
"departmentId": "externalDepartmentId002",
"title": "externalDepartmentName002",
"subDepartment": {
"departmentId": "externalDepartmentId003",
"title": "externalDepartmentName003"
}
}
}
}
}
其中 status字段为该服务调用返回的状态。user内数据为用户的具体信息。
{
"status": true,
"user": {
"userId": "avatar",
"uname": "avatar_Name"
"avatar":"",
"phone":"",
"email":""
"department": {
"departmentId": "myDevDepartment",
"title": "研发部",
"subDepartment": {
"departmentId": "myOwnDepartment",
"title": "drive 研发小组"
}
},
}
}
以上数据样例中定义了一个用户,属于“研发部”->“office研发小组” 的部门结构。该数据结构导入之后,系统通讯录将逐层检查部门是否存在,如果不存在则将创建该部门,然后在最后的子部门下创建用户。
api:
syncuserurl: ""
被动导入的触发的时机为调用API获取授权签名时,系统会检测申请授权的用户id是否在系统中,如果不在将触发账号被动同步: 根据请求中的同步账号地址,或者系统配置的账号同步地址进行账号同步。具体参考获取授权签名