支付寶小程序:插件 iframe 安全驗證機制

小編:啊南 252閱讀 2020.12.28

CCM 插件喚起機制
CCM 插件是通過打開 alipay.iservice.ccm.service.initialize(isv服務初始化接口)設置的 spi_endpoint 字段的鏈接喚起的,打開 spi_endpoint 鏈接時,CCM 會將頁面上下文的信息以加密的形式加到 url 參數 encryptedContent 上,并加入其它協議及安全相關參數,如:對 url 參數的簽名。商戶或 ISV 收到 spi_endpoint 請求后,應使用 alipay.iservice.ccm.service.initialize 接口預設的應用公私鑰對及返回的 CCM 公鑰按下面的安全驗證機制,完成對接口的驗簽和解密。

 

商戶或 ISV iframe 公私鑰對生成
alipay.iservice.ccm.service.initialize(isv服務初始化接口)預設的應用公私鑰對可以參考以下 JAVA 代碼生成。

import java.security.*;r......rpublic static void main(String[] args) throws Exception {rr  KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");r  keyPairGen.initialize(2048);r  eyPair keyPair = keyPairGen.generateKeyPair();r  String publicKey = Base64Util.encode(keyPair.getPublic().getEncoded());r  String privKey = Base64Util.encode(keyPair.getPrivate().getEncoded());r  System.out.println("pubkey=" + publicKey);r  System.out.println("privkey=" + privKey);rr}
 

 

CCM 插件安全驗證機制
iframe url 參數說明:

method:SPI 配置中的 method,用來告訴第三方系統這是一個什么樣類型的 iframe;

version:該業務數據的格式版本;

encryptedContent:業務數據被 AESKey 加密后的內容。其原始內容為參數 context 的值中增加用戶信息。比如:{"user":{"id":"2015112381984298",  "nickName":"威博"}, "timestamp":"2018-12-20T07:40:31Z"},如果是在工單詳情頁,會額外增加工單id信息,比如:{"ticket":{"id":"1234", "ccsInstanceId":"ZPAKAA"},  "user":{"id":"2015112381984298",  "nickName":"威博"}, "timestamp":"2018-12-20T07:40:31Z"};

encryptType:加密算法名稱,AES;

AESKey:加密秘鑰密文,使用商戶或 ISV 自己的公鑰加密, Base64 編碼格式;商戶或 ISV 可使用私鑰解密得到AES加密密鑰明文;

extProperty:擴展屬性;

signature:Base64(rsaSign(除 signature 參數外的其他參數值拼接, ccm 私鑰)),簽名參數拼接順序按參數名字典序排序。
關聯標簽:
亚洲视频黄色片|免费三级片网站|国产与欧美毛片|三级电影青青网