Skip to content

付録1:HTTP署名検証アルゴリズムと一般的なエラーコード

HTTP署名検証アルゴリズム

概要

ACEコンテンツモデレーションAPIでは、リクエストの認証にHTTP署名検証メカニズムを使用します。各APIリクエストには、適切な署名ヘッダーを含める必要があります。

署名の生成手順

  1. 正規化文字列の構築:HTTPメソッド、リクエストパス、タイムスタンプ、リクエストボディを連結
  2. HMAC-SHA256による署名生成:SecretKeyを使用してハッシュを計算
  3. Base64エンコード:署名値をBase64形式に変換
  4. Authorizationヘッダーへの設定

署名文字列の構築

StringToSign = HTTPMethod + "\n" +
               RequestPath + "\n" +
               Timestamp + "\n" +
               MD5(RequestBody)

署名の計算

Signature = Base64(HMAC-SHA256(SecretKey, StringToSign))

Authorizationヘッダーの形式

Authorization: ACE AppId:{Signature}:{Timestamp}

実装例(Python)

python
import hmac
import hashlib
import base64
import time
import json

def generate_signature(secret_key, method, path, body):
    timestamp = str(int(time.time()))
    body_md5 = hashlib.md5(body.encode('utf-8')).hexdigest()
    
    string_to_sign = f"{method}\n{path}\n{timestamp}\n{body_md5}"
    
    signature = base64.b64encode(
        hmac.new(
            secret_key.encode('utf-8'),
            string_to_sign.encode('utf-8'),
            hashlib.sha256
        ).digest()
    ).decode('utf-8')
    
    return signature, timestamp

一般的なエラーコード

エラーコード説明対処方法
100成功
101パラメータ不正リクエストパラメータを確認
102認証失敗AppIdおよび署名を確認
103タイムスタンプ期限切れサーバー時刻を同期
104レート制限超過リクエスト頻度を低減
105アクセス拒否権限設定を確認
200内部サーバーエラー再試行またはサポートに連絡
201サービス一時停止しばらく後に再試行
202タイムアウト再試行

注意事項

  1. タイムスタンプはUNIXタイムスタンプ(秒)を使用
  2. タイムスタンプの有効期間は±5分です
  3. SecretKeyは安全に管理し、クライアント側コードに埋め込まないでください

Tencent Cloud プロダクトドキュメント