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 AD で管理画面のユーザーと権限管理
Search
Atsushi Nakagawa
November 06, 2020
Technology
500
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Azure AD で管理画面のユーザーと権限管理
Atsushi Nakagawa
November 06, 2020
Other Decks in Technology
See All in Technology
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
5
1.7k
SREは、MCPとAutopilotをこう使え!
kazumax55
3
850
Screen Lens - 今見てる画面を翻訳する
komagata
0
320
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
31
26k
絵ではじめるKubernetesセキュリティ
aoi1
3
630
生成AIエージェントを用いた、 手動テスト手順書から自動テストへの 変換手法の検討
magicpod
0
160
その Lambda、8分で 管理者権限まで奪われます
k1nakayama
4
2.6k
HHKBエバンジェリストになる方法
941
0
110
HRC_Frontend_Conference_Fukuoka_2026.pdf
ts020
0
730
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
9
980
10分で知る最近のOmarchy
komagata
0
350
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
4
620
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
420
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
500
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
460
Context Engineering - Making Every Token Count
addyosmani
9
1.1k
A Soul's Torment
seathinner
8
3.6k
It's Worth the Effort
3n
188
29k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
Into the Great Unknown - MozCon
thekraken
41
2.7k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
The agentic SEO stack - context over prompts
schlessera
0
940
Transcript
管理画面の利用者と権限管理を Azure AD で
自己紹介 中川 敦 エンジニア マネーフォワード歴: 2014 年 ~
(現在:アカウントアグリゲーション部) • 得意な言語:C, Java, Python, Bash, JS 趣味:PC ゲーム。今ハマっているゲーム: • Apex Legends • Hades(ハデス)
目次 1. Azure AD を使って利用者と権限の管理 2. 利用者を区別する識別子について 3.
利用者の識別子から利用者情報の取得 4. Single Logout について
Azure AD を使って利用者と権限 の管理 (題材:アグリ管理ウェブ)
アグリ管理ウェブ • 登録口座毎の取得記録(取得日時、取得結果、など) • 取得エラーの詳細な理由 • β
機能を(一部ユーザーに)開放 • 連携先の(一時)緊急停止
アグリ管理ウェブの構成 アグリ管理ウェブ 社内利用者 (カスタマーサポート、 アグリゲーション部の担当) の 連携機能のデータベース
利用者管理と利用権限 利用者管理: • 利用者のメールアドレス、パスワード(ハッシュ) 権限管理: • 登録口座毎の取得記録(取得日時、取得結果、など) ←
CS /アグリが利用 • 取得エラーの詳細な理由 ← CS /アグリが利用 • β 機能を(一部ユーザーに)開放 ← アグリが利用 • アグリゲーション機能の(一時)停止 ← アグリが利用
アグリ管理ウェブの構成(+利用者管理) アグリ管理ウェブ 社内利用者 (カスタマーサポート、 アグリゲーション部の担当) の 連携機能のデータベース
利用者管理: ・メールアドレス ・パスワード ・権限(複数)
アグリ管理ウェブの構成(+利用者管理) アグリ管理ウェブ 社内利用者 (カスタマーサポート、 アグリゲーション部の担当) の 連携機能のデータベース
利用者管理: ・メールアドレス ・パスワード ・権限(複数) → Microsoft Azure AD にて
Azure Active Directory (Azure AD) を使うことの利点 弊社では 「アグリ管理ウェブ」より前から Azure AD
を使用していた(主に SSO 用) • アグリ管理ウェブの機能削減: ◦ 利用者毎のメールアドレスとパスワードの管理が不要 ◦ 別途権限管理が不要 • 代わりに Azure AD の機能を使用: ◦ SSO でログイン ◦ Azure AD では利用者毎に「ロール」を設定可能(複数ロール可能)
Azure AD の利用者とロールの設定 UI 「アグリ管理ウェブ」用の設定 利用者名(グループ管理も可能) 設定ロール(複数可能)
「アグリ管理ウェブ」をブラウザーで開く → (セッションが無ければ) SSO にリダイレクト Azure AD の
SSO を使ったログインイメージ (1/3)
→ SSO (OAuth 2.0 authorization code flow) で使うリンクにリダイレクトされる: https://login.microsoftonline.com/abcdef12-3456-7890-abcd-ef1234567890/oauth2/v2.0/authorize?scope=openid+profile+...
&redirect_uri=https://aggre-aweb.example/sso Azure AD の SSO を使ったログインイメージ (2/3)
→ ユーザーが口座を選ぶと「code」が発行され「redirect_uri」で指定した URL にブラウザーが戻って来る https://aggre-aweb.example/sso?code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq… Azure AD の
SSO を使ったログインイメージ (3/3) テクニカル: https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token HTTP/1.1 client_id=...&client_secret=...&code=AwABAAAAvPM1KaPlrEqdFSBzjqfTGBCmLdgfSTLEMPGYuNHSUYBrq... { "access_token": "...", "expires_in": 3599, "refresh_token": "...", "id_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctOD...", } • アグリ管理ウェブ側では貰った「code」を用いてトークンを取得: • 応答 jwt 型式の JSON に利用者の名前、ロール(roles)情報など
1. Azure Active Directory にアプリケーションを登録 1. サービス名を決めて Active Directory
の管理画面より新規アプリケーションを追加 2. Redirect URI を設定(redirect_uri で許可する URL) 3. Logout URL を設定 (Single Logout 時に呼ばれる URL) 4. ウェブサービス側で使う client secret を発行 5. マニフェストファイルを編集してロールを定義 6. 利用者とロールを必要に応じて設定 2. ウェブサービス側の開発 1. ログイン用に Azure にリダイレクトする実装 2. 貰った code からログインを完了させる URL i. Azure を照会して code からトークンを取得 ii. ロールなど利用者情報をセッション記録 3. Logout URL の実装(オプショナル) Azure AD を使った SSO の開発の大まかな流れ "appRoles": [ { "allowedMemberTypes": ["User"], "description": "CS で業務を行う担当者のためのロールです ", "origin": "Application", ... "value": "CS" }, { "allowedMemberTypes": ["User"], "description": "アグリの業務を行うエンジニアのためのロールです ", "origin": "Application", ... "value": "AGGRE" }, ... 例
利用者を区別する識別子につい て
アグリ管理ウェブの構成 アグリ管理ウェブ 社内利用者 (カスタマーサポート、 アグリゲーション部の担当) の 連携機能のデータベース
利用者管理: ・メールアドレス ・パスワード ・権限(複数) → Microsoft Azure AD にて
アグリ管理ウェブの構成(+操作の申請&承認) アグリ管理ウェブ 社内利用者 (カスタマーサポート、 アグリゲーション部の担当) の 連携機能のデータベース
利用者管理: ・メールアドレス ・パスワード ・権限(複数) → Microsoft Azure AD にて 操作の申請&承認情報
• 申請者を記録する必要がある • 承認者には承認時に申請者が誰なのか見れるようになっている必要がある • 後から確認できるように申請者と承認者は記録に残す必要がある (危険な)操作の申請と承認機能
• どちらも利用者をユニークに識別 • ロール情報と同じように id_token の JSON 内に存在
• sub: Azure AD に登録した一つのアプリケーション内でのみユニーク ◦ アプリケーションを再登録 → sub はゴミ化 ◦ アプリケーションとデータストアのライフサイクルが同じであれば問題ない • oid: アプリケーションを跨いでもユニーク ◦ アプリケーションを再登録 → oid は変わらない ◦ scope=profile が必要。無ければ id_token に存在しない 利用者の識別子: Azure AD と sub と oid の違い
利用者の識別子から利用者情 報の取得
Microsoft Graph のエンドポイントよりユーザー情報を照会: • ログイン時に得た access_token を使う必要がある
応答: sub/oid を用いて利用者を取得 GET https://graph.microsoft.com/v1.0/{tenant}/users/{oid} Authentication: Bearer ... { "displayName": "山田 太郎", "givenName": "givenName-value", "jobTitle": "jobTitle-value", "mail": "mail-value", "mobilePhone": "mobilePhone-value", ... "id": "id-value" }
Single Logout について
Logout URI → ログアウトを実施 • Front-Channel → アグリ管理ウェブで実装
• Back-Channel? Single Logout: 一括ログアウトについて
Q & A