开放平台新特性:签名认证与加密策略
发布版本:苍穹V5.0
上线日期:2022-11-17
补丁号:V5.0.011(BOS)
特性效果展示
苍穹开放平台签名认证是一种第三方系统和金蝶云苍穹 双向签名认证+加密/解密的一种认证方式,解决了第三方系统和金蝶云苍穹安全高效的接口交互,支持接口参数防篡改,数据完整性和隐私安全性,可支持金融交易,海关等高安全性应用场景。
金蝶云苍穹签名认证流程:
配置签名认证相关参数;
编写签名认证相关签名和加密/解密代码;
编写业务接口处理代码;
调试接口。
1)配置第三方应用的签名认证,获取关键参数
如下图所示,打开签名认证开关,选择签名策略,支持SHA256签名,设置认证密钥(appSecret), 配置代理用户,并复制Secret key。然后配置加密API,如果全部API都加密直接打开加密全部API开关,否则就配置需要加密的API,下载平台公钥证书。
注意:接口只支持POST请求
2)签名认证过程
第三方系统产生随机会话密钥randomKey, 通过randomKey把data域通过加密策略加密,同时将会话密钥randomKey通过平台公钥RSA加密,放入字段dgtlEnvlp中;
第三方系统通过SHA256将随机数,时间戳及整个body报文进行加签后发请求到金蝶云苍穹开放平台API接口;
金蝶云苍穹开放平台通过openApiSign(SecretKey)基本验证后,获取代理用户,第三方应用ID及数据中心,通过后进行验证签名,验证签名过程中,要检查随机数是否合法,检查时间戳时间合法及参数的有效性;
金蝶云苍穹开放平台验证签名通过后解密敏感数据,还原原来的数据,进行API接口处理,查询或保存等;
金蝶云苍穹开放平台产生随机数,加密返回结果数据;
金蝶云苍穹开放平台对返回结果数据进行SHA256签名;
第三方系统接收到返回结果进行验证签名,通过后下一步;
第三方系统解密返回的结果,进行相关业务处理。
3)请求实例
URL: {host}/kapi/v2/kdtest/open/openapi_unittest/findOrders 请求方式:POST 请求Header参数: Content-Type=application/json OpenApiAuth=5 请求BODY参数: { "dgtlEnvlp": "6F56001A8479097414D4F3137C25D0A72EA7D3D9D089AF0498CC1CF9CD90C8D583C0135049B64764AEE26C30DA1C1295F5F21C80F3DC901293A8C64624B66399B95255E8932C3D8F9E65F1FE6AD091948DB8BED453E80B8A4CF2E32E0227E9AEC96B3BE5B57C457589B7578EBADC6EBB4F5ABDD98B6614E3C741AA691FF0259D", "encryptData": "AAAADKPWJMKRjHiwR67fLSUUfkwcZo0XJQeSEGExBDp1jDCqGl+FB8GNLUQXzLsIdP6kbkyCNTPpYLdu4x5f7EJgPbzJ7fLWN+Cs44OJMKeHapFOgKM=", "signature": "712f5d468ecb13c8b8fc24118d23bc541a93d2f3d6b5f998af8952bbc862387c", "signatureNonce": "0f8cf008-9095-4ce7-9600-e28e564aaae7", "timestamp": "2022-10-19 15:26:33" } 请求结果: { "accountId": "1355633519610561536", "authType": "5", "data": { "data": null, "errorCode": "0", "message": null, "status": true }, "dgtlEnvlp": "0EEFE62AA75CF03638568D30AC5CC165637529632E0E2A9CB1C77E28645D8DD7555DBB52EA78758798A366D375E1E46D314C5B7D41F461757793FCECEE948D41428F69D1A304110FE469DCA6BA032DA599F244F11408915BB76EE7275CE3595578E1FA6E4CF0A96FE3B6642631D2B0DCD5090F9C762D16032138AD4C198271AF", "encryptData": "AAAADIULnyBUVP/qDzgdateRk6LdD7puKpNdXSNYEHtnsYxZUwucf5Jc8MrbEMDvqV8dIr/uKH3jTvsfQXMZuzI88JaX+s9KfxMYgL5382dDPigkaASyCbtRJkm4LTyIkd96JmJAzeZQYOSsk9OFfJFfpT0rFbpNRHcs5t5sPfB7iI91UtjRCg==", "signature": "1af6b267b0c74801996cb7a6b621eb44a6a95fc496128373ed3f8bfd5d2dca00", "signatureNonce": "5bfb355d-6966-4289-935a-17d64fa86994", "thirdId": "1520516744903424000", "timestamp": "2022-10-19 15:26:34", "url": "/kapi/v2/kdtest/open/openapi_unittest/findOrders" } |
请求Header参数:
参数名 | 字段类型 | 是否必填 | 字段说明 |
Content-Type | string | 是 | application/json |
OpenApiAuth | string | 是 | 认证类型,”1“-AccessToken认证,”2“-摘要认证,”3“-JWT认证,”4“-基本认证,”5“-签名认证 |
请求BODY参数:
参数名 | 字段类型 | 是否必填 | 字段说明 |
dgtlEnvlp | string | 是 | 随机会话密钥,通过平台公钥加密后的字符串 |
encryptData | string | 是 | 通过随机会议加密,采用加密策略加密后的字符串 |
signatureNonce | string | 是 | 访问随机数,最好32位uuid,如果随机数已经访问过,则再次访问无效 |
timestamp | string | 是 | 当前时间,和服务器时间相差10分钟就为无效请求,目前格式为yyyy-MM-dd HH:mm:ss,以后为时间戳 |
signature | string | 是 | 用SHA-256算法和认证密钥key对body参数和timestamp,signatureNonce进行摘要后的结果。公式:HMACSHA256(body参数+timestamp+signatureNonce,key) |
body参数为请求API接口的参数,body全部参数参与签名。
请求响应参数:
参数名 | 字段类型 | 字段说明 |
accountId | string | 数据中心ID |
thirdId | string | 第三方应用ID |
dgtlEnvlp | string | 随机会话密钥,通过平台私钥加密后的字符串 |
encryptData | string | 通过随机会议加密,采用加密策略加密后的字符串 |
signatureNonce | string | 访问随机数,最好32位uuid,如果随机数已经访问过,则再次访问无效 |
timestamp | string | 当前时间,和服务器时间相差10分钟就为无效请求,目前格式为yyyy-MM-dd HH:mm:ss,以后为时间戳 |
signature | string | 用SHA-256算法和认证密钥key对body参数和timestamp, signatureNonce进行摘要后的结果。公式:HMACSHA256(body参数+timestamp+signatureNonce,key) |
开放平台新特性:签名认证与加密策略
本文2024-09-23 00:27:12发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-139557.html