我最近注意到在为给定的iOS客户端创建证书时有一个新选项。
该选项的标题为
Apple推送通知认证密钥(沙盒和生产环境)
获取认证密钥以生成服务器端令牌。您可以将这些令牌用作通知请求的证书替代方案。
一个认证密钥可用于多个应用程序,且不会过期。
如何设置此选项?
我最近注意到在为给定的iOS客户端创建证书时有一个新选项。
该选项的标题为
Apple推送通知认证密钥(沙盒和生产环境)
获取认证密钥以生成服务器端令牌。您可以将这些令牌用作通知请求的证书替代方案。
一个认证密钥可用于多个应用程序,且不会过期。
如何设置此选项?
基于Apple Push Notification token的身份验证是连接到APNs的提供者证书的替代方法。提供者API支持JSON Web Token(或JWT),这是一种开放标准,可用于将身份验证声明传递到APNs及推送消息。
要生成提供者令牌,请获取用于签署令牌的私钥,如在应用分发指南中介绍的创建通用提供者令牌中所述。您应该构造一个包含10个字符Key ID(kid)的头部的令牌。令牌声明部分包含Issuer(iss),这是一个10个字符的Team ID。您的团队ID和Key ID值可以从您的开发人员帐户中获取。声明还必须包含Issued At(iat),这是UTC时间中从Epoch开始的秒数,表示生成令牌的时间。令牌必须使用椭圆曲线数字签名算法(ECDSA)使用P-256曲线和SHA-256哈希算法(ES256)进行签名,并指定为算法键(alg)中的值。
{
"alg": "ES256",
"kid": "ABC123DEFG"
}
{
"iss": "DEF123GHIJ",
"iat": 1437179036
}
若想了解如何生成签名的 JSON Web Token 及可用库列表,请参考https://jwt.io
这是一个用于为 JSON Web Token(或 JWT)签名的 Swift 库:kylef/JSONWebToken.swift
注意:APNs 仅支持使用 ES256 算法签名的提供商令牌。未加保护的 JWT 或使用其他算法签名的 JWT 将被拒绝,并返回指示无效提供商令牌的响应。
SOURCE : APPLE : 提供商身份验证令牌
WWDC 2016 - Session 724 : 基于令牌的身份验证
注:
最大的区别是密钥方式不会过期,而证书将在一年后过期。