
1、调用OA鉴权接口的过程
用于第三方系统调用OA鉴权接口时做为一个参考
认证流程时序图
第一步、注册许可
说明
请求地址:
http://泛微服务地址/api/ec/dev/auth/regist
请求方式:post
请求头部参数(request headers):
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string | 许可证号码,泛微提供 |
cpk | 是 | string | 异构系统公钥(无用,但是必传,可传123 ) |
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
status | boolean | 响应状态。true:成功,false:失败 |
code | String | 响应码。0代表成功 |
errcode | String | 错误码。0代表成功(可忽略) |
msg | String | 响应信息 |
msgShowType | String | 信息显示类型。默认“none” |
secrit(或secret) | String | 秘钥信息。注意此处secrit单词拼写错误(原词为:secret),请使用 secrit获取结果 |
spk | String | 系统公钥信息 |
对应JAVA请求示例代码
String publicKey = "123";
//调用ECOLOGY系统接口进行注册
String data = HttpRequest.post(address + "/api/ec/dev/auth/regist")
.header("appid", APPID)
.header("cpk", publicKey)
.timeout(2000)
.execute().body()
Map<String, Object> datas = JSONUtil.parseObj(data);
工具调用截图
第二步、获取token
请求URL:
- http://泛微服务地址/api/ec/dev/auth/applytoken
请求方式:
- POST
请求头部参数(request headers):
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string | 许可证号码,泛微提供(同第一步) |
time | 否 | int | token过期时间(单位:秒,不传默认1800秒,也就是30分钟过期) |
secret | 是 | string | 通过spk(第一步得到)对secret(第一步得到)进行RSA加密后的密文。 |
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
status | boolean | 响应状态。true:成功,false:失败 |
code | String | 响应码。0代表成功 |
msg | String | 响应信息 |
msgShowType | String | 信息显示类型。默认“none” |
token | String | 认证通过的token信息。(默认30分钟内有效) |
JAVA secret 加密示例:
// 公钥加密,所以RSA对象私钥为null
RSA rsa = new RSA(null, spk);
//对秘钥secret进行加密
//encryptSecret 加密后的密钥
String encryptSecret 加密后的密钥 = rsa.encryptBase64(secret, CharsetUtil.CHARSET_UTF_8, KeyType.PublicKey);
在线加密
https://the-x.cn/Cryptography/Rsa.aspx
对应JAVA示例代码:
//调用ECOLOGY系统接口进行注册
String data = HttpRequest.post(address + "/api/ec/dev/auth/applytoken")
.header("appid", APPID)
.header("secret", encryptSecret)
.header("time", "5*1000")
.execute().body();
Map<String, Object> datas = JSONUtil.parseObj(data);
工具调用截图
第三步、调用业务接口
以创建OA流程业务接口为例:
请求URL:
- http://泛微服务地址/api/workflow/paService/doCreateRequest
请求方式:
GET | POST | PUT | DELETE
Content-Type application/x-www-form-urlencoded;charset=utf-8
请求头headers信息
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appid | 是 | String | 泛微系统提供,同第一步 |
token | 是 | String | 第二步获取到的token的值 |
userid | 是 | String | 泛微系统的人员主键通过第一步注册许可时返回spk公钥进行加密生成的密文 |
Content-Type | 否 | string | POST请求必须设置Context-Type为”application/x-www-form-urlencoded; charset=utf-8” |
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
status | boolean | 响应状态。true:成功,false:失败 |
code | String | 响应码。0代表成功 |
msg | String | 响应信息 |
msgShowType | String | 信息显示类型。默认“none” |
示例代码如下:
RSA rsa = new RSA(null,spk);
//createrid 为泛微系统的人员主键,必须传入人员主键,由于OA的流程创建用户校验,且会做为OA流程的创建人
String encryptUserid = rsa.encryptBase64(createrid, CharsetUtil.CHARSET_UTF_8, KeyType.PublicKey);
//调用ECOLOGY系统接口
String data = HttpRequest.post(address + "/api/workflow/paService/doCreateRequest")
.header("appid", APPID)//泛微系统提供,同第一步
.header("token", token)//第二步获取到的token的值
.header("userid", encryptUserid)//加密后的createrid
.header("Content-Type", "application/x-www-form-urlencoded;charset=utf-8")
//map为业务数据参数
.form(map)
.execute().body();