泛微OA
# 泛微OA 插件配置手册
# 单点登录配置
# 在SSO360中配置
# 添加泛微OA应用
管理员登录SSO360平台,【后台管理】-->【应用管理】-->【应用中心】-->【新增应用】
集成应用中找到泛微OA,【添加应用】
应用地址填写泛微OA的访问地址:OA后台>CAS协议集成>Ecology地址,登陆回调地址填写泛微OA的访问地址:OA后台>CAS协议集成>Ecology地址,登出回调地址填写:OA访问地址/?logintype=1,如http://dev-oa.sheca.com/?logintype=1(登出回调地址 非必填,若需退出泛微OA时同时退出SSO360,可配置此项),
应用登录属性选择【loginid】,对应SSO360登录属性选择【username】,【确定】(对应SSO360登录属性的值必须与OA登录名匹配)
# 应用授权
【后台管理】-->【用户服务管理】-->【用户管理】,查找用户后,点击【查看详情】
【应用信息】-->【添加应用】
勾选【泛微OA】,【确定】
# 泛微OA配置
# 配置CAS集成
【集成中心】-->【CAS集成】,【启用】
# CAS server参数
CAS Server地址:[http|https]😕/{SSO360_host}/api/sso/protocol/cas,红色部分替换为对应的SSO360租户域名
CAS Server登录地址:/login
CAS Server退出地址:/logout
Rest认证地址:/v1/tickets
# OA访问地址
Ecology地址,【设置】
OA访问地址即为SSO360应用需要配置的应用登录地址和登录回调地址(此处有些用户会配成内网地址,如果是内网,则必须在内网环境下访问)
点击右上角【更多>系统设置】模块,查看OA访问地址
# 白名单
以下地址均需加入白名单中,防止CAS集成配置失败,不能正常登陆
# 登录属性
Ecology账号属性选择【登录名】(对应SSO360登录属性的值必须与OA登录名匹配),开启【PC认证】
# 重启泛微OA
点击【完成】,泛微OA会重启(检查上一步的各项配置,尤其白名单,很重要,配置必须慎之又慎,一不小心就可能导致包括管理员在那的用户不能登录)
# 单点登录验证
# 验证方式(二选一即可)
通过SSO360用户中心点击泛微OA应用
直接进入泛微OA访问地址
# 验证结果
成功单点登录说明各项参数配置正确
# 同步任务配置
# 泛微OA上游配置
# 泛微OA方的配置
# 接口部署
详情请参照下面world文档
\1. 人力资源WebService接口部署
Ø 打开/Ecology/classbean/META-INF/xfire/services.xml
Ø 在services.xml里面检查是否有以下代码,没有则添加:
<service>
<name>HrmService</name>
<namespace>http://localhost/services/HrmService</namespace> <serviceClass>weaver.hrm.webservice.HrmService</serviceClass> <implementationClass>weaver.hrm.webservice.HrmServiceImpl</implementationClass> <serviceFactory>org.codehaus.xfire.annotations.AnnotationServiceFactory</serviceFactory>
</service>
2
3
4
Ø 添加完成上面的代码后,重启服务,然后再浏览器的地址栏中输入输入下面的地址看是否部署成功,地址为: http://OA地址/services/HrmService?wsdl
如果部署成功则可以看到如下内容:
Ø 调用接口的时候有个特别需要注意点:
接口部署成功之后,需要在OA的/Ecology/WEB-INF/prop/HrmWebserviceIP.properties配置文件中配置调用接口客户端的IP,调用接口时传入的参数ip包涵在此配置文件才能调用webservice接口。
# ip白名单
泛微oa上下游插件所需要调用的接口,都需要使用oa服务的客户开启ip白名单,总共有3处白名单配置,都需要客户来配置
- 网络层面的ip白名单限制
需要联系客户方,将ip添加至白名单,否则调用服务会显示 403
接口白名单
- 上述world文档中的红字标识配置
webservice服务白名单
# SSO360配置
# 测试连接参数
创建泛微OA应用,并测试连接参数
客户端ip为调用泛微oa服务接口的ip,本地测试可以 百度 ip 即可
开发,测试,uat环境ip如下
serverUrl :你的泛微OA域名,例如 http://test-oa.xxx.com/services/HrmService
此serverUrl为举例测试环境的serverUrl , 正式环境想要连通,必须要执行上述 1、2 步骤
# 添加应用属性
说明:每个插件都会自动内置部分必需属性(内置的属性请勿删除),如果您的插件没有自定义属性,则无需添加,您可以跳过此步骤。
在【应用中心>应用详情>属性池】模块添加更多的应用同步的映射属性
# 新建同步任务
- 在SSO360后台,【应用管理>同步任务】模块,点击新建任务按钮,创建泛微OA上游同步任务
属性映射参考列表——
自定义属性需要您在SSO360后台【属性管理>用户属性/组织属性】模块去手动新增
1)用户属性映射
泛微OA字段名称 | 泛微OA字段 | 是否必填 | 上游数据格式 | SSO360字段名称 | 自定义字段数据类型 | SSO360字段 |
---|---|---|---|---|---|---|
岗位 | jobTitle | 是 | 岗位名称 (自定义) | STRING | jobTitle | |
工作地点 | locationid | 是 | 工作地点(自定义) | STRING | locationid | |
职位类别 | jobgroupid | 是 | 职位类别(自定义) | STRING | jobgroupid | |
职务名称 | jobactivityid | 是 | 职务名称(自定义) | STRING | jobactivityid | |
用户名称 | lastname | 是 | 用户名称(自定义) | STRING | lastName | |
性别 | sex | 是 | 性别 | gender | ||
用户状态 | userStatus | 是 | 枚举 | 用户状态(自定义) | ENUM | userStatus |
移动电话 | mobile | 是 | 手机号格式 | 手机号 | phone | |
状态 | status | 是 | 用户状态 | status | ||
邮箱 | 是 | 邮箱格式 | 邮箱 | |||
用户生日 | birthday | 否 | Yyyy-mm-dd 日期格式 | 生日(自定义) | STRING | birthday |
工号 | workcode | 是 | 工号(自定义) | workcode | ||
安全级别 | seclevel | 否 | >= 0 的数字 | 安全级别(自定义) | STRING | seclevel |
办公室 | workroom | 否 | 办公室(自定义) | STRING | workroom | |
登录名 | loginid | 是 | 登录名(自定义) | STRING | username | |
民族 | folk | 否 | 民族(自定义) | STRING | folk | |
职称 | jobcall | 否 | 职称(自定义) | STRING | jobcall | |
职级 | joblevel | 否 | >=0 数字格式 | 职级(自定义) | STRING | joblevel |
职责描述 | jobactivitydesc | 否 | 职责描述(自定义) | STRING | jobactivitydesc | |
用户排序 | userOrder | 否 | >=0数字格式 | 用户排序(自定义) | STRING | userOrder |
2)组织属性映射
泛微OA字段名称 | 泛微OA字段 | 是否必填 | SSO360字段名称 | 自定义字段数据类型 | SSO360字段 | |
---|---|---|---|---|---|---|
组织全称 | _fullname | 是 | 组织名称 | orgName | ||
组织简称 | _shortname | 是 | 组织简称(自定义) | STRING | simpleName | |
上级分部 | parentSubcompanyCode | 是 | 上级分部(自定义) | ENUM | parentSubcompany | |
是否封存 | _canceled | 是 | 是否删除 | isDeleted | ||
组织排序 | _showorder | 否 | 组织排序 | STRING | showOrder | |
组织类型 | orgType | 是 | 组织类型 | ENUM | orgType | 1: 分部 2:组织 |
组织编码 | _code | 是 | 组织编码 | orgCode |
parentSubcompay 为上级分部,其中上级分部为自定义枚举类型,你需要在属性管理>组织属性>属性池去创建上级分部的枚举项属性(定制化需求,如果你的公司也有分部,可以参考以下举例)
上级分部示例枚举值如下:(根据你实际分部来定义)
0 : 无 (必须填写,正式环境测试环境都一样)
1 : 上海市数字证书认证中心有限公司
2 : 上海神兵信息安全有限公司
具体的枚举key的值要看下游泛微oa中的分部code
组织类型 枚举值参考(说明:如果您的公司没有此需求,可以忽略此步骤)
注意: 组织的自定义的属性一定要关联上到组织默认分类当中去
- 配置同步的属性映射字段,并点击保存按钮
上游同步用户属性映射
其中红框内的为 自定义属性
上游同步组织属性映射
- 在同步任务列表,点击执行按钮,则数据同步开始,执行完成后,可以点击同步历史按钮,查看同步结果
# 验证同步结果
在SSO360后台,【用户服务管理>用户管理】模块,查看您从泛微OA同步过来的组织和用户数据。
# 泛微OA下游配置
# 泛微OA方的配置
同上游配置一样
# SSO360配置
注意事项
泛微OA平台接口允许添加重复的组织,泛微OA后台管理页面不允许添加重复组织
SSO360在同步数据时,存在新增用户数据同步,泛微OA新增用户接口实际会根据工号(workcode)在泛微OA查找用户,查到则更新用户,否则新增用户 [泛微新增接口内部业务逻辑]
- SSO360往泛微OA同步一级组织下的子组织时【泛微OA不存在的组织】时,子组织属性中“上级分部”应为一级组织:
step1: 新增一级组织如下一级组织
step2: 需要在组织属性“上级分部”中添加根组织下的一级组织枚举:(组织id为key, 组织名称为value);
step3: 将一级组织下的子组织“上级分部”属性调整为step1 中添加的一级组织枚举项
- 新建组织时要选择此次新建的组织类型是 分部 还是 部门
根据泛微oa规则 : 分部下面可以建立子分部和组织 ,且分部下面不可建立人员, 部门下面仅可建立子部门,不可建立分部
- 针对泛微OA插件,SSO360禁用和启用用户不生效,需要通过添加userStatus扩展字段实现用户状态同步
# 测试连接参数
测试连接同上游配置
# 添加应用属性
同上游配置
# 新建同步任务
- 在SSO360后台,【应用管理>同步任务】模块,点击新建任务按钮,创建泛微OA下游同步任务
属性映射参考列表——
自定义属性需要您在SSO360后台【属性管理>用户属性/组织属性】模块去手动新增
说明:下游的必填属性,在SSO360用户信息中,一定要补全填写,否则会无法同步到下游(缺少必填字段,下游不接收该用户)
1)用户属性映射
SSO360字段名称 | 自定义数据类型 | SSO360字段 | 是否必填 | 泛微OA字段名称 | 泛微OA字段 | 下游所需数据格式 |
---|---|---|---|---|---|---|
岗位名称 (自定义) | STRING | jobTitle | 是 | 岗位 | jobTitle | |
工作地点(自定义) | STRING | locationid | 是 | 工作地点 | locationid | |
职位类别(自定义) | STRING | jobgroupid | 是 | 职位类别 | jobgroupid | |
职务名称(自定义) | STRING | jobactivityid | 是 | 职务名称 | jobactivityid | |
用户名 | username | 是 | 登录名 | loginid | ||
密码 | STRING | password | 否 | 密码 | password | 如无必要,可以不配置密码同步 |
性别 | gender | 是 | 性别 | sex | ||
手机号 | phone | 是 | 移动电话 | mobile | ||
用户状态(自定义) | ENUM | userStatus | 是 | 用户状态 | userStatus | 枚举 |
邮箱 | 是 | 邮箱 | 邮箱格式 | |||
生日(自定义) | STRING | birthday | 否 | 用户生日 | birthday | yyyy-mm-dd |
办公室(自定义) | STRING | workroom | 否 | 办公室 | workroom | |
工号(自定义) | STRING | workcode | 是 | 工号 | workcode | |
姓名(自定义) | STRING | lastName | 是 | 用户名 | lastname | |
职级(自定义) | STRING | joblevel | 否 | 职级 | joblevel | >=0 数字 |
民族(自定义) | STRING | folk | 否 | 民族 | folk | |
职称(自定义) | STRING | jobcall | 否 | 职称 | jobcall | |
职责描述(自定义) | STRING | jobactivitydesc | 否 | 职责描述 | jobactivitydesc | |
安全级别(自定义) | STRING | seclevel | 否 | 安全级别 | seclevel | >0 数字 |
用户排序(自定义) | STRING | userOrder | 否 | 用户排序 | userOrder | >=0数字 |
说明:
- 其中,红框内为用户自定义属性
- 注意: 用户自定义的属性一定要关联上对应的用户分类中去
- 用户排序字段: 新增人员时泛微oa中人员排序是递增的,无法指定,但是更新人员信息的时候可以更新此排序字段
- 下面三个属性不能乱写,否则会报错
Jobtitle 为岗位名称
Jobgroupid 为职务类别
Jobactivityid 为职务名称
对应这下游的,如图:
注意: idaas平台中的一级组织同步到泛微oa中是分部,泛微oa中分部是不能存人的,所以idaas平台中的一级组织下面不要直接存人
2)组织属性映射
SSO360字段名称 | 自定义字段数据类型 | SSO360字段 | 是否必填 | 泛微OA字段名称 | 泛微OA字段 | |
---|---|---|---|---|---|---|
组织名称 | orgName | 是 | 组织全称 | _fullname | ||
组织简称(自定义) | STRING | simpleName | 是 | 组织简称 | _shortname | |
是否删除 | isDeleted | 是 | 是否封存 | _canceled | ||
上级分部(自定义) | ENUM | parentSubcompay | 是 | 上级分部 | parentSubcompanyCode | 枚举 分部code |
组织编码 | STRING | orgCode | 是 | 组织编码 | _code | |
组织类型 | ENUM | orgType | 是 | 组织类型 | orgType | 枚举 1:分部 2:组织 |
组织排序 | STRING | orgOrder | 否 | 组织排序 | orgOrder | >=0 数字 |
shortName 为组织简称 , 下游组织都是以简称展示的
parentSubcompay 为上级分部 , 是个枚举类型
上级分部示例枚举值如下:(根据你实际分部来定义)
0 : 无 (必须填写,正式环境测试环境都一样)
1 : 上海市数字证书认证中心有限公司
2 : 上海神兵信息安全有限公司
具体的枚举key的值要看下游泛微oa中的分部code
注意: 组织的自定义的属性一定要关联上到组织默认分类当中去
新增根分部时 , 上游所属分部选择 无 即可, 例如下面的 SSO360测试组2
如果要新增分部,请将我们这边的一级部门的id和名称添加至 parentSubcompay 枚举型中,供其下子部门选择
例如:
- 配置同步的属性映射字段,并点击保存按钮
下游同步用户属性映射配置参考图
其中 红框内为用户自定义属性
Locationid 为 工作地点
Jobtitle 为岗位名称
Jobgroupid 为职务类别
Jobactivityid 为职务名称
对应这下游的,如图:
下游同步组织属性映射参考图
shortName 为组织简称 , 下游组织都是以简称展示的
- 在同步任务列表,点击执行按钮,则数据同步开始,执行完成后,可以点击同步历史按钮,查看同步结果
# 验证同步结果
在泛微OA管理后台,【人事管理>通讯录】模块,查看您从SSO360同步到泛微OA的组织和用户数据。