tencent cloud

Tencent Cloud EdgeOne

HMACデジタル署名

ダウンロード
フォーカスモード
フォントサイズ
最終更新日: 2026-10-15 18:25:51
AI翻訳・品質チェック済み
HMAC(Hash-based Message Authentication Code)はハッシュ関数に基づくメッセージ認証コードであり、主にデータの完全性検証と身元認証に使用されます。この例ではWeb Crypto APIを使用してHMAC-SHA256署名を実装し、署名情報をリクエストヘッダーに格納し、オリジンサーバーと連携してデータ完全性検証または身元認証を実現します。開発者は必要に応じてコードを変更できます。
注意
このサンプルはオリジンサーバーとの連携が必要です。つまり、オリジンサーバーは対応する署名検証アルゴリズムを備えている必要があります。
本番環境でこのサンプルが提供するコードを使用する場合、コメントに従ってコードを変更する必要があります。

サンプルコード

function uint8ArrayToHex(uint8Array) {
return Array.prototype.map.call(uint8Array, x => ('0' + x.toString(16)).slice(-2)).join('');
}

async function generateHmac({ secretKey, message, hash }) {
const encoder = new TextEncoder();
const secretKeyBytes = encoder.encode(secretKey);
const messageBytes = encoder.encode(message);
const key = await crypto.subtle.importKey('raw', secretKeyBytes, { name: 'HMAC', hash }, false, ['sign']);

const signature = await crypto.subtle.sign('HMAC', key, messageBytes);
const signatureArray = new Uint8Array(signature);
return uint8ArrayToHex(signatureArray);
}

async function handleRequest(request) {
const secretKey = 'YOUR_SECRET_KEY';
// 使用時に署名が必要な情報に変更してください。一般的には複数データの組み合わせです。例えば:タイムスタンプ+リクエスト関連情報など。
const message = 'YOUR_MESSAGE';
// hashはSHA-1、SHA-256、SHA-384、SHA-512のいずれかを取ります。
const hmac = await generateHmac({ secretKey, message, hash: 'SHA-256' });
request.headers.set('Authorization', `HMAC-SHA256 ${hmac}`);

return fetch(request);
}
addEventListener('fetch', event => {
event.passThroughOnException();
event.respondWith(handleRequest(event.request));
});


サンプルプレビュー

PCおよびモバイル端末のブラウザアドレスバーに、エッジ関数のトリガールールに一致するURL(例:https://example.com/hmac)を入力すると、サンプル効果をプレビューできます。
認証が通過しませんでした。

認証が通過しました。


関連参考



ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック