Получить с зашифрованным паролем - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь пройти аутентификацию в API через fetch. Для этого я использую зашифрованное имя пользователя и пароль. Проблема в том, что независимо от того, что я делаю, я получаю ответ от API, что мой пароль неверен. Я знаю, что пароль работает, потому что он был предоставлен моими администраторами.

Это код, который я использую:

import CryptoJS from 'crypto-js';
import CryptoJSAesJson from './helpers/helpers';

var username = 'myusername';
var pass = 'mypassword';
var hash = CryptoJS.SHA1(username).toString();
var password = CryptoJS.AES.encrypt(JSON.stringify(pass), 'mypassphrase', {format: CryptoJSAesJson}).toString();
var credentials = {
    user: hash,
    password: password
}

fetch("https://demo.mediainfo.com/api/user/login", {
    body: JSON.stringify(credentials),
    headers: {
        "Content-Type": "application/json"
    },
    method: "POST"
}).then(response => {
    // do something with the response
});

На helpers.js у меня есть этот код:

var CryptoJSAesJson = {
    stringify: function (cipherParams) {
        var j = {ct: cipherParams.ciphertext.toString(CryptoJS.enc.Base64)};
    if (cipherParams.iv) j.iv = cipherParams.iv.toString();
    if (cipherParams.salt) j.s = cipherParams.salt.toString();
        return JSON.stringify(j).replace(/\s/g, '');
    },
    parse: function (jsonStr) {
        var j = JSON.parse(jsonStr);
        var cipherParams = CryptoJS.lib.CipherParams.create({ciphertext: CryptoJS.enc.Base64.parse(j.ct)});
        if (j.iv) cipherParams.iv = CryptoJS.enc.Hex.parse(j.iv);
        if (j.s) cipherParams.salt = CryptoJS.enc.Hex.parse(j.s);
        return cipherParams;
    }
}

export default CryptoJSAesJson;

К сожалению, документация по API нулевая, поэтому я не уверен, в чем может быть проблема, единственное сообщение, которое я получаю при получении: "Неправильный обмен паролями. Пожалуйста, свяжитесь с администратором."

Спасибо!

...