Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Azure App Service / Container Apps の組み込み認証

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for Kuniteru Asami Kuniteru Asami
September 03, 2026

Azure App Service / Container Apps の組み込み認証

2026/09/03 第 62 回 Tokyo Jazug Night

Avatar for Kuniteru Asami

Kuniteru Asami

September 03, 2026

More Decks by Kuniteru Asami

Other Decks in Technology

Transcript

  1. Azure App Service / Container Apps 組み込み認証 その仕組みと、ローカル開発への対応 20 26

    / 09 / 03 第 62 回 Tokyo Jazug Night 浅見 城輝 -株式会社 pnop の
  2. About me Microsoft Azure Database Microsoft Azure 浅見 城輝(あさみ くにてる)

    kuniteru.asami @kunyami Find me Find me Microsoft Azure 2012~ BEER Microsoft Azure 2012~ kuniteru.asami @kunyami
  3. 認証を自前で作るのは大変 •ログイン画面、 IdP との OAuth2 / OIDC のやり取り、セッ ション・トークン管理、 CSRF

    対策、複数 IdP 対応などを 自分のアプリケーションに組み込む必要がある •言語やフレームワークのライブラリで楽になる部分はある が、実装・設定の手間とリスクは残る •実装ミスが起きやすく、セキュリティリスクが高い領域で もある
  4. Azure の組み込み認証とは 認証ゲートウェイ 認証処理のコード変更ゼロ •対象は App Service と Container Apps

    Apps は仕組みが異なり 別枠で後述) ( Static Web •認証ゲートウェイがリクエストに 割り 込み、 未認証ならロ グイン 画面へ自動リダイレクトする •認証後は、 アプリコードを 書かずに 「 誰がログインしてい るか 」 がヘッダーで 渡ってくる •組み込み認証は主に「 誰であるか 」 を 確認する 仕組み。 ロ グイン 後に何を 許可するかは 、 設定またはアプリ 側で別途 判断する •正式名称ではないが 、 Easy Auth と 呼ばれることも 多い
  5. 未認証でアクセス ユーザーからの初回リクエスト IdP へリダイレクト ログイン画面へ転送 リクエストヘッダー ユーザー情報 認証の流れ •リクエストがサイトに 届く

    前に、 認証ゲートウェイが •未認証なら 、 IdP ( Entra ID / Google / GitHub イン 画面へ自動リダイレクトされる 割り 込む など ) のログ •認証後はアプリコードを 書かずとも 、 リクエストヘッダー ( X-MS -CLIENT -PRINCIPAL -NAME など ) にユーザー 情報 が含まれる
  6. 2つの認証フロー Cookie で管理 Server -directed flow X-ZUMO -AUTH ヘッダー /

    Authorization: Bearer ヘッダー Client -directed flow •サーバー(組み込み認証)側が Cookie で認証状態を管理。 ブラウザは意識せず、 Cookie が自動で付いていくだけ •クライアントが 保持したトークンを 、 X-ZUMO -AUTH ヘッダーまたは Authorization: Bearer ヘッダーで 渡す
  7. Token Store •IdP から取得したアクセストークン・リフレッシュトーク ンを、プラットフォーム側が自動的に保存・更新する仕組 み •X-MS -TOKEN -AAD -ACCESS

    -TOKEN などのヘッダー経由 で取得できる •認証後に外部API ( Graph API など)を呼びたいときに、 自分でトークン管理をしなくて済む •App Service / Functions / Container Apps 機能 共通で使える
  8. ユーザー属性情報の取得 •名前と ID はそれぞれのヘッダー( PRINCIPAL -NAME/ -ID )で取得 X-MS -CLIENT

    - •一部の情報は、 X-MS -CLIENT -PRINCIPAL をデコードし て確認(既定の preferred_username や、 Entra ID のア プリ登録のトークン構成で追加したオプション /グループな ど) •ヘッダーに含まれない情報は、 Token Store のアクセス トークン( X-MS -TOKEN -AAD -ACCESS -TOKEN )を使っ た Graph API 呼び出しで取得 ※Graph API 呼び出しには、 Entra ID のアプリの登録での API アクセ ス許可と、 App Service 側でログイン時に要求するスコープの設定 ( authsettingsV2 )が必要 参考: learn.microsoft.com/en -us/azure/app -service/scenario access -microsoft -graph -as -user -secure -app -
  9. Token Store を使った Graph API 呼び出し # Token Store のトークンをそのまま使う

    token = request.headers[ "X-MS-TOKEN-AAD-ACCESS-TOKEN"] resp = requests.get( "https://graph.microsoft.com" "/v1.0/me/memberOf", headers={"Authorization": f"Bearer {token}"}, ) groups = [g["displayName"] for g in resp.json()["value"]]
  10. Static Web Apps 組み込み認証 の •設定方法もアーキテクチャも Apps とは 別物 App

    Service/Container •設定方法は staticwebapp.config.json 参考: learn.microsoft.com/en で行う -us/azure/static -web -apps/configuration
  11. リバースプロキシ 経由の注意点 •Front Door や Application Gateway 経由では、設定に よってはバックエンドへの転送時に Host

    ヘッダーが書き換 えられる •X-Forwarded -Host ヘッダーの転送設定 + App Service の forwardProxy 設定が必要 側 •設定が無いと、組み込み認証が組み立てるコールバック URL が内部ホスト名になり、 Entra ID 側で「 redirect URI mismatch 」エラーになる
  12. Azure の組み込み認証を 利用しているサイトの開発 EasyAuth Emulator github.com/pnopjp/easyauth -emulator •oauth 2-proxy をベースにした

    、 組み込み認証互換のゲートウェイ を 再現する OSS •対応 IdP : Microsoft Entra ID / Google / GitHub / Apple / Facebook / OIDC •再現しているもの : /.auth/* エンドポイント PRINCIPAL* などの 互換ヘッダー 、 X-MS -CLIENT - •Server -directed flow ( Cookie ) ・ Client -directed flow ( XZUMO -AUTH ヘッダー / Authorization: Bearer ヘッダー ) 対応
  13. 現時点の制限事項 組み込み認証の完全なクローンではない 。 例えば、 次のような 違いがある •Static Web Apps は「

    サインインが 必要かどうか 」 の切り 替えのみ 対応 •ヘッダーは 部分実装: X-MS -TOKEN -AAD -EXPIRES -ON / X-MS -TOKEN -AAD -REFRESH -TOKEN など 、 一部のヘッダーは 未対応 •エンドポイントは 実装済みだが完全一致ではない •/.auth/me は動作するがレスポンスは 完全に同一ではない •/.auth/refresh はスタブで 実際のトークン 更新はしない
  14. まとめ Azure の 組み込み認証 ローカル開発 の悩み 認証を肩代わり Azure 専用の壁 •Azure

    App Service / Container Apps してくれる 仕組み EasyAuth Emulator Token Store トークンを 自動管理 の組み込み認証は、 アプリコードを •Token Store を 使えば 、 外部API の呼び出しもトークン ローカルで再現 書かずに 認証を 肩代わり 管理を 自分で行わずに済む •一方でAzure 上でしか 動かないため 、 ローカル 開発でのテストでは 利用できない •本番は Azure の組み込み認証 / ローカル 開発は EasyAuth Emulator
  15. 株式会社 pnop 株式会社 pnop は Microsoft Azure 皆様のプロジェクトに、 に関する課題解決のプロフェッショナル集団です。 Azure

    経験豊富なエンジニアがノウハウを提供いたします。 新規システムを 既存システムを パッケージ・ソリューションを Azure を 利用することで Azure で稼働させしたい Azure に移行したい Azure に対応したい システムコストを Azure で安全・ 安心な Azure を利用することで Azure を 利用しているうえで システムを 提供したい 運用担当者の負担を軽減したい 困っていることを Azure Azure アーキテクチャ 運用設計 設計相談 相談 Azure 開発 Azure 環境構築 下げたい Azure のスキルを向上したい 解決したい Azure トラブル シューティング Azure に関するご相談・お問い合わせ: [email protected] https://www.pnop.co.jp Azure トレーニング