Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Azure App Service / Container Apps の組み込み認証
Search
Kuniteru Asami
September 03, 2026
Technology
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Azure App Service / Container Apps の組み込み認証
2026/09/03 第 62 回 Tokyo Jazug Night
Kuniteru Asami
September 03, 2026
More Decks by Kuniteru Asami
See All by Kuniteru Asami
Azure Load Testing と Azure用 Jmeter Plugins
kuniteru
0
25
どう買う?Azure
kuniteru
1
730
スケールアウトできるManaged RDBMS - Azure Cosmos DB for PostgreSQL
kuniteru
0
130
現場からみた Azure リファレンスアーキテクチャ答え合わせ | Microsoft Build 2022
kuniteru
1
74
Azure Load Testingを利用したパフォーマンステスト
kuniteru
1
80
Understanding Azure Application Gateway
kuniteru
0
56
堅牢&運用楽々な WordPress を Azure App Service で
kuniteru
0
150
Azure PaaS とのよりセキュアな接続 - 初級編
kuniteru
0
65
あらためて Azure Virtual Network
kuniteru
0
40
Other Decks in Technology
See All in Technology
AI駆動開発を組織で促すために
lycorptech_jp
PRO
7
9.1k
Level Up Your CDK DX: 5 Tools I’ve Been Building
gotok365
2
170
Genie Code ワークショップ 応用編 / Genie-Code-Workshop-advanced
databricksjapan
PRO
0
240
Digitization部 紹介資料
sansan33
PRO
2
7.8k
Kiro Crewしか勝たん!?
miu_crescent
PRO
0
100
hookで自作する Claude Code の「実況ボード」
shinyasaita
2
280
Point Cloud as a Foreign Language for Multi-modal Large Language Model
takmin
0
360
Claude Codeの体系的な理解と知識のフック
oikon48
10
6.5k
PdMをやめて、 "プロダクトビルダー"という 働き方に変えました / PdM to Product Builder
shikichee
2
600
DMMブックスのNext.js化を加速させるAI活用 / Migrating DMM Books to Next.js with AI
kentarom
1
280
Genie Code ワークショップ 基礎編 / Genie-Code-Workshop-fundamental
databricksjapan
PRO
0
280
Self Healing Rollouts: Automating Production Fixes with Agentic AI
kdubois
0
120
Featured
See All Featured
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
My Coaching Mixtape
mlcsv
0
300
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
830
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
590
Building a Scalable Design System with Sketch
lauravandoore
463
34k
4 Signs Your Business is Dying
shpigford
187
23k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
The Cult of Friendly URLs
andyhume
79
7k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Technical Leadership for Architectural Decision Making
baasie
3
550
Transcript
Azure App Service / Container Apps 組み込み認証 その仕組みと、ローカル開発への対応 20 26
/ 09 / 03 第 62 回 Tokyo Jazug Night 浅見 城輝 -株式会社 pnop の
About me Microsoft Azure Database Microsoft Azure 浅見 城輝(あさみ くにてる)
kuniteru.asami @kunyami Find me Find me Microsoft Azure 2012~ BEER Microsoft Azure 2012~ kuniteru.asami @kunyami
Agenda Azure の組み込み認証とは? Azure の組み込み認証を 利用しているサイトの 開発
認証を自前で作るのは大変 •ログイン画面、 IdP との OAuth2 / OIDC のやり取り、セッ ション・トークン管理、 CSRF
対策、複数 IdP 対応などを 自分のアプリケーションに組み込む必要がある •言語やフレームワークのライブラリで楽になる部分はある が、実装・設定の手間とリスクは残る •実装ミスが起きやすく、セキュリティリスクが高い領域で もある
Azure の組み込み認証とは 認証ゲートウェイ 認証処理のコード変更ゼロ •対象は App Service と Container Apps
Apps は仕組みが異なり 別枠で後述) ( Static Web •認証ゲートウェイがリクエストに 割り 込み、 未認証ならロ グイン 画面へ自動リダイレクトする •認証後は、 アプリコードを 書かずに 「 誰がログインしてい るか 」 がヘッダーで 渡ってくる •組み込み認証は主に「 誰であるか 」 を 確認する 仕組み。 ロ グイン 後に何を 許可するかは 、 設定またはアプリ 側で別途 判断する •正式名称ではないが 、 Easy Auth と 呼ばれることも 多い
未認証でアクセス ユーザーからの初回リクエスト IdP へリダイレクト ログイン画面へ転送 リクエストヘッダー ユーザー情報 認証の流れ •リクエストがサイトに 届く
前に、 認証ゲートウェイが •未認証なら 、 IdP ( Entra ID / Google / GitHub イン 画面へ自動リダイレクトされる 割り 込む など ) のログ •認証後はアプリコードを 書かずとも 、 リクエストヘッダー ( X-MS -CLIENT -PRINCIPAL -NAME など ) にユーザー 情報 が含まれる
デモ #1
2つの認証フロー Cookie で管理 Server -directed flow X-ZUMO -AUTH ヘッダー /
Authorization: Bearer ヘッダー Client -directed flow •サーバー(組み込み認証)側が Cookie で認証状態を管理。 ブラウザは意識せず、 Cookie が自動で付いていくだけ •クライアントが 保持したトークンを 、 X-ZUMO -AUTH ヘッダーまたは Authorization: Bearer ヘッダーで 渡す
Token Store •IdP から取得したアクセストークン・リフレッシュトーク ンを、プラットフォーム側が自動的に保存・更新する仕組 み •X-MS -TOKEN -AAD -ACCESS
-TOKEN などのヘッダー経由 で取得できる •認証後に外部API ( Graph API など)を呼びたいときに、 自分でトークン管理をしなくて済む •App Service / Functions / Container Apps 機能 共通で使える
ユーザー属性情報の取得 •名前と 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 -
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"]]
認証必須ページと 認証不要ページを 混在 •ARM Template の globalValidation 認証を除外したいパスを指定する .excludedPaths に、
サインインできるユーザーを 限定する •Entra ID では、エンタープライズ アプリケーションの「割 り当てが必要ですか?」を「はい」に設定し、対象のユー ザー・グループを割り当てることで、許可した相手に限定 してサインインできるようになる
Static Web Apps 組み込み認証 の •設定方法もアーキテクチャも Apps とは 別物 App
Service/Container •設定方法は staticwebapp.config.json 参考: learn.microsoft.com/en で行う -us/azure/static -web -apps/configuration
リバースプロキシ 経由の注意点 •Front Door や Application Gateway 経由では、設定に よってはバックエンドへの転送時に Host
ヘッダーが書き換 えられる •X-Forwarded -Host ヘッダーの転送設定 + App Service の forwardProxy 設定が必要 側 •設定が無いと、組み込み認証が組み立てるコールバック URL が内部ホスト名になり、 Entra ID 側で「 redirect URI mismatch 」エラーになる
開発時の課題 •組み込み認証は「 Azure 上でしか動かない」ため、ローカ ル開発では未認証・認証済みのいずれの状態も再現できな い •ありがちな回避策:ヘッダーを手動で偽装する、本番/検 証環境に都度デプロイして確認する、など
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 ヘッダー ) 対応
デモ #2
VS Code 拡張機能 </> •デバッグセッションの開始・終了に連動して、 EasyAuth Emulator が自動起動・停止する •デバッグを開始するだけで、認証ゲートウェイが裏で立ち 上がっている状態を再現できる
marketplace.visualstudio.com/items?itemName=pnop.e asyauth -emulator
デモ #3
現時点の制限事項 組み込み認証の完全なクローンではない 。 例えば、 次のような 違いがある •Static Web Apps は「
サインインが 必要かどうか 」 の切り 替えのみ 対応 •ヘッダーは 部分実装: X-MS -TOKEN -AAD -EXPIRES -ON / X-MS -TOKEN -AAD -REFRESH -TOKEN など 、 一部のヘッダーは 未対応 •エンドポイントは 実装済みだが完全一致ではない •/.auth/me は動作するがレスポンスは 完全に同一ではない •/.auth/refresh はスタブで 実際のトークン 更新はしない
まとめ Azure の 組み込み認証 ローカル開発 の悩み 認証を肩代わり Azure 専用の壁 •Azure
App Service / Container Apps してくれる 仕組み EasyAuth Emulator Token Store トークンを 自動管理 の組み込み認証は、 アプリコードを •Token Store を 使えば 、 外部API の呼び出しもトークン ローカルで再現 書かずに 認証を 肩代わり 管理を 自分で行わずに済む •一方でAzure 上でしか 動かないため 、 ローカル 開発でのテストでは 利用できない •本番は Azure の組み込み認証 / ローカル 開発は EasyAuth Emulator
株式会社 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 トレーニング