ホームページ 運用・保守 安全性 署名アルゴリズムに基づくシンプルで安全な API 認証メカニズムとは何ですか?

署名アルゴリズムに基づくシンプルで安全な API 認証メカニズムとは何ですか?

May 18, 2023 am 10:49 AM
api

私が広告システムに取り組んでいたとき、接続したほとんどのプラットフォームの広告システムがインターフェイスを承認するためにトークンを使用していることがわかりましたが、このトークンは変更されず、広告主によって提供されたものであると言えます。ストリーキング インターフェイス ただし、このインターフェイスには高度なセキュリティ要件はなく、悪意のある呼び出しの防止とチャネルの ID の確認のみが可能です。

昨年、著者は、内部サービスのオープン インターフェイスとサードパーティのシステム コールに統合された承認管理を提供する API 統合承認プラットフォームを作成しました。管理インターフェイスの承認を容易にすること以外に、他の目的はありません。導入にはお金がかかります。これはおそらく私がこれまでに行った中で最も無意味なプロジェクトです。

今日紹介した API 認証メカニズムは、より広く使用されている API インターフェイス認証メカニズムである可能性があります。著者が WeChat 決済機能を使用していたとき、WeChat が提供する決済インターフェイスでもこのメソッドが使用されていたことを覚えています: 署名。利点: シンプルで、パフォーマンスに影響せず、追加コストもかかりません。

この認可方法の実装ロジックは、認可者がアクセス プラットフォームごとに一意の ID (キー) と独立したキーを設定するというもので、これは実際にはアカウントのパスワードに相当します。アクセス システムは、リクエストを開始するたびに、リクエスト ヘッダーに 3 つのパラメータ、つまり ID (キー)、リクエストのタイムスタンプ、および署名を含める必要があります。認可システムは、リクエストを受信するときに署名を検証します。合格した場合のみ解放されます。

署名を検証するプロセスでは、リクエスト ヘッダーからキーとタイムスタンプを取得し、そのキーに基づいて同じアルゴリズムを使用して署名を生成します (呼び出し元と承認者は同じ署名アルゴリズムを使用します)。最後にリクエストヘッダーから取得した署名を比較し、等しいかどうかを確認します。等しい場合は検証が成功し、そうでない場合は検証が失敗します。

署名アルゴリズムに基づく承認メソッドの実装プロセスは次のとおりです:

承認者:

1. 署名アルゴリズムを定義し、アクセス パーティの署名生成アルゴリズム、およびアクセス パーティのキーと ID を生成します;

2. プロジェクト内の署名を検証する必要があるインターフェイスをインターセプトし、リクエスト ヘッダーからタイムスタンプと ID を取得します。キーと署名アルゴリズムに基づいて署名を生成し、生成された署名とリクエスト ヘッダーから取得した署名を比較し、同じである場合は手順 3 に進み、そうでない場合はリクエストを拒否します。

3.リクエストの適時性を確認するには、現在のシステム タイムスタンプとリクエスト ヘッダーから取得した署名を使用します。受信したタイムスタンプを比較し、リクエストが有効な時間範囲内にある場合、リクエストは解放されます。そうでない場合、リクエストは拒否され、署名が返されます。期限切れ。

アクセス パーティ:

1. 権限のあるパーティからドッキング ドキュメントを取得し、権限のあるパーティにキーと ID を問い合わせます;

2 . ドキュメントで提供されている署名生成アルゴリズムに従って署名メソッドをカプセル化します;

3. リクエストを開始するとき、ID 識別子、現在のタイムスタンプ、および署名をリクエスト ヘッダーに書き込みます。

署名生成アルゴリズムはカスタマイズ可能です。たとえば、ID (キー)、タイムスタンプ (タイムスタンプ)、およびキーを結合した後、不可逆アルゴリズムを使用して文字列を暗号化し、MD5 などの署名を生成します。 .アルゴリズム。ルールが複雑になればなるほど、それを解読するのは難しくなります。

署名にタイムスタンプを追加する利点は何ですか?

1 つ目は、署名に適時性を追加することです。認可システムは、リクエストのタイムスタンプを現在のタイムスタンプと比較することにより、署名の有効時間を 1 秒または 5 秒に制限できます。ただし、双方のシステム時刻が正しい必要があります。

