0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Webhookで302となり/loginにリダイレクトする【Laravel】

Posted at

はじめに

実務で、あるサービスとWebhookを用いて連携をする際に、302エラーとなりログイン画面にリダイレクトしてしまう問題が発生しました。
初歩的なミスではありますが、今後同じミスをしないようここに残します。

結論として

app/Http/Middleware/VerifyCsrfTokenに設定したWebhookを受け取るURLを追記する必要がありました。

app/Http/Middleware/VerifyCsrfToken

    protected $except = [
        // ここに追加する。
        '/webhook/〇〇〇'
    ];

なぜ追加する必要があるのか

まず、VerifyCsrfTokenミドルウェアでは、CSRF攻撃から保護するために、POSTリクエストに対してCSRFトークンを持っているかチェックを行います。

ただし、Webhookリクエストは外部のシステムから直接送信されるため、CSRFトークンを持たずVerifyCsrfTokenミドルウェアによってリクエストが拒否されてしまうのです。

この問題を解決するために、$exceptプロパティを使用して、特定のURLをCSRF保護のチェックから除外するようにします。(そのURLに対するリクエストはCSRFトークンのチェックを行わないようにする)

$exceptプロパティに、URLを追加することで、外部サービスからのWebhookリクエストを正常に受け取ることができるようになります!

最後に

今回は初歩的なミスによるエラーでしたが、改めて原理について理解するいい機会でした。
今後もエラーに遭遇した際は、解決方法を記事に残していこうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?