如何解码/解密Apple Server-to-Server Notifications的Payload?
解析Sign In with Apple的Payload步骤
你收到的这个payload是JWT格式(JSON Web Token),由头部、负载、签名三部分通过点号.分隔组成,处理步骤如下:
第一步:验证JWT签名(必须执行,确保数据合法性)
- 从Apple官方提供的公钥端点获取对应公钥,公钥会包含与JWT头部
kid字段匹配的密钥ID - 使用该公钥,结合JWT头部指定的算法(通常是
ES256)验证签名,确认payload未被篡改或伪造
- 从Apple官方提供的公钥端点获取对应公钥,公钥会包含与JWT头部
第二步:解码负载内容
- 取JWT中间的第二部分(即负载段),它是
Base64URL编码格式,需要先做字符替换:把-换成+,_换成/,再根据长度补全=字符(Base64要求长度是4的倍数) - 对替换后的字符串进行Base64解码,就能得到明文的JSON格式用户信息
- 取JWT中间的第二部分(即负载段),它是
特殊情况:如果payload是加密状态
- 若你在集成时请求了用户私密信息,Apple会返回加密的JWT(即JWE格式)
- 使用你在Apple开发者后台创建的Sign In with Apple专用私钥,结合JWT头部的算法和密钥ID,执行解密操作,解密后即可得到明文payload
内容的提问来源于stack exchange,提问作者Nuno
相关产品推荐
相关产品推荐

