Customers Mail CloudのWebhookでセキュリティ制限をかける

Customers Mail CloudにはWebhook機能が用意されており、メール配信時に何かイベントが起こったり、メールを受信した際にWebhookを実行できます。指定したURLを呼び出すだけでなく、Basic認証などのセキュリティ制限をかけることができます。

今回はそれらのセキュリティ設定による影響について紹介します。

Basic認証による制限

Basic認証では、設定にてIDとパスワードを設定します。この設定はWebhookの設定単位で変更できます。この時指定するIDとパスワードはBasic認証情報としてそのまま送られてきます。

f:id:moongift:20200616190323p:plain
Basic認証設定

例えばNode.jsのWebアプリケーションフレームワークであるExpressにてbasic-authを使った場合、次のように情報が取得できます。

Credentials { name: 'user', pass: 'pass' }

後はこのnameとpassを使ってデータベースで認証したり、設定ファイルに書いたID、パスワードと検証できます。

APIキーによる制限

もう一つの制限はAPIキーを指定するものです。APIキーを AAAAA として、設定した場合について解説します。

f:id:moongift:20200616190355p:plain
APIキーによる制限

この場合、次のようにHTTPボディの中に入ってきます。変数名(キー名)は api_key になります。

{
    "filter": "info@smtps.jp",
    "headers": [
      :
    ],
    "api_key": "AAAAA",
    "subject": "テスト",
    "envelope-to": "info@smtps.jp",
    "server_composition": "sandbox",
    "html": "...",
    "text": "...",
    "envelope-from": "user@smtps.jp"
}

次にAuthorization Bearerを指定した場合です。この時にはHTTPヘッダーにAPIキーが入ってきます。

{
  'authorization': 'Bearer AAAAA',
  'content-length': '3766'
    :
},

Authorization Bearerを指定した際にはHTTPボディにはAPIキーは入ってきませんので注意してください。また、APIキーは設定画面で指定した固定文字列のみ利用できます。可変には対応していません。

まとめ

Webhookは一般的にシステム連携に用いられます。APIキーやBasic認証によるセキュリティ制限を設けることで、不正な動きを防止できるようになります。APIキーを十分に複雑なものにしておき、サーバ側で検証するだけでもセキュリティレベルは引き上げられることでしょう。

共通仕様 | Customers Mail Cloud