すべてのプロダクト
Search
ドキュメントセンター

HTTPDNS:認証付きアクセスの実装

最終更新日:Mar 20, 2026

背景情報

課金に影響を及ぼす不正利用を防止するため、認証機構を設計しました。本ドキュメントでは、その統合方法について説明します。

2. 認証ソリューション

既存ユーザーは、非認証 API を使用するプロダクトをすでに導入しています。サービス継続性を確保するため、これらのユーザーは今後も非認証 API を引き続きご利用ください。

このため、新たに認証付き APIをご提供します。新バージョンのプロダクトについては、段階的にこの API へ移行できます。レガシアプリの利用者数が管理可能な水準まで低下した時点で、署名付きアクセスを有効化することで、不正利用による課金への影響を防止できます(以下の図を参照)。

image

2.1 既存ユーザー向け移行計画

  • 署名付きアクセスを有効化すると、レガシアプリの利用者は HTTPDNS サービスにアクセスできなくなります。

  • 既存ユーザーに対し、アプリの更新と認証付き APIへの移行を案内してください。

  • 非認証 APIの利用者数が許容可能な水準まで低下した時点で、手動で署名付きアクセスを有効化できます。

2.2 新規ユーザー向け利用計画

  • 統合オーバーヘッドを低減するため、署名付きアクセスはデフォルトで無効です。

  • 署名付きアクセスが必要な場合は、手動で有効化できます。

2.3 署名付き API の有効/無効切り替え管理

  • シャットダウンによってセキュリティリスクが引き起こされる可能性があります。

  • 攻撃による予期せぬ課金を防止する唯一の方法は、署名付きアクセスを有効化することです。

署名生成および認証機構

警告

HTTP API をご利用になる前に、「ベストプラクティス」をご参照ください。これを怠ると、サービスが正常に動作しなくなる可能性があります。

3.1 署名生成アルゴリズムおよびサンプル

認証付き API

  • http://47.74.XXX.XXX/{account_id}/sign_d

  • http://47.74.XXX.XXX/{account_id}/sign_resolve

重要
  • {account_id} は、ご利用の HTTPDNS アカウント ID に置き換えてください。この ID は HTTPDNS コンソールから確認できます。

  • 認証付き API には IP パラメーターを追加できます。このパラメーターの有無は署名計算に影響しません。

  • サービスの IP アドレス一覧については、「スケジューリングサービス API」をご参照ください。

署名アルゴリズム

sign = md5sum( host-secret-timestamp )

認証フィールドの説明

フィールド

説明

host

解決対象のホストです。URL 内の host パラメーターと同じ値を使用してください。

secret

サーバーが生成するシークレットです。コンソール > 構成> 開発構成

image

timestamp

署名の有効期限(UNIX 時間)。1970 年 1 月 1 日からの経過秒数(正の整数、10 桁)です。

説明

署名の有効期間は最大 24 時間です。

署名の例

  • サンプル 1(標準解決 API):

    • 元のリクエスト:http://47.74.XXX.XXX/{account_id}/d?host=www.aliyun.com

    • シークレットが IAmASecret であり、署名の有効期限が 2018 年 8 月 15 日 15:00:00 UTC + 08:00(タイムスタンプ:1534316400)であると仮定します。

    • sign = md5sum("www.aliyun.com-IAmASecret-1534316400") = 60c71e98b6d7fcbb366243e224eab457

    • 認証済みリクエスト:http://47.74.XXX.XXX/{account_id}/sign_d?host=www.aliyun.com&t=1534316400&s=60c71e98b6d7fcbb366243e224eab457

  • サンプル 2(バッチ解決 API):

    • 元のリクエスト:

      http://47.74.XXX.XXX/{account_id}/resolve?host=www.aliyun.com,www.taobao.com

    • シークレットが IAmASecret であり、署名の有効期限が 2018 年 8 月 15 日 15:00:00 UTC + 08:00(タイムスタンプ:1534316400)であると仮定します。

    • sign = md5sum("www.aliyun.com,www.taobao.com-IAmASecret-1534316400") = 12a3f6b1b14a46ca813ca6439beb59a4

    • 認証済みリクエスト:http://47.74.XXX.XXX/{account_id}/sign_resolve?host=www.aliyun.com,www.taobao.com&t=1534316400&s=12a3f6b1b14a46ca813ca6439beb59a4

本ソリューションの長所と短所

  • 短所

    • クライアントのシステム時刻が同期されていない可能性があります。

    • シークレットをクライアント側に保存すると、シークレットが漏洩するリスクがあり、セキュリティリスクとなります。

  • 長所

    • サーバー側でのデータ取得処理が不要です。

3.2 認証応答

  • 認証が成功した場合、HTTP ステータスコードは 200 となり、応答内容は「単一ドメイン解決 」のAPI 応答仕様と一致します。

  • 認証が失敗した場合、HTTP ステータスコードは 403 または 400 になります。レスポンスボディは JSON 形式で、特定のエラーコードを含みます。

     { "code": "InvalidSignature" }

3.3 ステータスコードリファレンス

HTTP ステータスコード

エラーコード

説明

403

SignatureExpired

タイムスタンプが有効期限切れです。

403

InvalidSignature

署名が無効です。

400

InvalidDuration

署名の有効期間が長すぎます(最大 86400 秒)。

400

InvalidSignature

署名のフォーマットが無効です。

400

InvalidTimestamp

タイムスタンプのフォーマットが無効です。

400

AccountNotExists

アカウントが存在しないか、無効化されています。