@Bean JwtTokenServiceImpl jwtTokenServiceImpl() { return new JwtTokenServiceImpl(); }
@Override public String generateToken(Map<String, Object> payload, Date expireDate) { return generateToken(payload, new Date(), expireDate, false); }
@Override public Map<String, Object> getJsonPayload(String token, boolean encrypted) throws TokenException { if (StringUtils.isEmpty(token)) { throw new TokenException("null or empty token"); } if (encrypted) { EncryptedJWT jwt = null; try { jwt = EncryptedJWT.parse(token); RSADecrypter decrypter = new RSADecrypter(keyProvider.getPrivateKey().getKey()); jwt.decrypt(decrypter); } catch (JOSEException | ParseException e) { throw new TokenDecryptionException("Invalid token", e); } return getJSONObject(jwt, encrypted); } try { JWSObject jws = JWSObject.parse(token); JWSVerifier verifier = new RSASSAVerifier((RSAPublicKey) keyProvider.getDefaultPublicKey()); if (!jws.verify(verifier)) { throw new TokenException("ERROR: Fradulent token"); } return getJSONObject(jws, encrypted); } catch (TokenException | ParseException | JOSEException e) { throw new TokenException("Error: Fradulent token, unrecognized signature", e); } }
@Override public String generateEncryptedToken(Map<String, Object> payload, Date expireDate) { return generateToken(payload, new Date(), expireDate, true); }
@Override public String generateEncryptedToken(Map<String, Object> payload) { return generateToken(payload, new Date(), new Date(System.currentTimeMillis() + EXPIRATION.get() * 1000), true); }
@Override public String generateToken(Map<String, Object> payload) { return generateToken(payload, new Date(), new Date(System.currentTimeMillis() + EXPIRATION.get() * 1000), false); }