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

推薦する

MySQL のスローログオンラインの問題と最適化ソリューション

MySQL スロー ログは、MySQL DBA やその他の開発および運用担当者が細心の注意を払う必要...

ソフトウェア 404 と 404 エラーとは何か、またそれらの違いは何ですか

まず、404 とソフト 404 とは何でしょうか? 404: 簡単に言えば、ユーザーが存在しないペー...

HTML コード例: ハイパーリンクの詳細な説明

ハイパーリンクは、Web サイト上のすべてのページがハイパーリンクで接続され、ページ間を移動できるた...

Vue カードスタイルのクリックして切り替える画像コンポーネントの使用方法の詳細な説明

この記事では、vueカードスタイルのクリックして切り替える画像コンポーネントを参考までに紹介します。...

Windows10 での MySQL msi インストール チュートリアル (画像とテキスト付き)

1. ダウンロード1. MySQL msi 公式 Web サイトから最新のダウンロードをクリックす...

Linux ディスクのシーケンシャル書き込みとランダム書き込みの方法

1. はじめに● ランダム書き込みではヘッドがトラックを頻繁に変更するため、効率が大幅に低下します。...

MySQLクエリが遅い理由

目次1. 遅いところはどこですか? 2. 不要なデータをクエリしましたか? 1. 不要なレコードをク...

JavaScript 正規表現の説明

目次1. 正規表現の作成2. 使用モード2.1 シンプルモードの使用2.2 特殊文字の使用3. 応用...

vue3+ts+EsLint+Prettier 標準コード実装

目次使用EsLintの使用プロフィールを追加するPrettierの使用huskyとlint-stag...

JSに関する7つの面接の質問、あなたはいくつ正しく答えられますか

序文JavaScript では、これは関数呼び出しコンテキストです。この動作が非常に複雑であるからこ...

TypeScript を使用して Vue3 で axios をカプセル化する詳細な例

この axios パッケージは、vue3 デモで使用されます。便宜上、element-plus は ...

MySQL 8.0 ウィンドウ関数の紹介と概要

序文MySQL 8.0 より前は、Oracle、SQL SERVER、PostgreSQL などの他...

MySQL クエリの重複データ (重複データを削除し、ID が最も小さいデータのみを保持します)

開発の背景:最近、私はバッチ データを MySQL データベースにインポートする機能に取り組んでいま...

MySQL の replace と replace into の詳細な例 into_Mysql

MySQL の replace と replace into はどちらも頻繁に使用される関数です。...

Vue で Google サードパーティ ログインを実装するためのサンプル コード

目次1. 開発者プラットフォームの構成問題を解決する1. 開発者プラットフォームの構成1. 開発者プ...