二、认证接口
认证接口主要是接入系统和U聊服务器之间相互认证、信息交互的接口。
2.1 系统认证和绑定
联系U聊开发团队获取系统唯一标识和密码同时,U聊已经和此平台做了绑定,无需特殊处理
2.2 用户绑定
U聊系统使用各组织OA系统账号,在和各系统对接时候,已经导入。如果接入平台同样使用OA系统用户,则不需要做特殊处理,否则需要再各平台做U聊账号到各平台用户映射。
2.3 安全
服务后端接口调用建立在https基础上,保证系统安全。
2.3.1 平台调用U聊接口安全问题
平台通过申请开通时候的系统唯一标识和密码做系统签到,得到apikey凭证,在系统签退前,通过apikey作为调用U聊接口认证凭证(具体参考接口参数)。
2.3.2 U聊调用平台接口安全问题
- 平台设置IP白名单,只信任U聊服务器发来的消息
- 类似U聊,平台提供签到、签退功能,生成调用凭证,在有效期内通过此凭证调用
2.3.3 平台在客户端中运行安全问题
客户端交互参考如下时序
- 平台的前端页面嵌入U聊客户端中,客户端发起链接点击,平台前端需要先判断浏览器cookie是否有效,如果有效表明已经登陆,直接做业务操作,如果无效,需要从平台前端通过JS向U聊客户端框架拿到校验码后带上这个参数跳转到平台后端。
- 平台后端拿到校验码这个参数后,拿校验码向U聊后台询问此次链接点击是否合法,如果合法,U聊服务器会返回用户信息。
- 使用U聊服务器返回的客户信息,平台做模拟登陆后做正常业务,同时把用户信息存入cookie。
具体流程图如下:
2.3.4 平台页面接入U聊约束
- 为确保安全,对接系统嵌入U聊中的页面,请使用HTTPS发布
- 由于手机系统的安全控制,HTTPS证书必须由可信证书颁发机构颁发,并可通过浏览器默认安全检查。
- 对于HTTPS中引用的资源,请注意浏览器的本身安全规范约束,如不能引用HTTP资源、不能引入其他域名地址下的资源(否则带来跨域问题)、不能引用浏览器不可获资源(比如,google analytics访问分析需要引入的资源由于众所周知的原因国内可能无法访问,请不要引入)
2.4 接口详情
2.4.1 获取校验码接口
JS接口,使用cordova框架调用。服务号平台系统前端内嵌在客户端浏览器中,通过JS脚本调用获取校验码。
- 提供方:U聊客户端
- 发起方:接入系统页面JS
- 接口路径:
- 调用方式:JS
- 请求格式:参考附件JS调用案例cordovaExec方法
- 请求编码:UTF-8
- 请求参数:参考附件JS调用案例cordovaExec方法
- 应答格式:application/json;charset=UTF-8
- 应答编码:UTF-8
- 应答数据:
- status:应答码,0表示成功,非0时异常信息见msg
- msg:异常信息
- security:校验码
2.4.2 校验码验证接口
核对校验码是否是服务器颁发的,是否有效。
- 提供方:U聊服务端
- 发起方:接入系统
- 接口路径:/upchat-public-gateway/api/app/checksecurity
- 调用方式:HTTP POST
- 请求格式:application/x-www-form-urlencoded;charset=utf-8
- 请求编码:UTF-8
- 请求参数:
- apikey:消息发送凭据
- security:校验码
- 应答格式:application/json;charset=UTF-8
- 应答编码:UTF-8
- 应答数据:
- status:应答码,0表示成功,非0时异常信息见msg
- msg:异常信息;
- userinfo:用户信息
2.4.3 获取关注用户列表接口
获取平台关注用户列表。
- 提供方:U聊服务端
- 发起方:接入系统
- 接口路径:/upchat-public-gateway/api/app/getattentions
- 调用方式:HTTP POST
- 请求格式:application/x-www-form-urlencoded;charset=utf-8
- 请求编码:UTF-8
- 请求参数:
- apikey:消息发送凭据
- 应答格式:application/json;charset=UTF-8
- 应答编码:UTF-8
- 应答数据:
- status:应答码,0表示成功,非0时异常信息见msg
- msg:异常信息;
- userlist:关注用户列表
2.4.4 OpenApp校验码验证接口
核对校验码是否是服务器颁发的,是否有效。
- 提供方:U聊服务端
- 发起方:接入系统
- 接口路径:/upchat-public-gateway/api/app/checkOpenSecurity
- 调用方式:HTTP POST
- 请求格式:application/x-www-form-urlencoded;charset=utf-8
- 请求编码:UTF-8
- 请求参数:
- app_id: OpenApp的标识
- app_secret: OpenApp消息发送凭据
- security: 校验码
- 应答格式:application/json;charset=UTF-8
- 应答编码:UTF-8
应答数据:
- status:应答码,0表示成功,非0时异常信息见msg
- msg:异常信息;
userinfo:用户信息,包括uoid-用户OpenApp唯一id,fname-姓氏,gender-性别,1-男,0-女
{ "status":"0", "msg":"成功", "userinfo":{ "uoid":"uoid-xxxxxxxxxxx", "fname":"陈", "gender":"1" } }
2.4.5 获取组织架构树
- 接口路径:upchat-public-gateway/api/org/getorgtree
- 调用方式:HTTP POST
- 请求格式:application/x-www-form-urlencoded;charset=utf-8
- 请求编码:UTF-8
- 请求参数:
- apikey: 公众号身份码
- fetchall: 是否获取全量组织架构(0:获取可见范围内的组织架构 1:获取全量组织架构)
- 应答格式:application/json;charset=UTF-8
- 应答编码:UTF-8
应答数据:
- status:应答码,0表示成功,非0时异常信息见msg
- msg:异常信息;
- version:版本号
org:{"xxxx" : "xxxx"……}
案例
{ "status":"0", "msg":"成功", "version":"1521615438579", "org":{ "name":"中国银联", "code":"22", "st":"0", "group":"0", "isCreate":null, "sortNo":"01", "chkDisabled":true, "children":[ { "name":"U聊团队", "code":"33", "st":"0", "group":"0", "isCreate":null, "sortNo":"01!01.01", "chkDisabled":true, "children":null } ] } }
2.4.6 获取指定组织架构人员列表
- 接口路径:upchat-public-gateway/api/org/{orgid}/members
- 调用方式:HTTP POST
- 请求格式:application/x-www-form-urlencoded;charset=utf-8
- 请求编码:UTF-8
请求参数:
- apikey: 公众号身份码
- orgid: 组织架构id
应答格式:application/json;charset=UTF-8
- 应答编码:UTF-8
应答数据:
- status:应答码,0表示成功,非0时异常信息见msg
- msg:异常信息;
userlist:{"xxxx" : "xxxx"……}
案例
{ "status":"0", "msg":"成功", "userlist":[ { "uid":"avc", "userid":"aaa", "empname":"a", "empcode":"0000000", "orgid":"1111", "remark":"cc/dd", "otel":"11111111111", "oemail":"aaa@XXXX.com", "pemail":"aaa@XXXX.com", "mobileno":"111111111", "gender":"1", "degree":null, "pinyin":"aaaaaa", "domain":"unionpay" }, ………… ] }