2 つ目はセキュリティです。ハッカーがシステムのリクエストを傍受し、リクエストを変更してからリクエストを開始すると、間違いなく時間がかかるため、システムが改ざんされたリクエストを受信した時点で、署名は通過しました。リクエスト ヘッダーで渡されたタイムスタンプを変更すると、リクエストの認証システムはリクエスト ヘッダーで渡されたものとは異なる署名を生成するため、リクエストは引き続き無効になります。

鍵が分からない場合、権限を与えられた当事者 (ブロイラー) の署名ルールを理解しなければ、有効な署名を生成することはできません。非対称暗号化アルゴリズムを使用して署名されたファイルは、総当たりでキーを解読することをほぼ不可能にします。

では、なぜ時刻文字列の書式設定ではなくタイムスタンプを使用するのでしょうか?

これは、タイム ゾーンの互換性を考慮しているためと考えられます。異なるコンピュータ ルームが異なるタイム ゾーンにある場合、時刻は異なりますが、タイムスタンプも同様です。

この認証方法のセキュリティを最大限に高めるには、まず署名を生成するルールが十分に複雑である必要があり、次に署名の暗号化アルゴリズムが不可逆的である必要があり、Base64 などのアルゴリズムを決して使用しないでください。最後に、キーは十分なものである必要があります。署名生成ルールがわかっていても、キーをブルート フォースで攻撃することは不可能であることが保証されるほど十分に複雑です。

署名ルールとは、暗号化前に署名文字列を生成するためのルールを指します。たとえば、ルールにはキー、キー、タイムスタンプが含まれます。ここで、キーとキーは 2 回表示されます。キーが「app」、秘密鍵が「123」、タイムスタンプが「11111111111111」、スプライシングによって生成された事前に暗号化された署名が「app1231111111111111app123」であると仮定します。最後に、スプライシングされた文字列が暗号化アルゴリズムを通じて暗号化されます。最終的な署名を生成します。

インターフェースごとに署名ロジックを記述するのは面倒ではありませんか?

いいえ。承認者にとっては、署名検証ロジックはフィルターまたはインターセプターを通じて完了できます。呼び出し側にとっては、さまざまなフレームワークを使用するさまざまなメソッドがありますが、署名ロジックを 1 回だけ記述する方法はいつでも見つかりますよね?

以上が署名アルゴリズムに基づくシンプルで安全な API 認証メカニズムとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP およびマンティコア検索開発ガイド: 検索 API をすばやく作成する PHP およびマンティコア検索開発ガイド: 検索 API をすばやく作成する Aug 07, 2023 pm 06:05 PM

PHP および ManticoreSearch 開発ガイド: 検索 API をすばやく作成する 検索は、最新の Web アプリケーションに不可欠な機能の 1 つです。電子商取引 Web サイト、ソーシャル メディア プラットフォーム、ニュース ポータルのいずれであっても、ユーザーが興味のあるコンテンツを見つけられるように、効率的かつ正確な検索機能を提供する必要があります。 ManticoreSearch は、優れたパフォーマンスを備えた全文検索エンジンとして、優れた検索 API を作成するための強力なツールを提供します。この記事ではその方法を説明します

PHP プロジェクトで API インターフェイスを呼び出してデータをクロールおよび処理するにはどうすればよいですか? PHP プロジェクトで API インターフェイスを呼び出してデータをクロールおよび処理するにはどうすればよいですか? Sep 05, 2023 am 08:41 AM

PHP プロジェクトで API インターフェイスを呼び出してデータをクロールおよび処理するにはどうすればよいですか? 1. はじめに PHP プロジェクトでは、多くの場合、他の Web サイトからデータをクロールし、これらのデータを処理する必要があります。多くの Web サイトでは API インターフェイスが提供されており、これらのインターフェイスを呼び出すことでデータを取得できます。この記事では、PHP を使用して API インターフェイスを呼び出し、データをクロールおよび処理する方法を紹介します。 2. API インターフェースの URL とパラメーターを取得する 開始する前に、ターゲット API インターフェースの URL と必要なパラメーターを取得する必要があります。

Laravel APIのエラー問題に対処する方法 Laravel APIのエラー問題に対処する方法 Mar 06, 2024 pm 05:18 PM

