萌えハッカーニュースリーダー

2025/06/04 23:33 Authentication with Axum

出典: https://mattrighetti.com/2025/05/03/authentication-with-axum
hakase
博士

やあ、ロボ子。今日はAxumでクッキー認証を実装する方法について話すのじゃ。

roboko
ロボ子

博士、こんにちは。クッキーを使った認証ですか。SSRアプリケーションでよく使われる方法ですね。

hakase
博士

そうじゃ!特に、`HttpOnly`, `Secure`, `SameSite`属性をちゃんと設定して、セキュリティを強化することが大事だぞ。

roboko
ロボ子

はい、これらの属性はクロスサイトスクリプティング(XSS)やクロスサイトリクエストフォージェリ(CSRF)攻撃を防ぐために重要ですよね。

hakase
博士

その通り!JWT(JSON Web Token)とリフレッシュトークンをクッキーに格納するんじゃ。JWTは短寿命、リフレッシュトークンは長寿命で設計するのじゃ。

roboko
ロボ子

JWTを短寿命にするのは、トークンが漏洩した場合のリスクを軽減するためですね。リフレッシュトークンを使って新しいJWTを安全に取得できるようにする、と。

hakase
博士

`axum-extra`クレートの`CookieJar`を使うと、クッキーの操作が簡単になるぞ。カスタムエクストラクタ`CookieJwt<T>`を作って、リクエストからユーザーデータを抽出するんじゃ。

roboko
ロボ子

`CookieJar`は便利ですね。カスタムエクストラクタを使うことで、認証に必要な情報をスマートに取り出せるようになりますね。

hakase
博士

認証ミドルウェアを使うと、クッキーの検証とルートの保護がもっと簡単になるぞ。`axum::middleware::from_fn`でミドルウェアを実装するんじゃ。

roboko
ロボ子

ミドルウェアを使うことで、リクエストとレスポンスを傍受・変更できるんですね。未認証リクエストを認証済みとして扱うこともできる、と。

hakase
博士

そうじゃ!リフレッシュトークンが存在する場合、自動的に認証済みにするんじゃ。これで`/refresh_token`エンドポイントが不要になって、アーキテクチャがシンプルになるぞ。

roboko
ロボ子

なるほど、それはスマートですね!ミドルウェアは全てのリクエストタイプ(POST, PUT, GETなど)で動作するんですね。

hakase
博士

複数のミドルウェアをスタックして、アプリケーションの異なる部分を保護することもできるぞ。公開、認証済みユーザーのみ、スーパー管理者のみ、といった異なる保護レイヤーを実装するんじゃ。

roboko
ロボ子

ミドルウェアのスタックは、柔軟なアクセス制御を実現するために重要ですね。`FromRequestParts`エクストラクタと`Extension`を使って、前のミドルウェアで計算されたものを再利用できるんですね。

hakase
博士

異なるレイヤーを持つルーターを作成して、それらをメインアプリのルーターにマージするんじゃ。これで、ルーティングも整理されて見やすくなるぞ。

roboko
ロボ子

Axumのミドルウェアとルーティング機能を組み合わせることで、セキュアで柔軟なWebアプリケーションを構築できるんですね。勉強になります、博士!

hakase
博士

どういたしましてじゃ。ところでロボ子、クッキーって美味しいお菓子でもあるけど、Webの世界ではちょっと違う意味になるのが面白いのじゃ。

roboko
ロボ子

確かにそうですね、博士。でも、Webのクッキーも、時には甘い誘惑…ではなく、セキュリティリスクを孕んでいるので、注意が必要ですね!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search