web-dev-qa-db-ja.com

APIキーを作成するWeb API

Web.apiのAPIキーを作成し、web.apiが提供する認証ではなく、APIキーを使用してクライアントがAPIと通信できるようにすることに興味があります。

複数のクライアントがweb.apiと通信できるようにします。ユーザー名とパスワードを作成する代わりに、APIキーを使用して、クライアントがクライアントと通信できるようにすることができます。

そのような組み込み機能はありますか?

実装したい場合、どのように回避しますか?

58
DarthVader

HMAC Authentication を使用して達成できます。基本的に、ApiKey(apiKey、secretKey)と呼ばれるデータベーステーブルがあります。各クライアントには、各Apikeyと秘密鍵があります。

  1. ApiKeyは公開鍵のようなもので、HTTPを介して送信されます(ユーザー名と同様)。

  2. 秘密鍵はHTTP経由で送信されません。この秘密鍵を使用してhmacに情報を送信し、ハッシュされた出力をサーバーに送信します。サーバー側から、公開キーに基づいて、関連する秘密キーとハッシュ情報を取得して、ハッシュ出力と比較できます。

詳細な回答を投稿しました: ASP.NET Web APIを保護する方法

ApiKeyでユーザー名を変更し、私の回答の秘密キーでハッシュ化されたパスワードを変更して、アイデアにマッピングできます。

66
cuongle