NEWS
POST requests bei der Adapter Entwicklung
-
Ich bin leider blutiger Anfänger bei der Adapter-Entwicklung und habe daher sehr grundlegende Fragen:
Ich möchte per https POST-request einen "username" und "password" (gehashed) an eine URL schicken. Aktuell verwende ich dafür Axios.
- Was muss ich tun, damit ich das Passwort nicht im Klartext sondern gehashed übermittel? Ich habe dazu nichts gefunden. In dem Pyhton3 Code, den ich Portieren möchte für ioBroker wird die die hashlib verwendet und das Passwort folgendermaßen verschlüsselt:
passwordHashed = hashlib.sha1(password.encode()).hexdigest()
- Die URL, die ich versuche zu erreichen ist die "https://www.myidm.at/api/user/login". Hier bekomme ich mit dem folgenden Code allerdings immer ein "AxiosError: Request failed with status code 404". Die baseURL ist allerdings erreichbar. Liegt es an den Headern?
this.idmApiClient = axios.create({ baseURL: 'https://www.myidm.at', timeout: 1000, headers: { 'User-Agent': 'IDM App (Android)' }, data: { username: this.config.clientLogin, password: 'abc' }, responseType: 'json', responseEncoding: 'utf8', httpsAgent: new https.Agent({ rejectUnauthorized: false, }) }); try { const installations = await this.idmApiClient.post('/api/user/login'); this.log.info('Successfully returning Installation repsonse'); this.log.debug(`response: ${installations.status}: ${JSON.stringify(installations.data)}`); } catch (err) { this.log.error(err); // AxiosError: Request failed with status code 404 }
Für jeden Suchbegriff, den ihr mir nennen könnt bin ich sehr dankbar
-
@lonestar2001
mit der funktionconst md5 = require('md5'); md5(dein password)
-
Danke für den Tipp, ich hab es jetzt folgendermaßen gelöst:
const { createHash, Hash } = require('crypto'); const hash = createHash('sha1'); const myData = 'Password'; hash.update(myData); this.log.debug('Hash: '+hash.digest('hex'));
Leider kommt mein POST-request nach wie vor nicht durch.
Die API vom Server ist auch alles andere als hilfreich -
@lonestar2001
gelöst.
Der Server hat die Parameter in dieser Form erwartet:const payload = new URLSearchParams(); payload.append('username',this.config.clientLogin); payload.append('password',passwordHashed);