Postman-Datenverschlüsselung und -entschlüsselung zur Implementierung der Simulationsanforderung der APP-Anmeldeschnittstelle

Postman-Datenverschlüsselung und -entschlüsselung zur Implementierung der Simulationsanforderung der APP-Anmeldeschnittstelle

Hauptsächlich verwendete Postman-Funktionen

  • Umgebungsvariablen: Erstellen Sie einfach eine neue und alle Vorgänge werden im Code behandelt.
  • Protokollansicht: Menüposition: Ansicht → Postman-Konsole anzeigen, einfach diese Fensteransicht anzeigen
  • Während der Anfrage ausgeführtes Skript: Skript-Tag vor der Anfrage, verwendet die Sprache JavaScript, normalerweise als Verschlüsselung.
  • Akzeptiert das bei der Rückgabe auszuführende Skript: Registerkarte „Tests“, da die Verarbeitung des Rückgabeparameters normalerweise die Entschlüsselung ist.

Einfache Schnittstelle

Datenverschlüsselung und -entschlüsselung

Die Schnittstelle erfordert, dass die Parameterdaten verschlüsselt und im JSON-Format gesendet werden.

Verschiedene Parametereinstellungen

  • Füllen Sie die Klartextparameter aus:

Die Parameter hier sind die grundlegenden Daten, die später vom Skript verwendet werden. Sie können auch den Daten ähneln, die in die APP-Anmeldeoberfläche eingegeben werden müssen.

Schnittstellenparameter

  • Füllen Sie die Anforderungsheaderparameter aus:

Die Anforderungsheaderdaten sind hier einige festgelegte Regelparameter, auf die sich die Systemschnittstelle geeinigt hat.

Anforderungsheaderparameter

Die tatsächlich gesendeten Daten:

Ja, es gibt nur einen Parameter. Nachdem das Skript den Parameter verarbeitet und verschlüsselt hat, wird daraus eine lange Zeichenfolge ╮(╯_╰)╭

Körperdaten.

Pro-Request-Skript

Um das Skript abzuarbeiten, schauen Sie sich einfach den Code an.

Einige häufig verwendete Kapselungsklassen von Skripten werden von Postman gekapselt, wie zum Beispiel:

  • Umgebungsvariable: pm.environment
  • Toolkit zur Datenverschlüsselung: CryptoJS
  • Toolkit für mathematische Funktionen: Math

[Neben dem Code-Schreibfeld gibt es eine von Postman bereitgestellte allgemeine Operationscode-Generierung, die sehr nützlich ist]

Spezifischer Code:

//Umgebungsvariablenparameter für andere Anfragen festlegen pm.environment.set("lkm-sys-id",pm.request.headers.get("lkm-sys-id"));
pm.environment.set("lkm-app-id",pm.request.headers.get("lkm-app-id"));
pm.environment.set("lkm-organ-id",pm.request.headers.get("lkm-organ-id"));
pm.environment.set("lkm-app-ver",pm.request.headers.get("lkm-app-ver"));

// JSON-Parameter für Datensignatur const paramsString = request.url.split('?')[1]; 
const eachParamArray = paramsString.split('&'); 
lass Parameter = {}; 
eachParamArray.fürEach((param) => { 
    const key = param.split('=')[0]; 
    konstanter Wert = param.split('=')[1]; 
    Object.assign(params, {[Schlüssel]: Wert}); 
}); 
konsole.log(Parameter);

//Datenverarbeitung var requestParams = params;
Konsole.log(Anforderungsparameter);

// Durch die Schnittstelle definierte Datensignaturverarbeitung var timestamp = Math.round(new Date());
pm.environment.set("Zeitstempel",Zeitstempel);
var shuijishu = "XO337hNxWyNsOlDw";
pm.environment.set("shuijishu",shuijishu);
// Datensignatur, vereinbart durch die Systemschnittstelle var lkmSign = pm.request.headers.get("lkm-sys-id")
                + pm.request.headers.get("lkm-app-id")
                + "1122334455667788"
                + Zeitstempel
                + shuijishu
                + ""
                ;
pm.environment.set("lkmSign",CryptoJS.MD5(lkmSign).toString().toUpperCase());
// =================== Die Verarbeitung der Datensignatur endet======================================

// ======================= Verschlüsselungs- und Entschlüsselungsdaten==========================================
/// AES-Datenverarbeitung var aesData = dealWithAesData(requestParams);
pm.environment.set("data", aesData); // Dies sind die Daten, die im Screenshot oben gesendet werden müssen./// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓ Häufig verwendete AES-Verschlüsselungs- und Entschlüsselungsmethoden↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ///
// aesData-Datenverarbeitung (Inhaltswörterbuch)
Funktion dealWithAesData(Inhalt) {
    console.log('aesData-Klartext: ' + JSON.stringify(Inhalt));
    const key = CryptoJS.enc.Utf8.parse("****************");
    const iv = CryptoJS.enc.Utf8.parse("0000000000000000");
    const verschlüsselt = CryptoJS.AES.encrypt(JSON.stringify(Inhalt), Schlüssel, { iv: iv, Modus: CryptoJS.mode.CBC, Polsterung: CryptoJS.pad.Pkcs7 }); //CBC
    returniere encrypted.toString();
}

