🧩

認証とかで聞くコールバックURLとは?

2024/01/25に公開

azure認証を進める中でコールバックURLの調査が必要になったので、まとめてみる
間違ってたら、じゃんじゃん指摘して欲しいです🙇‍♂️

コールバックURLとは?

ある処理が終わった後に自動的にアクセスするURLのことで、これを利用することでユーザーを元のサイトに戻すことが可能になる。

例えば、あるウェブサイト(Aサイト)から別のウェブサイト(Bサイト)にユーザーを移動させたいと考えている場合、その後、ユーザーを元のウェブサイト(Aサイト)にどのように戻すかが問題。

この問題を解決するための方法が「コールバックURL」。

具体的な使用方法は、ユーザーを移動させたいウェブサイト(Aサイト)へのアクセスURLに、処理後に戻りたいウェブサイト(Bサイト)のURLをパラメータとして追加する形になります。このパラメータがコールバックURLとなる。

また、特定の処理を要求する場合や特定の値を受け取りたい場合は、それらの情報もURLにパラメータとして追加する。

これらの手順を踏むことで、ウェブサイト間のスムーズな連携とユーザーの適切なナビゲーションが可能になる。

具体的な使い方(Microsoft Entra IDを利用したNext.jsアプリケーションのユーザー認証)

Microsoft Entra IDとは?

  • 旧称 Azure Active Directory(Azure AD)
  • Microsoftが提供するID管理サービス
  • 外部の認証機能を自分のアプリケーションに組み込むことが可能

ログインの流れ

  1. ユーザーがログインを試みると、アプリケーションはユーザーをMicrosoft Entra IDのログインページにリダイレクト。この際、アプリケーションはリダイレクトURI(コールバックURL)を含む認証リクエストを送信する。
  2. ユーザーはMicrosoft Entra IDのページでログイン
  3. ログイン成功後、Microsoft Entra IDは「トークン」を生成(トークンはユーザーごとに一意の長い文字列で、ユーザーの認証情報を表す)
  4. Microsoft Entra IDはトークンを利用してユーザーが認証済みであることを確認し、ユーザーを元のアプリケーションに戻す
  5. ユーザーを元のアプリケーションに戻す際には「コールバックURL」が使用される

注意点

  • トークンの安全な管理

    Microsoft Entra IDから得られるトークンは、ユーザーのログイン情報を含む重要なデータ。

    これらのトークンは、不正アクセスから保護するために、通信はHTTPSを使って暗号化し、サーバー側での保存も暗号化するなどの手段で厳重に管理する必要がある。

  • コールバックURL(リダイレクトURI)の保護

    Azureでは、アプリケーション登録時にリダイレクトURIを指定し、Microsoft Entra IDに登録する。

    これにより、認証プロセスが完了した後にユーザーがリダイレクトされる先が事前に確認され、承認されたURIにのみリダイレクトが行われる。

    これは、不正なリダイレクト攻撃やフィッシングを防ぐために重要。

    また、state パラメータの使用も、CSRF攻撃から保護し、認証応答が正しいセッションと結びついていることを保証するために重要。

  • トークンの検証

    アプリケーションは受け取ったトークンが本物であること、つまり正しい認証サーバーから来たもので、改ざんされていないことを確認する必要がある。

    トークンの署名をチェックし、有効期限や発行元が正しいかどうか、そしてアクセスが許可されている範囲内で使われているかを検証する。

これらを踏まえて、Microsoft Entra IDを利用すれば、自身のNext.jsアプリケーションにログイン機能を持たせることなく、ユーザー認証を実現することが可能となる。

参考URL

Discussion