Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Azure App Service / Container Apps の組み込み認証
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Kuniteru Asami
September 03, 2026
Technology
280
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
36
どう買う?Azure
kuniteru
1
760
スケールアウトできるManaged RDBMS - Azure Cosmos DB for PostgreSQL
kuniteru
0
140
現場からみた Azure リファレンスアーキテクチャ答え合わせ | Microsoft Build 2022
kuniteru
1
87
Azure Load Testingを利用したパフォーマンステスト
kuniteru
1
91
Understanding Azure Application Gateway
kuniteru
0
70
堅牢&運用楽々な WordPress を Azure App Service で
kuniteru
0
170
Azure PaaS とのよりセキュアな接続 - 初級編
kuniteru
0
72
あらためて Azure Virtual Network
kuniteru
0
58
Other Decks in Technology
See All in Technology
「エーアイ」をバズワードにしないために RPA 導入経験と Kiro 上での Claude モデル利用経験から
kazzpapa3
0
110
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
460
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
5
1.2k
Webの常識が通じないHTMLメールのダークモード
teamlab
PRO
0
150
オントロジーって 結局なにもの? AI エージェントに「意味」を渡す知識設計の話
greenmidori
0
250
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
760
AI時代のGraphQL
joere
1
250
野蛮なアジャイル [サイボウズ発!]組織の常識を覆した反骨のスクラム実践記 / Barbaric Agile - Enterprise Agile Study Group
ama_ch
0
120
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
1
230
Claude の新機能を、 出た日に触って社内に届けるまで
rfdnxbro
1
200
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
7
5.2k
『SAR衛星データ解析入門』のご紹介とその応用
syuchimu
0
130
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
433
67k
The Language of Interfaces
destraynor
162
27k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
260
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
940
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
530
Large-scale JavaScript Application Architecture
addyosmani
516
110k
Being A Developer After 40
akosma
92
590k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
310
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
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 トレーニング