Antwortverarbeitungsskript [Tests]

  • Die Antwortdaten werden verarbeitet, entschlüsselt und angezeigt.
  • Hinweis: Postman stellt verschiedene Assertionsoperationen zur Verfügung, mit denen die Testergebnisse gut angezeigt werden können.

Spezifischer Code:

// Datenverarbeitung zurückgeben var jsonData = JSON.parse(responseBody);
var responseData = JSON.parse(decryptResponseData(jsonData.data)); // Datenentschlüsselung let success = responseData['success'];
var responseResult = responseData["Daten"];

//Datentoken-Datensatz, der von nachfolgenden Schnittstellen verwendet wird try {
    let token = Antwortresult["Token"];
    pm.environment.set("Token", "Träger "+Token);
    konsole.log("token: " + token);
} fangen (Fehler) {
    Tests['Erwarte, dass die Antwortdaten ein gültiges Token sind'] = false;
    Tests [`Antwortdaten: ${responseResult}`] = true;
    Konsole.Fehler(Fehler);
}

//Datenprotokoll drucken console.log("jsonData: Das folgende Objekt sind die Antwortdaten")
Konsole.log(jsonData);
console.log("responseData: Das folgende Objekt ist die erste Ebene der analysierten Daten")
console.log(Antwortdaten);
console.log("responseResult: Das folgende Objekt ist die zweite Ebene der analysierten Daten")
console.log(Antwortergebnis);

//Einstellungen der Umgebungsvariablen, die nach der Anmeldung von anderen Schnittstellen verwendet werden.
console.log(AntwortResult.AgentId);
pm.environment.set("agentId",responseResult.agentId);
pm.environment.set("agentCode",responseResult.agentCode);
pm.environment.set("agentName",responseResult.agentName);
// pm.environment.set("token",responseResult.token);

// Assertion festlegen Postman stellt eine gute allgemeine Assertion-Generierung bereit, Sie können Tests ["Business return code=200, success!"] = responseData.code === 200; ausprobieren.

/// Entschlüsseln Sie die zurückgegebenen Daten function decryptResponseData(content) {
    const key = CryptoJS.enc.Utf8.parse("*****************");
    const iv = CryptoJS.enc.Utf8.parse("0000000000000000");
    const decrypt = CryptoJS.AES.decrypt(Inhalt, Schlüssel, { iv: iv, Modus: CryptoJS.mode.CBC, Auffüllung: CryptoJS.pad.Pkcs7 });
    const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
    returniere entschlüsseltenStr.toString();
}

Das Ergebnis sieht aus wie

Endgültige Daten

Die Anforderung zur Simulation der verschlüsselten Schnittstelle sieht ungefähr so ​​aus. Was andere Vorgänge betrifft, müssen Sie diese später lernen. Weitere Informationen zu Anforderungen für die Postman-Login-APP-Schnittstelle finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • So legen Sie die Parameterliste beim Anfordern von POST in Postman fest
  • Beispiel für das Senden einer POST-Anfrage im JSON-Format mit POSTMAN
  • Installation und Verwendung von Postman (Simulation von Get- und Post-Anfragen)
  • Postman simuliert das Senden einer Anforderungsmethode mit einem Token
  • Postman-Test-Post-Anforderungsparameter ist JSON-Typ, Beispielerklärung
  • PostMan-Post-Request-Methode zum Senden von JSON-Daten
  • Postman simuliert vier Anforderungstexte einer Post-Anforderung

<<:  Detaillierte Erläuterung zur Konfiguration des Beispielcodes für den Nginx-Webserver

>>:  Detailliertes Tutorial zum Kompilieren und Installieren von mysql8.0.29 in der LNMP-Umgebung von CentOS8

Artikel empfehlen

React verwendet Emotionen zum Schreiben von CSS-Code

Inhaltsverzeichnis Einführung: Installation von E...

Beispiel für die Implementierung von Unterstreichungseffekten mit CSS und JS

In diesem Artikel werden hauptsächlich zwei Arten...

Linux implementiert den Quellcode des Zahlenratespiels

Ein einfacher Linux-Ratespiel-Quellcode Spielrege...

Einführung mehrerer benutzerdefinierter Schriftarten in CSS3

Heute habe ich ein Problem in HTML gefunden. Es s...

Tutorial zum Migrieren von Projekten von MYSQL zu MARIADB

Bereiten Sie die Datenbank (MySQL) vor. Wenn Sie ...

Vue implementiert Ankerpositionierungsfunktion

In diesem Artikelbeispiel wird der spezifische Co...

Linux-Systemreparaturmodus (Einzelbenutzermodus)

Inhaltsverzeichnis Vorwort 1. Allgemeine Fehlerbe...

Auszeichnungssprache - für

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...