web-dev-qa-db-ja.com

HMAC-SHA512を使用してJavaScriptでデータのブラウザー内署名を実行する方法

クライアント側のJavaScriptプログラムは、HMAC-SHA512メソッドに従って、プライベートな「シークレット」によってPOSTデータに署名する必要があるサービスにHTTP投稿を行う必要があります。「シークレット」を持っています、しかしこの署名を実行するためのJavaScriptコード/ライブラリが見つかりません。

誰かがブラウザでこれを達成する方法を知っていますか? Node.js暗号パッケージを使用するサーバー側コンポーネントを追加する複雑さを追加しないようにしています。 crypto.createHmac("sha512", api._apiSecret).update(queryString).digest("hex")

5
user507

HMAC署名を作成できる多くのクライアント側ライブラリがあります(Googleがここで役立ちます)。たとえば jsSHAcdnjs にもあります。ライブラリの使用方法の説明はgithubページにあります。

ただし、yourAPIシークレットをクライアントと共有するときは、それがJavaScriptファイルにハードコードされているか、サーバーへのリクエストであることを覚えておいてください、クライアントはシークレットを抽出して他のリクエストに使用できます。これらのリクエストは、プロバイダーの利用規約に違反したり、クォータを使い果たしたりする可能性があります。この悪用を防ぐには、ハッシュを作成するか、サーバー側でリクエスト全体を実行して、結果をクライアントと共有する必要があります。

4
125_m_125