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

推薦する

画像ソーシャルネットワーキングサイトのUIアプリケーションの比較分析(図)

私たちの生活、仕事、勉強において、ソーシャル ネットワークは徐々に将来のインターネット発展のトレンド...

VMware pro15 インストール macOS10.13 詳細インストール図(画像とテキスト)

編集者は最近、macOS システムを使い始めたかったので、VMware に macOS イメージ シ...

要素のフォームコンポーネントに関する注意事項

要素フォームとコード表示詳細はエレメントフォーム公式サイトをご覧ください構造と機能の分析紹介とソース...

Windows に Docker をインストールする詳細なチュートリアル

ローカルの MySQL バージョンが比較的低いため、最近 MySQL のバージョンをアップグレードす...

iframeフレームはIEブラウザで白い背景を透明に設定します

最近、プロジェクトを進める過程で、ページの階層構造を描画するために iframe を頻繁に使用する必...

HTML ファイルにファイルの内容を含める方法の概要

フォーラムでは、ネットユーザーから「HTML ファイル内の別の HTML ファイルの内容を読み取るこ...

Alibaba Cloud CentOS 7 に MySQL 8.0.13 をインストールする方法

1. MySQL インストール パッケージをダウンロードします(ここにはコツがあります。おそらく、こ...

nginx と keepalived を組み合わせて高可用性を実現するための手順を完了する

序文システムの高可用性を満たすためには、通常、クラスターを構築する必要があります。ホストがクラッシュ...

Dockerはローカルディレクトリとデータボリュームコンテナ操作をマウントします

1. DockerはローカルディレクトリをマウントしますDocker は、ホスト上のディレクトリをイ...

Windows Server win2003、win2008R2、win2012、win2016、win2019 システム バージョン間の違い

最近、Microsoft は 2019 サーバー システムをリリースしました。一般的に、Micros...

Docker クリーニングの一般的な方法と問題点

大規模な開発に Docker を使用する場合でも、クリーンアップ戦略がなければ、ディスクがすぐにいっ...

Mysql が CPU を過剰に占有する場合の最適化方法 (必読)

Mysql が CPU を占有しすぎる場合、どこから最適化を開始すればよいでしょうか? CPU 使...

Dockerでイメージをプルするための手順を完了する

1. Docker pullはイメージをプルします$ docker pull {IMAGE_NAME...

JavaScript プロトタイプオブジェクトの this ポイント問題の詳細な説明

目次1. これは2. この点を修正する1. call() メソッド2. apply() メソッド要約...

MySQL データ型 DECIMAL の詳細な分析

序文:金額の保存など、小数点数を保存し、精度要件がある場合、通常は DECIMAL フィールド タイ...