Я - разработчик углового интерфейса для начинающих, и теперь мне нужно получить доступ к Java REST api другой команды разработчиков.
Чтобы получить api http://apps.api.com/api/user/login
, мне нужно отправить этот запрос с заголовками: Authorization
: Bearer b517241b-e81d-430e-afb6-773527989b47
и Content-Type
: application/json
,
Чтобы получить токен b517241b-e81d-430e-afb6-773527989b47, я должен запросить еще один api http://apps.api.com/api/auth/token
, тогда результат, который я получаю от этого api, - это что-то вроде:
{ "token": "eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0NTQwMzI5MDk2NzYsInN1YiI6InRva2VuIiwidG9rZW4iOiIrbjZEd1NDUGVMbXd0SGpCT2ZzZUhVRlwvS2NOMzBBTDRkXC9sWDlSVlI1UWxnXC9wV2M1VVNNREpCVDVSUnNWNHpadUFtNExWc3BIeDl1SmtESGhvZTI0dWhMcUNzeUFmZklYMTBkalVqVzFnOSt5QTN4eEg4TElQbzBoTDR5V0JhNnplWm9lVFcrZFE0dzd3MVhCazhLZFZwWGFmRmJMZ3RoXC9OdVE5REM1c3QxTllnSDB2aHRWZ0lha3VnZVlhOEFPU1c3eWVsOWFHcXhJN1hHM1FrbVwvYUE9PSIsImlzcyI6Imh0dHBzOlwvXC93d3cud2luZ21vbmV5LmNvbSJ9.uBQYvfTwadTG2QZ76tQN6-ETT1M8X72ltDe7xBCvEhA" }
Мне нужно сделать это, декодировать этот токен, используя jwt, затем расшифровать его с помощью AES 256 CBC (я застрял здесь).
Я получил код дешифрования от базового разработчика и код в java:
private static final String AES_KEY = "HG47YZ3CR8";
public static String decrypt(String orignalText) throws ApplicationException {
try {
final MessageDigest md = MessageDigest.getInstance("SHA-256");
final byte[] digestOfPassword = md.digest(AES_KEY.getBytes("utf-8"));
final SecretKey key = new SecretKeySpec(digestOfPassword, "AES");
final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(new byte[16]));
final byte[] plainTextBytes = Base64.decodeBase64(orignalText);
final byte[] encodeTextBytes = cipher.doFinal(plainTextBytes);
return new String(encodeTextBytes);
} catch (NoSuchAlgorithmException |
UnsupportedEncodingException |
IllegalBlockSizeException |
InvalidKeyException |
BadPaddingException |
NoSuchPaddingException | InvalidAlgorithmParameterException e) {
throw new ApplicationException(ErrorCode.GENERAL_FAIL, e);
}
}
Я пытался найти javascript-библиотеку, чтобы написать расшифровку, такую же, как этот Java-код, но я не смог найти правильный.
Я ценю, есть ли у кого-нибудь представление о том, какая библиотека javascript похожа на этот java-код.
Я не уверен, что я действительно рекомендую использовать ваш интерфейс для дешифрования всего, поскольку для этого потребуется, чтобы ваш ключ находился в библиотеке javascript, которая по существу позволяла бы EVERYONE расшифровывать ваш токен. Который будет выпрашивать вопрос, почему вы шифруете для начала. Но если вам действительно нужно это сделать в javascript, вы можете проверить ответы SO здесь.