Validate Apple StoreKit2 in-app purchase receipt jwsRepresentation in backend (node ideally, but anything works)(在后端验证Apple StoreKit2应用内购买收据jws表示(理想情况下是节点,但一切都可以))
问题描述
如何在Node的后端验证来自StoreKit2的应用内购买JWS表示?
解码有效负载非常简单,但是我在任何地方都找不到苹果用来签署这些JWS/JWTs的公钥。在我使用JWT的任何其他时候,您只需使用节点jsonwebtoken
库并传入签名者公钥或共享密钥(配置的或从JWK获取的)。
我可以使用node-jose
j.JWS.createVerify().verify(jwsString, {allowEmbeddedKey: true}).then(r => obj = r)
轻松解码JWS,它给出了如下对象:
{
protected: [ 'alg', 'x5c' ],
header: {
alg: 'ES256',
x5c: [
'MIIEMDueU3...',
'MII...,
'MIICQzCCAcmgAwIBAgIILcX8iNLFS5UwCgYIKoZIzj0EAwMwZzEbMBkGA1UEAwwSQXBwbGUgUm9vdCBDQSAtIEczMSYwJAYDVQQLDB1BcHBsZSBDZXJ0aWZpY2F0...'
]
},
payload: <Buffer 7b 22 74 72 61 6e 73 61 63 74 69 6f 6e 49 64 22 3a 22 31 30 30 30 30 30 30 38 38 36 39 31 32 38 39 30 22 2c 22 6f 72 69 67 69 6e 61 6c 54 72 61 6e 73 ... 420 more bytes>,
signature: <Buffer f8 85 65 79 a1 dc 74 dd 90 80 0a a4 08 85 30 e7 22 80 4c 20 66 09 0b 84 fc f4 e5 57 53 da d5 6f 13 c6 8f 56 e8 29 67 5c 95 a6 27 33 47 1e fe e9 6e 41 ... 14 more bytes>,
key: JWKBaseKeyObject {
keystore: JWKStore {},
length: 256,
kty: 'EC',
kid: 'Prod ECC Mac App Store and iTunes Store Receipt Signing',
use: '',
alg: ''
}
}
而且JSON很容易解析有效负载并获得我想要的数据。但是,如何使用x5c
字段中的证书链验证其真实性
谢谢!
推荐答案
最终解决了这个问题。原来我们需要硬编码的";证书来进行检查。
Apple在their website上拥有所需的证书。您已经下载了根证书(因为它是对整个链进行签名的证书),但是您也可以获得中间证书。
下载后将其转换为.pem
:
$ openssl x509 -inform der -in apple_root.cer -out apple_root.pem
然后您需要做的就是对照JWS中的代码进行验证:
if (openssl_x509_verify($jws_root_cert, $downloaded_apple_root_cert) == 1){
//valid
}
希望这对其他人有帮助!
这篇关于在后端验证Apple StoreKit2应用内购买收据jws表示(理想情况下是节点,但一切都可以)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在后端验证Apple StoreKit2应用内购买收据jws表示(理想情况下是节点,但一切都可以)
基础教程推荐
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01