Please note that the rsa key you have need to be converted to der format online
can be done using below link
https://decoder.link/rsa_converter
import java.io.UnsupportedEncodingException;
import java.security.Key;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Base64;
import java.util.Date;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.impl.TextCodec;
public class JwtTokenUtilRSA {
public static void main(String[] args) throws Exception {
System.out.println(createAccessJwtToken());
}
public static String createAccessJwtToken() throws Exception {
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.RS256;
Claims claims = Jwts.claims().setSubject("EXXXXXXXXciOSbWCwG");
claims.put("aud", "XYZ.com");
LocalDateTime currentTime = LocalDateTime.now();
Key signingKey = getPrivateKey2();
String token = Jwts.builder().setClaims(claims).setIssuer("issuer")
.setIssuedAt(Date.from(currentTime.atZone(ZoneId.systemDefault()).toInstant()))
.signWith(SignatureAlgorithm.RS256, signingKey).compact();
return token;
}
private static PrivateKey getPrivateKey2() throws NoSuchAlgorithmException, InvalidKeySpecException {
String rsaPrivateKey = "-----BEGIN PRIVATE KEY-----" +
"MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDJPwCTr8LDSi/7" +
"f0PXtiGZHcT/7B2AAIlATC178lp1mI42Exmw2X/yOiNU6mkiYQxxkv1vr8blViga" +
"mfhwCjahzI9ix0PzyEjVxfFWYlnfoorNGOwWgAqD3kzgnnUVPQXFmYRjtVD43sM4" +
"54h9Q1nFfPnVe9vgyckKI/p2nVUyZZlMo36/PRZdAV15vVvuvBJLW3gW3Xb2OuLy" +
"sF7/NEQe2zi5A87j4pbeRpBmGWzmloF3dNjwtCZAiSmX01nLe0bZYJIHgDgmPDKt" +
"qond8Pe1+zEDDf6fyq9mfT/naSOL1mQbLK2VQdGUGWmNgIpTgPEpolv3AdwbOtMx" +
"47GiOBPdAgMBAAECggEAeimjiQNNoEzdmbakkUJ/XLpEhvJm6ffpWT2k8rOok/Aa" +
"i9rGYqN1Vq5SGk79qR/udNc8v1qdy0Okrpk+xYx9o3RQqi66Ijc3d4VkPgMP+YBq" +
"75usXPA28du1ITkva8gSQ+QwCHLdh2V6boWmRhvnV8nIwv4f+HGld2FlvjE9sYwF" +
"Zwuo51G5TBkMnLaklHzMB18sTrcC4EmFvFfEsH6lzY3XaZXbMiwV802VbTasiXGi" +
"+HDMfUrxza1AVUz4zqlZhWvJL2c9RinLnSsS1eZ/FGbRrjZbfyE/IMFiMapP9LGi" +
"Cw1Gdt9NAwWtx78lgOrrW1+YYLVJEUlXZmPcPBkCZQKBgQDrP9tl10I8wlp6XyRY" +
"1Ge2xqAaSuHSwIMdSw9eRyO9K/CCV7hmzNOUvVe7U3Q5knxD5aoIul2Behn6BzDA" +
"hovtQALmFn0lmwsb7IKa/zM1o3BM5qrSwCTXSiBfKyi207jCK35wJPAJeemCl1JQ" +
"NY0Fug31/+SPLcGyO0HIcxaZrwKBgQDa/1HEHQ6yn2Eb3H/KtNrh5CQYu004LBaz" +
"ISsR7JwfyHscrE34Fx1eyEuJDVehGC30U61zh5h/dibr9M4wJqUTvJuhJh3X/w7r" +
"w1vWSE9rOJsOFenjWVv+2VO6TkaayWPDC79mCR/UBIXULOdMwi6NhDd8eqVraZzg" +
"b5TTHntqMwKBgB6KP7VM6LBymsRgLZvKl1xHFOnU5tQxYdQftnMK0Tzxw1tof+v4" +
"k08v9X/AKcp/ldpKqnRPnWv9qfmnjVCxJuE5+iZcrQqAwkRxw9LTZpaEDUQufea2" +
"QxIf8WvpcnOpsMakVtnAMdlJFmN5uZnoGdKwgLd67PUZf5ff0X5wUnLJAoGBAM60" +
"Itc6nf7XFG+ZxjzsS5TfI3r8fzw/0QUuj1qRvCL7tcgwkj9SgfROlY08vLNfATEW" +
"MidTmwrj2ITqQhuMvk9MvJB0S8LuCYValbpB8kQ/34qCAIsIcx6uvqqg6196KuGU" +
"mwmSHyqdQjwsTf1TY2FLpJunn68stlfYud4zbUWlAoGBAMCxCk2QabirfKSpKeXY" +
"On52j23o/8g2OfDPtd1cS30mTtDUStv3Sqr5Tegz+/7IwugORQujae4b20qgBSds" +
"NP9gb8RGmxLryZsEfwV1qppx0d1gEcyYcySYBhz+9qKyByeD8lotbZ0WGMu/UAg/" +
"ftaiqVv/CKA/h256T/5uThS3" +
"-----END PRIVATE KEY-----";
rsaPrivateKey = rsaPrivateKey.replace("-----BEGIN PRIVATE KEY-----", "");
rsaPrivateKey = rsaPrivateKey.replace("-----END PRIVATE KEY-----", "");
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(rsaPrivateKey));
KeyFactory kf = KeyFactory.getInstance("RSA");
PrivateKey privKey = kf.generatePrivate(keySpec);
return privKey;
}
}
No comments:
Post a Comment