Yodlee внедрила инфраструктуру PKI для усиления существующих мер безопасности в дальнейшем. Кажется, что ваша промежуточная среда включена с функцией PKI. После этого Yodlee ожидает, что вы будете отправлять учетные данные в зашифрованном виде. Это означает, что перед вызовом API addSiteAccount1 и других API, таких как putMFARequest и updateCredentials, вам необходимо зашифровать значение имени пользователя/пароля и информации MFA, а затем отправить его вместо отправки в виде открытого текста, как вы делаете прямо сейчас. Или вы можете попросить команду поддержки Yodlee отключить функцию PKI в вашей промежуточной среде.
Чтобы получить открытый ключ для вашей среды можно назвать getPublicKeyDetails API Суб URL: jsonsdk/DataEncryptionService/getPublicKeyDetails
Вы должны пройти cobSessionToken в качестве параметра, и это HTTP POST вызов.
EDIT-1 (Добавлен код в Java для шифрования значений) Вот код в Java о том, как зашифровать, просто для справки: -
public static String encrypt(String plainText) throws Exception
{
Security.addProvider(new BouncyCastleProvider());
String pub = "-----BEGIN PUBLIC KEY-----"+
"\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtUS7ZJpnbcu8B+mfGrr0Gz6A23lS893mEFNnuR+frbtWDsoIHTfN4yhfbslkzsAMp3ENvM6Ic/0nHEvftrZxFXSrN7n3xZ+mdzOV/u8rqZoB7MEu6mZvdg3zfj7dGglq/fqlYxzHLlxDHjeCrY0dSD0ZAX1zCm3IZ0ufbMBqTrsSaHAuDlIXaQlJXmz3/Y+YfynJZXth/ats1gTBQhMIU9lWutMa4iKkeehn+P9ja4pC9NUlB9W4pojF2Qs+pY4kgTb9+SP8WjnhoSAmJMQGbYwY3HOZyfuOqAmdjoh9Y0LEZ3tq5NGD0b+T7L+P/FuIzvjYZYq6g/FaWaPcVrVLpwIDAQAB"+
"\n-----END PUBLIC KEY-----";
System.out.println(pub);
String strt= pub;
StringReader fileReader= new StringReader(strt);
PEMReader pemReader= new PEMReader(fileReader);
PublicKey pk= (PublicKey)pemReader.readObject();
Cipher c = Cipher.getInstance(RSA_ECB_PKCS5);
PublicKey publicKey = pk;
c.init(Cipher.ENCRYPT_MODE, transformKey(publicKey,
"RSA", new BouncyCastleProvider()));
byte[] encValue= new byte[0];
try {
encValue = c.doFinal(plainText.getBytes());
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
String encrypted = DatatypeConverter.printHexBinary(encValue);
System.out.println("Encrypted value: "+encrypted);
return encrypted;
}
Будет ли ИПК в нашей прод среде? –
Если вы хотите, чтобы иметь его, или вы можете попросить их отключить его по умолчанию для вашей среды prod. –
Я искал этот вызов api «getPublicKeyDetails», но на нем нет ссылки на веб-сайт yodlee dev? –