タイトル: Laravel API エラーの問題に対処する方法、具体的なコード例が必要です Laravel を開発していると、API エラーが頻繁に発生します。これらのエラーは、プログラム コードのロジック エラー、データベース クエリの問題、外部 API リクエストの失敗など、さまざまな理由で発生する可能性があります。これらのエラー レポートをどのように処理するかは重要な問題であり、この記事では、特定のコード例を使用して、Laravel API エラー レポートを効果的に処理する方法を示します。 1. Laravelでのエラー処理

Python を使用して API データを CSV 形式で保存する Python を使用して API データを CSV 形式で保存する Aug 31, 2023 pm 09:09 PM

データ駆動型のアプリケーションと分析の世界では、API (アプリケーション プログラミング インターフェイス) がさまざまなソースからデータを取得する際に重要な役割を果たします。 API データを操作する場合、多くの場合、アクセスや操作が簡単な形式でデータを保存する必要があります。そのような形式の 1 つは CSV (カンマ区切り値) で、これを使用すると表形式のデータを効率的に編成して保存できます。この記事では、強力なプログラミング言語 Python を使用して API データを CSV 形式で保存するプロセスについて説明します。このガイドで概説されている手順に従うことで、API からデータを取得し、関連情報を抽出し、さらなる分析と処理のためにそれを CSV ファイルに保存する方法を学びます。 Python を使用した API データ処理の世界に飛び込み、CSV 形式の可能性を解き放ってみましょう

Oracle API使用ガイド: データ・インタフェース・テクノロジの探求 Oracle API使用ガイド: データ・インタフェース・テクノロジの探求 Mar 07, 2024 am 11:12 AM

Oracle は世界的に有名なデータベース管理システム プロバイダーであり、その API (アプリケーション プログラミング インターフェイス) は、開発者が Oracle データベースと簡単に対話して統合するのに役立つ強力なツールです。この記事では、Oracle API 使用ガイドを詳しく掘り下げ、開発プロセス中にデータ インターフェイス テクノロジを利用する方法を読者に示し、具体的なコード例を示します。 1.オラクル

React API 呼び出しガイド: バックエンド API とデータをやり取りおよび転送する方法 React API 呼び出しガイド: バックエンド API とデータをやり取りおよび転送する方法 Sep 26, 2023 am 10:19 AM

ReactAPI 呼び出しガイド: バックエンド API とやり取りしてデータを転送する方法 概要: 最新の Web 開発では、バックエンド API とやり取りしてデータを転送することは一般的なニーズです。 React は、人気のあるフロントエンド フレームワークとして、このプロセスを簡素化するための強力なツールと機能をいくつか提供します。この記事では、React を使用して基本的な GET リクエストや POST リクエストなどのバックエンド API を呼び出す方法を紹介し、具体的なコード例を示します。必要な依存関係をインストールします。まず、Axi がプロジェクトにインストールされていることを確認します。

Oracle API統合戦略分析: システム間のシームレスな通信の実現 Oracle API統合戦略分析: システム間のシームレスな通信の実現 Mar 07, 2024 pm 10:09 PM

OracleAPI統合戦略分析: システム間のシームレスな通信を実現するには、特定のコード・サンプルが必要です。今日のデジタル時代では、社内の企業システムは相互に通信してデータを共有する必要があり、OracleAPIは、システム間のシームレスな通信を実現するための重要なツールの1つです。システム。この記事では、OracleAPIの基本概念と原則から始まり、API統合戦略について説明し、最後に読者がOracleAPIをよりよく理解して適用できるように具体的なコード例を示します。 1. 基本的な Oracle API

開発に関する提案: API 開発に ThinkPHP フレームワークを使用する方法 開発に関する提案: API 開発に ThinkPHP フレームワークを使用する方法 Nov 22, 2023 pm 05:18 PM

開発の提案: API 開発に ThinkPHP フレームワークを使用する方法 インターネットの継続的な発展に伴い、API (アプリケーション プログラミング インターフェイス) の重要性がますます高まっています。 API は、異なるアプリケーション間の通信の橋渡しとなるもので、データの共有や関数の呼び出しなどを実現し、開発者に比較的簡単かつ迅速な開発手法を提供します。優れた PHP 開発フレームワークである ThinkPHP フレームワークは、効率的でスケーラブルで使いやすいです。

See all articles