APPログインインターフェースシミュレーション要求を実装するためのPostmanデータ暗号化と復号化

APPログインインターフェースシミュレーション要求を実装するためのPostmanデータ暗号化と復号化

主に使用されるPostmanの機能

  • 環境変数: 新しい環境変数を作成するだけで、すべての操作がコード内で処理されます。
  • ログビュー: メニューの場所: 表示 → Postman コンソールを表示、このウィンドウビューを表示するだけです
  • リクエスト中に実行されるスクリプト: リクエスト前のスクリプト タグ。言語は JavaScript で、通常は暗号化として使用されます。
  • 返されるときに実行されるスクリプトを受け入れます: テスト タブ、戻りパラメータの処理として、通常は復号化。

シンプルなインターフェース

データの暗号化と復号化

インターフェースでは、パラメータ データを暗号化し、JSON 形式で送信する必要があります。

さまざまなパラメータ設定

  • プレーンテキストパラメータを入力します:

ここでのパラメータは、後でスクリプトによって使用される基本データであり、APP ログイン インターフェイスに入力する必要があるデータに似ている場合もあります。

インターフェースパラメータ

  • リクエスト ヘッダー パラメータを入力します。

ここでのリクエスト ヘッダー データは、システム インターフェイスによって合意されたいくつかの確立されたルール パラメーターです。

リクエストヘッダーパラメータ

実際に送信されたデータ:

はい、パラメータは1つだけです。スクリプトがパラメータを処理して暗号化すると、長い文字列になります╮(╯_╰)╭

ボディデータ。

プロリクエストスクリプト

スクリプトを処理するには、コードを見るだけです。

次のような、スクリプトのよく使用されるカプセル化クラスは、Postman によってカプセル化されます。

  • 環境変数: pm.environment
  • データ暗号化ツールキット: CryptoJS
  • 数学関数ツールキット: 数学

[コード記述ボックスの横には、Postmanが提供する一般的な操作コード生成があり、非常に便利です]

特定のコード:

// 他のリクエストの環境変数パラメータを設定します 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パラメータ const paramsString = request.url.split('?')[1]; 
各ParamArrayをparamsString.split('&'); 
パラメータを {} とします。 
各ParamArray.forEach((param) => { 
    定数キー = param.split('=')[0]; 
    定数値 = param.split('=')[1]; 
    Object.assign(params, {[キー]: 値}); 
}); 
console.log(パラメータ);

//データ処理 var requestParams = params;
console.log(リクエストパラメータ);

// インターフェイスによって定義されたデータ署名処理 var timestamp = Math.round(new Date());
pm.environment.set("タイムスタンプ",タイムスタンプ);
var shuijishu = "XO337hNxWyNsOlDw";
pm.environment.set("shuijishu",shuijishu);
// システムインターフェースによって合意されたデータ署名 var lkmSign = pm.request.headers.get("lkm-sys-id")
                + pm.request.headers.get("lkm-app-id")
                +「1122334455667788」
                + タイムスタンプ
                + 拾遺集
                + ""
                ;
pm.environment.set("lkmSign",CryptoJS.MD5(lkmSign).toString().toUpperCase());
// =================== データ署名処理が終了します=====================================

// ====================== 暗号化および復号化データ==============================================
/// aesdata 処理 var aesData = dealWithAesData(requestParams);
pm.environment.set("data", aesData); // これは上記のスクリーンショットで送信する必要のあるデータです。/// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓ よく使用される AES 暗号化および復号化方式↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ///
// aesData データ処理 (コンテンツ辞書)
関数dealWithAesData(コンテンツ) {
    console.log('aesData プレーンテキスト: ' + JSON.stringify(content));
    const キー = CryptoJS.enc.Utf8.parse("****************");
    const iv = CryptoJS.enc.Utf8.parse("0000000000000000");
    const 暗号化 = CryptoJS.AES.encrypt(JSON.stringify(content), key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); //CBC
    暗号化された.toString() を返します。
}

レスポンス処理スクリプト [テスト]

  • 応答データは、復号化して表示されます。
  • 注: Postman は、テスト結果を適切に表示できるさまざまなアサーション操作を提供します。

特定のコード:

// データ処理を返す var jsonData = JSON.parse(responseBody);
var responseData = JSON.parse(decryptResponseData(jsonData.data)); // データの復号化 let success = responseData['success'];
var responseResult = responseData["データ"];

//後続のインターフェースで使用されるデータトークンレコード try {
    token = responseResult["token"]とします。
    pm.environment.set("token", "Bearer "+token);
    console.log("トークン: " + トークン);
} キャッチ (エラー) {
    tests['応答データが有効なトークンであることを期待します'] = false;
    tests[`レスポンスデータ: ${responseResult}`] = true;
    コンソールエラー(err);
}

