1、配置接口白名单
在ecology系统代码目录中找到以下配置文件:
在后面添加
配置后的白名单需要重启生效
2、发放/生成许可证(appid)
就是向数据库插入一条记录,之后访问的话会匹配这条记录,用于身份认证
在ecology系统数据库执行以下脚本示例(请不要直接使用示例中的数据!):
字段描述:
- ID:数据库主键。保证与其它系统发放的许可证在数据库中的主键标识不冲突即可()
- APPID:许可证号码。最终发放给异构系统的许可证号码,多个许可证号码保证唯一()
- NAME:许可证名称。用于快速辨识许可证发放系统()
3、限制许可证使用ip地址
在ecology系统代码目录中找到以下配置文件:
在后面添加客户调用方服务器实际的ip地址(不设置将代表不限制任何ip,生产环境建议设置)
1、引入RSA加密算法工具jar包到异构系统
- java开发语言的客户可以直接在ecology系统代码目录中找到文件引入到异构系统项目资源目录下。或自行引用hutool https://hutool.cn/
- C#开发语言异构系统的rsa算法案例:下载案例
- 其他开发语言的异构系统请自行查询一下底层库实现的rsa算法。
在线测试rsa算法加解密网站:在线RSA测试
关于RSA算法请参考百度百科:RSA算法
2、JAVA演示代码(下载演示代码)
打印结果:
第0步:获取postman请求模板、下载演示视频
(下载请求模板)
(下载演示视频)
3.1、第一步:向OA系统发送许可证信息进行注册认证(只需要注册一次即可,后面多次注册会更新密钥导致解密失败,最新版本的ecology已经隔离出注册和更新接口)
- 许可证注册接口
请求URL:
请求方式:
- POST
请求头部参数(request headers):
请求体参数(request body):
无
返回示例(response body)
返回参数说明
返回错误示例一
返回错误示例二:注册失败没有找到正确APPID
问题原因:
1.appid填写错误(有可能是换行,加入了特殊字符导致的问题,建议使用postman或其它工具先测试)
2.在数据库执行上面没有提交事务(没有使用commit)
3.请求服务器对应的数据库并不是插入记录的数据库
4.缓存问题,需要清理缓存解决:oa地址+/commcache/cacheMonitor.jsp
3.2、第二步:向OA系统发送获取token请求
- 获取token接口
请求URL:
请求方式:
- POST
请求头部参数(request headers):
在线RSA加密算法网站:在线RSA测试
关于RSA算法请参考百度百科:RSA算法
请求体参数(request body):无
返回示例
返回参数说明
返回错误示例一
- 说明appid填写错误,请仔细检查后台数据库ecology_biz_ec表中是否有此appid
返回错误示例二
- 第一步接口再次请求时会更新原有密钥,导致密钥不匹配解密失败,因此第一步获取密钥时只获取一次即可,后面每次获取都会更新原有密钥,调用方应妥善保管好appid、secret、spk等信息,如果密钥被更新,新版本kb已经将密钥获取和更新分开,可升级至最新版本kb
- 经过再三检查发现怎么调用都是解密失败,特别是前一段时间能用,集成北森jar包、更新kb之后突然就不能用了,这可能是因为jar包冲突导致的问题,请跳转到“四”获取jar包冲突的解决方案
3.3、第三步:通过token的方式认证调用ECOLOGY系统业务接口
请求URL:
请求方式:
- GET | POST | PUT | DELETE
请求头部参数:
说明:userid必填!否则将无法通过token认证;另外
接口参数:按照相关业务模块接口规范编写
返回示例
返回参数说明
返回错误示例一
- 如果客户是集群环境,并且经常复现此类错误,请检查redis是否正常,如果没有使用redis,我这边可以修改为只使用数据库进行存储token,防止复现
- 正常调用出现此类错误的,可以使用postman进行测试,看看token是否很快过期,token很快就过期可能是因为缓存问题,我这边可以修改为只使用数据库进行存储token,防止复现.
返回错误示例二
密钥不匹配返回500并附带图片:密钥不匹配导致的问题
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qwcRhd3P-1670554628215)(C:UsersDELLPictures文档图片密钥不匹配.png)]
返回错误示例三
账户异常:最新版本的会显示出解密后哪个账户异常,账户异常请检查该账户是否被冻结、是否未设置密码、用户名、是否存在该账户、license数量是否充足等信息
4.1 北森jar冲突
查看stderr.log可发现以下报错(签名没有认证)或者其他报错(jar冲突)
如果发现了上述文件的报错,北森那边暂时只能提供源码解决依赖冲突,暂时没有其他解决方案
如果ecology/WEB-INF/lib路径下存在Beisen.OIDC.SDK.1.8.jar,可以屏蔽掉并重启测试token是否正常
如果没有上述报错,lib下存在Beisen.OIDC.SDK.1.8.jar也会发生冲突,目前北森提供的只有源码,这个地方应该北森来解决而不是我们来解决
4.2 bcprov问题
查看stderr.log寻找以下报错信息,签名没有认证
替换为1.68最新版本(需重启ecology)
下载链接:
(下载jar)
5.1 公钥私钥的有效时间
只要不被更新就是永久有效
5.2 applytoken接口一直解密失败
先使用postman进行测试,如果第二步一直失败,请按照四、jar包冲突的解决方案进行解决
5.3 regist接口调用后之前的解密失败
adDoc?tokenKey=cloudstore/2022/09/C/d9c6c8dd-2345-4c5e-8ad9-b5716be89a87.wfile&fileName=jarfile.zip&appId=af09c25938714c26b9736f535ca20fc9&access_token=592acc7aa11012e8fc215a37d4f7473115f682eec0099006d6aad6f3c7a910ed762513a49008e7a90add5aa62fa27229736c8e229c99da05))
5.1 公钥私钥的有效时间
只要不被更新就是永久有效
5.2 applytoken接口一直解密失败
先使用postman进行测试,如果第二步一直失败,请按照四、jar包冲突的解决方案进行解决