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 をコンパイルしてインストールする方法の詳細なチュートリアル

推薦する

nginx を使用して http を https に変換するサンプルコード

最近、小さなプログラムを書いています。その小さなプログラムの公式ウェブサイトはhttpsを使用する必...

MySQLクエリ文の実行プロセスを理解するための記事

序文要件を満たす特定のデータをデータベースから取得する必要があります。Select ABC FROM...

MySQLは1つのテーブルからデータをクエリし、それを別のテーブルに挿入する実装方法

MySQLは1つのテーブルからデータをクエリし、それを別のテーブルに挿入する実装方法ウェブサイト開発...

MySQL の時間タイプとモードの詳細

目次1. MySQL の時刻型2. タイムゾーンを確認する3. 不正な時間値4. 厳密モード5. 事...

MySQL オンライン DDL ツール gh-ost 原理分析

目次1. はじめに1.1 原則1.2 プロセス1.3 特徴1.4 githubアドレス2. テスト環...

MySQL データベースのエンコーディングを utf8mb4 に変更する方法

utf8mb4 エンコーディングは utf8 エンコーディングのスーパーセットであり、utf8 と互...

React Hooksコンポーネント間で値を渡す方法の詳細な説明(tsを使用)

目次父から息子へ息子から父へクロスレベルコンポーネント(親から子孫)父から息子へpropsを通じて値...

入力ボックスのプレースホルダーアニメーションと入力検証を実現する純粋なCSS

さらに興味深いコンテンツについては、https://github.com/abc-club/free...

jsは双方向データバインディング(アクセサ監視)を実現します

この記事の例では、双方向データバインディングを実現するためのjsの具体的なコードを参考までに共有して...

小さなページングデザイン

ユーザーが目的のものを探すために前進するか後退するかを選択できるようにします。たとえば、Taobao...

Dockerの基礎

序文: Docker はオープンソースのアプリケーション コンテナ エンジンであり、開発者はこれを使...

HTML での select optgroup タグの使用の概要

時々、選択した内容をグループ化する必要があります。以前はプログラム制御を使用していました。今日、se...

Jsonフォーマットの詳細な説明

目次JSON は次の 2 つの構造に基づいて構築されます。 2. JSON形式1. オブジェクト2....

Linux のバックグラウンドで実行するいくつかの方法 (まとめ)

1. ノーフープハングアップ信号を無視してプログラムを実行する追加メモnohup コマンドは、ハン...

Node.js+expressメッセージボード機能実装例

目次メッセージボード必要なライブラリオープンソースプロジェクトプロジェクト構造メッセージボードnod...