Skip to content

Instantly share code, notes, and snippets.

@ArnauMrJeff
Last active September 7, 2020 16:01
Show Gist options
  • Save ArnauMrJeff/95578eaa6ee3634e0b025644aa4ea7b1 to your computer and use it in GitHub Desktop.
Save ArnauMrJeff/95578eaa6ee3634e0b025644aa4ea7b1 to your computer and use it in GitHub Desktop.
Apple ID Sign In: GenerateJWT
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwsHeader;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
import org.bouncycastle.openssl.PEMParser;
import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
import java.io.File;
import java.io.FileReader;
import java.math.BigInteger;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.RSAPublicKeySpec;
import java.util.Base64;
private String generateJWT() throws Exception {
var pKey = generatePrivateKey();
return Jwts.builder()
.setHeaderParam(JwsHeader.KEY_ID, "KEY_ID")
.setIssuer("TEAM_ID")
.setAudience("https://appleid.apple.com")
.setSubject("CLIENT_ID")
.setExpiration(new Date(System.currentTimeMillis() + (1000 * 60 * 5)))
.setIssuedAt(new Date(System.currentTimeMillis()))
.signWith(SignatureAlgorithm.ES256, pKey)
.compact();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment