简介
APNs(Apple Push Notification service =APNs)是Apple推送通知服务。
2016年的WWDC,苹果上线了token验证的推送方式,通过获得一个认证密钥(APNs Auth Key)(p8秘钥文件)去生成服务器端token,并且token非常容易生成,可以使用这些token令牌代替推送证书。一个认证密钥可用于多个应用程序并且永远不过期。
认证方式
TLS(是“Transport Layer Security”的缩写),中文叫做“传输层安全协议”。新的APNs协议基于HTTP/2,旧推送是使用Universal Push Notification Client SSL 证书,新推送是使用Token认证。
1.1、基于证书的信任认证
建立连接工作的步骤如下:
1)Provider通过TLS向APNs发起安全请求。 Provider就是我们自己程序的后台服务器(或者是第三方的推送服务器)
2)APNs返回一个证书给Provider。
3)Provider验证APNs的证书,验证通过后,返回Apple提供的证书(通过苹果开发者账号创建的推送证书)给APNs。
4)APNs验证Provider返回的证书,从而确认连接请求来自于合法的Provider并建立TLS连接。
上述步骤完成后,信任连接建立,Provider服务器可以发送基于证书的远程推送消息请求给APNs。
1.2、基于Token的信任认证
建立连接工作的步骤如下:
1)Provider通过TLS向APNs发起安全请求。
2)APNs返回一个证书给Provider。
以上两步完成后,信任连接建立,Provider服务器可以发送基于Token的远程推送消息请求给APNs。
3)Provider验证APNs的证书,然后Provider发送的每个消息请求必须携带上JWT 认证的 Token。
4)APNs验证Provider返回的证书,并返回请求的结果。
注意事项(权限和使用期限)
传统的推送证书,每个App需要单独配置两个(开发环境和生产环境)证书。推送证书的有限期为1年(生产的推送证书比开发的推送证书多一个月),过期之后需要重新配置。
新的token验证推送,一个认证密钥可用于多个App服务,而且永远不会过期。但是该密钥生成后,在网站上只允许下载一下,要保管好下载的.p8 密钥文件。
对于一个开发者账号管理着多个App,并且部分App迭代周期大于1年,这种新的推送认证方式大大地减少了管理证书人员的工作量。