生成APNS连接的认证令牌



我是vertx的新手,并使用通过vertx创建的应用服务器与APNS连接以发送推送通知。

我通过 创建了一个authProvider
private JWTAuth createOauthProvider() {
PubSecKeyOptions pubSecKeyOptions = new PubSecKeyOptions()
.setAlgorithm("ES256").setSecretKey(*/private key from .p8 extracted as is removing unwanted part in base64*/);
return JWTAuth.create(vertx(), new JWTAuthOptions().addPubSecKey(pubSecKeyOptions));
}

,然后通过

发送JWT
private String createJwt() {
Instant now = Instant.now();
JsonObject decoded = new JsonObject()
.put("alg", "ES256")
.put("kid", "kid here")
.put("iss", "teamid here")
.put("iat", now.getEpochSecond());
String jwt = oauth2JWTProvider.generateToken(decoded,
new JWTOptions().setAlgorithm("ES256"));
return jwt;
}

现在是我的查询-

  1. 我的令牌创建标准是否正确?
  2. 在此之后创建的JWT发送到APNS时返回403-InvalidProviderToken。

感谢你的帮助。谢谢! !

回答我自己的问题,因为我能够绕过这个问题,以防它对其他人有所帮助。只是张贴createJwt()方法休息一切保持不变-

private String createJwt() {
Instant now = Instant.now();
JsonObject header = new JsonObject()
.put(JwtConstants.ALG, "ES256")
.put(JwtConstants.KID, "kid here");
JsonObject payload = new JsonObject()
.put(JwtConstants.ISS, "team id here")
.put(JwtConstants.IAT, now.getEpochSecond());
String jwt = oauth2JWTProvider.generateToken(payload,
new JWTOptions()
.setHeader(header)
.setAlgorithm("ES256"));
return jwt;
}

最新更新