//データログ出力 console.log("jsonData: 次のオブジェクトは応答データです")
コンソールにログ出力します。
console.log("responseData: 次のオブジェクトは解析されたデータの最初のレイヤーです")
console.log(応答データ);
console.log("responseResult: 次のオブジェクトは解析されたデータの第 2 層です")
console.log(応答結果);

// ログイン後に他のインターフェースで使用される環境変数設定。
console.log(応答結果.エージェントID);
pm.environment.set("エージェントID",responseResult.エージェントID);
pm.environment.set("エージェントコード",responseResult.エージェントコード);
pm.environment.set("エージェント名",responseResult.エージェント名);
// pm.environment.set("token",responseResult.token);

// アサーションを設定します。Postman は優れた一般的なアサーション生成機能を提供しており、次を試すことができます。tests["Business return code=200, success!"] = responseData.code === 200;

/// 返されたデータを復号化する function decryptResponseData(content) {
    const キー = CryptoJS.enc.Utf8.parse("*****************");
    const iv = CryptoJS.enc.Utf8.parse("0000000000000000");
    const decrypt = CryptoJS.AES.decrypt(コンテンツ、キー、{iv: iv、モード: CryptoJS.mode.CBC、パディング: CryptoJS.pad.Pkcs7 });
    const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
    decryptedStr.toString() を返します。
}

結果は次のようになります

最終データ

暗号化されたインターフェースをシミュレートするためのリクエストは、ほぼこのようなものです。他の操作については、後で学習する必要があります。PostmanログインAPPインターフェースリクエストの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • PostmanでPOSTをリクエストするときにパラメータリストを設定する方法
  • POSTMANを使用してJSON形式でPOSTリクエストを送信する例
  • Postman のインストールと使用 (Get および Post リクエストのシミュレーション)
  • Postmanはトークンを使用してリクエストメソッドの送信をシミュレートします
  • Postman テストの投稿リクエストパラメータは JSON 型の例の説明です
  • Json データを送信する PostMan のポスト リクエスト メソッド
  • Postmanは、POSTリクエストの4つのリクエストボディをシミュレートします。

<<:  Nginx Webサーバーのサンプルコードの設定方法の詳細な説明

>>:  CentOS8 デプロイメント LNMP 環境で mysql8.0.29 をコンパイルしてインストールする方法の詳細なチュートリアル

推薦する

k8s に ingress-nginx をデプロイする手順

目次序文1. Ingressの展開と構成2. httpsを使用する序文k8sクラスタサービスがデプロ...

MySQL フルテキスト インデックス、ジョイント インデックス、Like クエリ、JSON クエリのうち、どれが高速ですか?

目次クエリの背景1. クエリをいいね2. JSON関数クエリ3. 共同インデックスクエリ4. 全文イ...

MySQL タイムブラインドインジェクションの 5 つの遅延方法

MySQL タイム ブラインド インジェクションの 5 つの遅延方法 (PWNHUB の予期しない解...

10秒以内にMySQLデータベースに数百万件のレコードを挿入する実装

まず、次の質問について考えてみましょう。このような膨大な量のデータをデータベースに挿入するには、通常...

JavaScript でクールなマウス テーリング効果を実装

これを見た後、あなたにも手ができて、さまざまな美しい小さなしっぽを作れるようになることを保証します!...

ウェブサイトのフロントエンドをエレガントでユーザーにとって魅力的なものにする方法

ウェブフロントエンドのウェブサイトの気質は感情であり、言葉なしでユーザーを魅了できる感情です。では、...

MySQL で結果を選択して更新を実行する例のチュートリアル

1. 単一テーブルクエリ -> 更新 テーブル名の更新 フィールド1=新しい値1、フィールド2...

Vueカスタムカプセル化ボタンコンポーネント

Vueボタンコンポーネントのカスタムカプセル化コードは参考用です。具体的な内容は次のとおりです。ボタ...

ロンボク実装 JSR-269

序文導入Lombok は、Google Guava と同様に便利なツールであり、強くお勧めします。す...

MySQLが日付フィールドインデックスを使用しない理由の要約

目次背景探検する要約する背景テーブルでは、dataTime フィールドは varchar 型に設定さ...

JavaScript 定期検証パスワード強度実装方法

展示する デザインパスワード強度分析パスワードは数字、文字、特殊記号で構成されていますパスワード: ...

JavaScript ES6 分割演算子の理解と応用

目次序文脱構築記号の役割使い方分割割り当ての適用アプリケーションの簡単な紹介JSONデータを抽出する...

Linux ネットワークプログラミングにおけるソケットオプションの実装

ソケットオプション機能機能: ソケットファイル記述子の属性の読み取りと設定に使用されるメソッド #i...

Dockerは複数のポートマッピングコマンドを有効にします

次のように: docker run -d -p 5000:23 -p 5001:22 --name ...

Vueのメソッドとプロパティの詳細な説明

Vueのメソッドとプロパティ1. 方法使用法 1メソッド: {メソッド名: function(){}...