try { data = "--- \nusername: " + name + "\n" + "password: " + password; URL myserver = new URL(server + "wannabe"); URLConnection con = myserver.openConnection(); con.setRequestProperty("Content-Type", "application/json"); con.setRequestProperty("Accept", "*, */*"); con.setDoOutput(true); OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream()); out.write(data); out.flush(); BufferedReader in = new BufferedReader( new InputStreamReader( con.getInputStream())); String decode; while ((decode = in.readLine()) != null){ output += decode; } out.close(); in.close(); } catch(IOException e){ throw new TokenException("Wrong Username/password"); } //Stripping begin and end quotes return output.substring(1, output.length() -1);
private Map<String, Object> getJSONObject(JOSEObject jose, boolean encrypted) throws TokenException { Long exp = (Long) jose.getPayload().toJSONObject().get("exp"); if (exp != null && exp * 1000 <= System.currentTimeMillis()) { throw new TokenException("Expired Token"); } return jose.getPayload().toJSONObject(); }
@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); } }