1. 3 技术规范与扩展开发
1.1. 3.1用户绑定
3.1.1推送
REST认证地址:/seeyon/rest/token/{username}/{password}
可绑定多个用户推送接口地址:/seeyon/rest/thirdpartyUserMapper/binding
单用户推送接口地址:/seeyon/rest/thirdpartyUserMapper/binding/singleUser
{"userlist": [ {"registerCode": "注册系统编码","thirdUserId": "第三方系统用户主键","thirdLoginName": "","thirdName": "","thirdCode": "","thirdMobile": "","thirdEmail": "","param0": "扩展参数或属性","param1": "扩展参数或属性","noneBindingSender":"发起人的登录名称、人员编码、邮件、手机号","noneBindingReceiver":"接收人的登录名称、人员编码、邮件、手机号" } ]} |
---|
3.1.2主动绑定
/***绑定用户主动取模式下的第三方系统接口定义*@authorzhangyong*/publicinterfaceThirdpatyUserProvider {/***需要和系统注册中编码一致**@return注册系统编码*/ String registerCode();/***实现此方法可实现批量绑定用户**@returnThirdpartyUserMapperImporter的集合*/ List<ThirdpartyUserMapperImporter> getBatchThirdpartyUsers(String...registerCode);/***实现此方法可返回第三方用户信息*@paramthirdLoginName:第三方用户登录名 ;thirdCode: 第三方用编码*@returnThirdpartyUserMapperImporter实体对象*/ ThirdpartyUserMapperImporter findSingleThirdpartyUser(StringthirdLoginName,StringthirdCode,String...registerCode);/***第三方用户账号密码验证,个人绑定第三方用户需要有安全校验,如果不需要校验可以直接返回true,但不建议这么做*@paramthirdLoginName: 第三方用户登录名; thirdPassword:第三方用户密码*@return检查通过返回true,检查不通过返回false*/booleancheckThirdpartyUserAccount(StringthirdLoginName,StringthirdPassword,String...registerCode); |
---|
3.1.3接口定义方式
接口类型 | 接口地址 | 请求内容类型 | 请求参数 |
---|---|---|---|
自动匹配 | 自定义 | application/x-www-form-urlencoded | isBatch=true |
新建用户匹配 | 自定义 | application/x-www-form-urlencoded | loginName/code |
修改用户匹配 | 自定义 | application/x-www-form-urlencoded | loginName/code |
个人用户认证匹配 | 自定义 | application/x-www-form-urlencoded | loginName/passWord |
3.1.4 用户绑定数据字段列表
字段名称 | 描述 | 是否必填 |
---|---|---|
thirdUserId | 第三方人员主键(保证唯一) | 必填 |
registerCode | 为第三方配置的系统注册编码 | 必填 |
thirdLoginName | 第三方人员登录名称,默认匹配项 | 必填 |
thirdName | 第三方人员姓名 | 非必填 |
thirdCode | 第三方人员编码(协同如果设置了按人员编码匹配则必填) | 非必填 |
thirdMobile | 第三方人员手机号(协同如果设置了按手机号匹配则必填) | 非必填 |
thirdEmail | 第三方人员电子邮件(协同如果设置了按邮件匹配则必填) | 非必填 |
1.2. 3.2消息集成开发
3.2.1推送
3.2.1.1接口地址:
REST认证地址:/seeyon/rest/token/{username}/{password}
多条消息:/seeyon/rest/thirdpartyMessage/receive/messageList
单条消息:/seeyon/rest/thirdpartyMessage/receive/singleMessage
3.2.1.1/receive/messageList的json格式如下:
{"messages": [ {"thirdpartyRegisterCode": "注册系统编码","thirdpartyMessageId": "第三方系统消息主键","messageContent": "消息内容","thirdpartySenderId": "第三方系统发送者主键","thirdpartyReceiverId": "第三方系统接收人主键","creation_date": "消息创建日期,格式yyyy-MM-dd HH:mm","downloadUrl": "原生app的下载地址","messageH5URL": "H5穿透地址","messageURL": "PC穿透地址","noneBindingSender":"登录名称/人员编码/手机号/电子邮件","noneBindingReceiver":"登录名称/人员编码/手机号/电子邮件" } ]} |
---|
注:穿透地址需要完整的http/https格式
3.2.1.2/receive/messageList的json格式如下:
{"thirdpartyRegisterCode": "注册系统编码","thirdpartyMessageId": "第三方系统消息主键","messageContent": "消息内容","thirdpartySenderId": "第三方系统发送者主键","thirdpartyReceiverId": "第三方系统接收人主键","creation_date": "消息创建日期,格式yyyy-MM-dd HH:mm","downloadUrl": "原生app的下载地址","messageH5URL": "H5穿透地址","messageURL": "PC穿透地址","noneBindingSender":"登录名称/人员编码/手机号/电子邮件","noneBindingReceiver":"登录名称/人员编码/手机号/电子邮件" } |
---|
3.2.2主动取消息
实现ThirdpartyMessagePullProvider类,会依据定时任务取外部系统消息,和注册应用一一对应
/****@ClassName: ThirdpartyMessagePullProvider*@Description:第三方消息拉取模式接口,实现后CIP会定时抓取此第三方系统做过绑定映射人的待办 **/publicabstractclassThirdpartyMessagePullProvider {/***需要和系统注册中编码一致**@return注册系统编码*/ String registerCode();/***自行实现,系统指定第三方系统人员主键列表**@return返回 MessageReceiveVo 集合*/abstractprotectedList<MessageReceiveVo> pull(List<String>thirdAccountList, StringregisterCode,String...serviceURL); |
---|
3.2.3取消息触发URL和接口:
接口类型 | 接口地址 | 请求内容类型 | 输入参数 | 内容 |
---|---|---|---|---|
URL | 自定义 | application/json | 无需配置 | [绑定第三方用户主键id,......] |
接口 | 自定义 | application/json | [绑定第三方用户主键id,......] |
3.2.4消息数据字段列表
字段名称 | 描述 | 是否必填 | |||
---|---|---|---|---|---|
thirdpartyMessageId | 第三方消息主键(保证唯一) | 必填 | |||
thirdpartyRegisterCode | 为第三方配置的系统注册编码 | 必填 | |||
messageContent | 消息内容 | 必填 | |||
thirdpartySenderId | 第三方消息发起人主键(保证唯一) | 非必填 | |||
thirdpartyReceiverId | 第三方消息接收人主键(保证唯一) | 必填 | |||
creation_date | 消息创建时间(格式:yyyy-MM-dd HH:mm:ss) | 必填 | |||
downloadUrl | 原生应用下载地址(仅选则原生类型后提供),移动端没有安装程序跳转到此地址 | 非必填 | |||
messageURL | PC端穿透链接 | 非必填 | |||
messageH5URL | 移动端穿透链接 | 非必填 | |||
appParam | 原生应用穿透命令,穿透命令需要按这个顺序:iphone\ | ipad\ | android\ | wp,其中用户登录名称由v5提供则可代替{$userName$},如果外部系统需要验证v5登录状态,可使用{$token$}标识 | 非必填 |
3.2.5消息单点登录
【穿透认证】无认证、V5auth认证、第三方认证。
【V5auth认证】如果是移动URL接入,如果是v5auth认证在PC和移动端穿透时都会带上第三方系统的URL?v5ticket=***;
l外部系统回调v5人员状态,如:http://v5地址+port/seeyon/login/sso?from=m3token&token=ticket
【无认证】完全依据第三方链接穿透,无单点登录认证过程。
【第三方认证】需要配置认证接口(接口应用类型为认证接口),自定义认证参数名称。
1.3. 3.3待办集成开发
3.3.1 接口地址:
REST认证地址:/seeyon/rest/token/{username}/{password}
单条待办:/seeyon/rest/thirdpartyPending/receive
多条待办:/seeyon/rest/thirdpartyPending/receive/pendings
更新待办状态:/seeyon/rest/thirdpartyPending/updatePendingState
3.3.2 receive/pendings的json格式:
{"pendingList": [ {"registerCode": "注册系统编码","taskId": "第三方系统待办主键","title": "待办标题","senderName": "待办发起人姓名","classify": "类别","contentType": "内容类型","state": "状态0待办,1已办","thirdSenderId": "第三方系统发送者主键","thirdReceiverId": "第三方系统接收人主键","creationDate": "待办发起日期,格式yyyy-MM-dd HH:mm","content": "原生app的下载地址","h5url": "H5穿透地址","url": "PC穿透地址","noneBindingSender":"登录名称/人员编码/手机号/电子邮件","noneBindingReceiver":"登录名称/人员编码/手机号/电子邮件" } ]} |
---|
3.3.3 receive的json格式:
{"registerCode": "注册系统编码","taskId": "第三方系统待办主键","title": "待办标题","senderName": "待办发起人姓名","classify": "类别","contentType": "内容类型","state": "状态0待办,1已办","thirdSenderId": "第三方系统发送者主键","thirdReceiverId": "第三方系统接收人主键","creationDate": "待办发起日期,格式yyyy-MM-dd HH:mm","content": "原生app的下载地址","h5url": "H5穿透地址","url": "PC穿透地址","noneBindingSender":"登录名称/人员编码/手机号/电子邮件","noneBindingReceiver":"登录名称/人员编码/手机号/电子邮件" } |
---|
3.3.4主动取待办
实现ThirdpartyPendingPullProvider类,会依据定时任务取外部系统待办,和注册应用一一对应
/***第三方待办拉取模式接口,实现后CIP会定时抓取此第三方系统做过绑定映射人的待办*@authorzhangyong*/publicabstractclassThirdpartyPendingPullProvider {/***需要和系统注册中编码一致**@return注册系统编码*/ String registerCode();/***自行实现,系统指定第三方系统人员主键列表**@param第三方用户账号列表*@return返回ThirdPendingVO 集合*/abstractprotectedList<ThirdPendingVO> pull(List<String>thirdAccountList,StringregisterCode,String...serviceURL); |
---|
取待办触发URL和接口:
接口类型 | 接口地址 | 请求内容类型 | 输入参数 | 内容 |
---|---|---|---|---|
URL | 自定义 | application/json | 无需配置 | [绑定第三方用户主键id,......] |
接口 | 自定义 | application/json | [绑定第三方用户主键id,......] |
3.3.5待办数据字段列表
字段名称 | 描述 | 是否必填 | |||
---|---|---|---|---|---|
taskId | 第三方待办主键(保证唯一) | 必填 | |||
registerCode | 系统注册编码 | 必填 | |||
title | 待办标题 | 必填 | |||
thirdSenderId | 第三方待办发起人主键 | 非必填 | |||
senderName | 第三方待办发起人姓名 | 必填 | |||
thirdReceiverId | 第三方待办接收人主键(保证唯一) | 必填 | |||
creationDate | 待办创建时间(格式:yyyy-MM-dd HH:mm:ss) | 必填 | |||
state | 状态:0:未办理;1:已办理 | 必填 | |||
subState | 处理后状态:0/1/2/3同意已办/不同意已办/取消/驳回 | 非必填 | |||
content | 生应用下载地址(仅选择原生类型后提供),移动端没有安装程序跳转到此地址 | 非必填 | |||
url | PC端穿透链接 | 非必填 | |||
h5url | 移动端穿透链接 | 非必填 | |||
appParam | 原生应用穿透命令,穿透命令需要按这个顺序:iphone\ | ipad\ | android\ | wp,其中用户登录名称如是代替{$userName$},如果外部系统需要验证v5登录状态,可使用{$token$}标识 | 非必填 |
3.3.6更新待办状态
字段名称 | 描述 | 是否必填 |
---|---|---|
taskId | 第三方待办主键(保证唯一) | 必填 |
registerCode | 系统注册编码 | 必填 |
state | 状态:0:未办理;1:已办理 | 必填 |
subState | 处理后状态:0/1/2/3同意已办/不同意已办/取消/驳回 | 必填 |
3.3.7待办单点登录
【穿透认证】无认证、V5auth认证、第三方认证。
【V5auth认证】如果是移动URL接入,如果是v5auth认证在PC和移动端穿透时都会带上外部系统URL?v5ticket=***;
l外部系统回调v5人员状态,如:http://v5地址+port/seeyon/login/sso?from=m3token&token=ticket
【无认证】完全依据第三方链接穿透,无单点登录认证过程。
【第三方认证】需要配置认证接口(接口应用类型为认证接口),自定义认证参数名称。
1.4. 3.4单点登录
操作说明:目前【认证模式】分为门户认证机制、第三方认证机制、用户密码认证、第三方Token认证机制这4种。
3.4.1门户认证机制
1)流程图
2)详细说明
(一)v5获取到“SSO接口”地址会带上当前登录人员信息ticket如下,“SSO接口”+“&ticket=***”访问
(二)第三方系统获取ticket后调此地址完成握手:http://a8:80/seeyon/thirdpartyController.do?ticket=\*\*,OA返回HTTP头信息里面包括:LoginName\(协同OA或外部用户登录名称\),MemberId\(协同OA用户ID\),MemberName\(协同OA人员姓名\)M3URL\(M3代理服务器地址\),如果做了用户映射,则LoginName为第三映射的用户登录名称,MemberId和MemberName则不返回,
(三)验证此用户成功后,返回给OA字符串为SSOOK,如果失败返回SSOLogoutError字符串
(四)外部系统需要自行保存下ticket信息和第三方用户的映射信息
(五)协同OA依据接入类型获取到PC登录地址获取或H5登录地址后带上&ticket=***&from=A8&interneturl=**访问外部系统, interneturl为协同OA地址。
3.4.2第三方认证机制
/*****/publicinterfaceThirdpartyAuthenticationPortal {/***第三方系统认证page获取 ,返回自定义的参数,如aa=***&bb=***系统会自动依据PC登录地址和H5登录地址进行拼接跳转*@parammemberId*@paramloginAccountId*@return*/ String getpageUrl(longmemberId,longloginAccountId);/***注册第三方系统编码*@return*/ String registerCode();} |
---|
3.4.3用户名和密码认证
图 用户密码认证
3.4.4 第三方Token认证机制
【请求过程】认证接口或多个认证接口->页面跳转接口定义->第三方登录
图 第三方Token认证
3.4.5 以携程接入举例说明:
图 认证接口语义定义
图 输入参数
图 返回参数
图 页面跳转接口语义定义
图 页面跳转接口传入参数定义