【ITニュース解説】Block Spam Signups with Zuplo and Your Identity Providers
2025年09月04日に「Dev.to」が公開したITニュース「Block Spam Signups with Zuplo and Your Identity Providers」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
サービスへのスパム登録を防ぐため、認証サービスとAPIゲートウェイ「Zuplo」を連携させる手法。ログイン時にZuploがメールアドレスを検証し、使い捨てドメインや既知のスパムを自動でブロックする。これにより不正なアカウント作成を未然に防ぎ、サービスの品質を保つことができる。
ITニュース解説
Webサービスを開発・運営する上で、スパムや不正な目的で作成される偽のアカウントは非常に厄介な問題だ。例えば、一度しか使わない「使い捨てメールアドレス」で大量にアカウントが作られると、サービスの無料トライアル期間が悪用されたり、提供するリソースが無駄に消費されたりする。また、スパムメールの送信元として利用されるなど、他のユーザーに迷惑をかける行為の温床にもなりかねない。このような不正アカウントは、サービスの利用者数を分析する際のデータを歪め、正確な事業判断を妨げる原因にもなる。この問題への対策として有効なのが、ユーザーがアカウントを新規登録する、まさにその瞬間にメールアドレスを検証し、不正なものを弾く仕組みを導入することだ。
この仕組みを実現するには、主に二つの技術要素を組み合わせる。一つは「IDプロバイダー」、もう一つは「APIゲートウェイ」である。IDプロバイダーとは、Auth0やAWS Cognito、Oktaといった、ユーザーの新規登録やログインといった認証機能を提供する専門のクラウドサービスだ。多くのモダンなWebサービスでは、認証という複雑でセキュリティ上重要な機能を自前で開発する代わりに、これらのIDプロバイダーを利用している。これらのサービスには、認証プロセス中に特定の処理を挟み込むことができる「拡張機能」が備わっている。例えば、ユーザーがメールアドレスとパスワードを入力して登録ボタンを押した後、実際にアカウントが作成されるまでの間に、独自のチェックプログラムを動かすことが可能だ。
もう一つのAPIゲートウェイは、様々なシステムやサービスを連携させるための中継役を担う。今回紹介するZuploもその一つで、特定の機能を持つAPI、つまり外部から呼び出せるプログラムの窓口を簡単に作成し、公開、管理することができる。今回は、このZuploを使って「メールアドレスを検証する専門のAPI」を構築する。このAPIは、IDプロバイダーの拡張機能から呼び出されることになる。
具体的な処理の流れは次のようになる。まずユーザーがサービスに新規登録を試みると、そのリクエストはIDプロバイダーに送られる。IDプロバイダーは認証処理を開始するが、その途中で拡張機能を呼び出し、登録しようとしているユーザーのメールアドレスを、先ほどZuploで作成したメール検証APIに渡す。検証APIは、受け取ったメールアドレスが不正なものでないかを多角的にチェックする。チェック項目には、既知のスパム業者が使うドメインを集めた「ブロックリスト」や、「10minutemail.com」のような使い捨てメールアドレスのドメインリストとの照合が含まれる。逆に、ビジネスパートナーのドメインなど、絶対に信頼できるドメインを登録した「許可リスト」も用意し、それに該当する場合は即座に安全と判断する。さらに、SendGridのような外部のメール検証サービスとも連携し、そのメールアドレスが文法的に正しいか、実際に受信可能なドメインかといった、より詳細なチェックも行う。
全てのチェックが完了すると、検証APIはその結果を「安全」または「ブロックすべき」といった形でIDプロバイダーに返す。IDプロバイダーは、その結果に応じて処理を分岐させる。「ブロックすべき」という応答を受け取った場合、IDプロバイダーはアカウントの作成処理を中断し、ユーザーにエラーメッセージを表示して登録を拒否する。一方、「安全」という応答であれば、そのまま処理を続けてアカウントの作成を完了させる。こうして、不正なメールアドレスを持つユーザーがサービス内部にアクセスするのを未然に防ぐことができる。
この仕組みの優れた点は、運用を自動化できることにある。使い捨てメールアドレスのドメインは日々新しく生まれるため、ブロックリストを手動で更新し続けるのは現実的ではない。そこで、GitHub ActionsのようなCI/CDツールを利用して、インターネット上で有志によってメンテナンスされている公開リストを定期的に自動で取得し、Zuplo上のブロックリストを更新する仕組みを組み込む。これにより、システムは常に最新の脅威に対応し続けることが可能になる。
このアプローチは、認証に関するロジックを一箇所に集約できるというメリットもある。もし将来、メールアドレスだけでなくIPアドレスによるチェックも追加したくなった場合、変更を加えるのはZuplo上の検証APIだけで済む。IDプロバイダー側の設定を大きく変更する必要はなく、システム全体の保守性が高まる。また、この方法は特定のIDプロバイダーに依存するものではなく、拡張機能を持つ多くのモダンな認証サービスで応用が利くため、汎用性も高い。IDプロバイダーの機能を活用し、専門のAPIと連携させることで、安全で質の高いユーザー基盤を維持するための堅牢なシステムを効率的に構築することができるのだ。