Alternative Architecture DOJO

オルターブースのクラウドネイティブ特化型ブログです。

Global Azure 2024(東京会場)に登壇しました

こんにちは、先日小学校に入学した娘が「パパ、どうして人間は存在しているの?」と聞いてきたので末はニーチェか釈尊かと驚いた木村です。なお、物理学的なことと哲学的なことと宗教的なことについて知りうる限りの知識を総動員して回答しましたが、ちゃんと伝わったかは不明です。

2024/4/20に開催されたGlobal Azure 2024(東京会場)にショートセッションで登壇しましたので、その報告をしたいと思います!

jazug.connpass.com

なお、当日は弊社でGlobal Azure 2024 in Fukuokaが開催されていたのですが、私はこの開催を知る前に登壇を決めていたため、福岡会場現地近くの弊社サテライトオフィスから東京会場にリモート登壇して、終了後の懇親会は福岡会場に合流するという謎の行動を取っていました。

jazug.connpass.com

セッション内容

今回の私のセッションは「FrontDoorとWebAppsを組み合わせた際のリダイレクト処理の注意点」という内容です。

FrontDoorとWebAppsを組み合わせた際に、EasyAuthがうまく行かないという件で2年前にブログを書いておりましたが、その後同様のお問い合わせを受けることがあったため、EasyAuth以外の状況や細かい点に関して調査を行い、その結果を改めて今回のセッションで皆さんに共有しました。

aadojo.alterbooth.com

登壇資料は以下に公開しています。

speakerdeck.com

リダイレクト問題の本質

FrontDoorとWebAppsを組み合わせた際には、ブラウザからのリクエストがどのように処理されるのか、その挙動について理解しておくことが重要です。
利用者(ブラウザ)はFrontDoorのドメインでアクセスしていたとしても、「リダイレクトを行う主体」が、自身が何というドメインであると認識しているかによって、リダイレクト処理の結果が異なることになります。

OIDC(EasyAuthも含む)では、redirect_uriというパラメータを設定することで、認証サービスで認証が終わった後にどのURLにリダイレクトするかを指定することができます。この時、redirect_uriに「誰が(どのサービスが」)」「どのドメインを」指定するかが重要です。

詳細は登壇資料をご参照いただきたいのですが、最終的にまとめると以下の通りとなります。

利用シーン redirect_uriを指定しているもの カスタムドメイン アプリ改修 forwardProxy設定
OIDC アプリケーション
EasyAuto WebApps

それぞれの解決方法について、なぜその方法で該当の利用シーンを解決できるかを以下で簡単に説明します。

forwardProxyプロパティの設定

Config-Authsettings V2の、forwardProxyプロパティのconventionの値の説明は以下にありますが、「The convention used to determine the url of the request made.」とあります。

learn.microsoft.com

これは、WebAppsが指定された認証サービスに対してリクエストを行う際のURLを決定するための規則、つまりredirect_uriをどのように指定するかを指します。

つまり、これを設定することは「WebAppへの指示」なので、EasyAuthでのみ利用可能な方法となります。

カスタムドメインの付与

FrontDoorとWebAppsの両方に同じカスタムドメインを付与すると、WebAppsならびにWebAppsで実行されているアプリケーションいずれに対しても、リクエストがFrontDoorと同じドメイン(カスタムドメイン)であることを知らせることになります。

つまり、これを設定することは「WebAppならびにアプリケーションへの指示」なので、OIDCでもEasyAuthでも利用可能な方法となります。

アプリケーションの改修

FrontDoor(リバースプロキシー)を通じてリクエストを受けたアプリケーションへは、リクエスト元のドメインがX-Forwarded-HostというHTTPヘッダで渡されます。そのため、アプリケーションはこのヘッダを参照して、リダイレクト先のURLを生成することができます。

つまり、これは「アプリケーションの改修」なので、OIDCでのみ利用可能な方法となります。

まとめ

FrontDoorとWebAppsを組み合わせた際に、リダイレクト処理に関する問題が発生することがありますが、それぞれの解決方法を理解しておくことで、適切に問題を解決することができます。

詳細を理解するにはHTTPでのHostヘッダと名前ベースのバーチャルホストの概念、WebAppsでの取り扱われ方、DNS名とHostヘッダの関係など多岐にわたる知識が必要にはなるためここでは割愛しますが、まずは上記の表を参考にしていただければ良いかと思います。

皆さんの参考になれば幸いです。

サービス一覧 www.alterbooth.com cloudpointer.tech www.alterbooth.com