开放平台新特性:签名认证与加密策略

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

开放平台新特性:签名认证与加密策略

发布版本:苍穹V5.0

上线日期:2022-11-17

补丁号:V5.0.011(BOS)

特性效果展示

苍穹开放平台签名认证是一种第三方系统和金蝶云苍穹 双向签名认证+加密/解密的一种认证方式,解决了第三方系统和金蝶云苍穹安全高效的接口交互,支持接口参数防篡改,数据完整性和隐私安全性,可支持金融交易,海关等高安全性应用场景。


金蝶云苍穹签名认证流程: 

  1. 配置签名认证相关参数;

  2. 编写签名认证相关签名和加密/解密代码;

  3. 编写业务接口处理代码;

  4. 调试接口。


1)配置第三方应用的签名认证,获取关键参数

如下图所示,打开签名认证开关,选择签名策略,支持SHA256签名,设置认证密钥(appSecret), 配置代理用户,并复制Secret key。然后配置加密API,如果全部API都加密直接打开加密全部API开关,否则就配置需要加密的API,下载平台公钥证书。




注意:接口只支持POST请求


2)签名认证过程

  1. 第三方系统产生随机会话密钥randomKey, 通过randomKey把data域通过加密策略加密,同时将会话密钥randomKey通过平台公钥RSA加密,放入字段dgtlEnvlp中;

  2. 第三方系统通过SHA256将随机数,时间戳及整个body报文进行加签后发请求到金蝶云苍穹开放平台API接口;

  3. 金蝶云苍穹开放平台通过openApiSign(SecretKey)基本验证后,获取代理用户,第三方应用ID及数据中心,通过后进行验证签名,验证签名过程中,要检查随机数是否合法,检查时间戳时间合法及参数的有效性;

  4. 金蝶云苍穹开放平台验证签名通过后解密敏感数据,还原原来的数据,进行API接口处理,查询或保存等;

  5. 金蝶云苍穹开放平台产生随机数,加密返回结果数据;

  6. 金蝶云苍穹开放平台对返回结果数据进行SHA256签名;

  7. 第三方系统接收到返回结果进行验证签名,通过后下一步;

  8. 第三方系统解密返回的结果,进行相关业务处理。





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算法和认证密钥keybody参数和timestampsignatureNonce进行摘要后的结果。公式:HMACSHA256body参数+timestamp+signatureNoncekey


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)




开放平台新特性:签名认证与加密策略

发布版本:苍穹V5.0上线日期:2022-11-17补丁号:V5.0.011(BOS) 特性效果展示 ...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息