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
510
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
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
180
QA4AI 2026-Oct 生成AI時代の品質保証
tokuty
1
890
トークン化預金DCJPYの取り組みと活用ユースケース
finengine
0
160
V8のArray.prototype.flatを最大約20倍速くするまでと、巨大OSSへの大規模コミットの道のり
riyaamemiya
0
310
Conditional PED-ANOVA: Hyperparameter Importance in Hierarchical & Dynamic Search Spaces
pfn
PRO
0
140
WasmをRustにする
sansantech
PRO
0
280
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
200
Rust で関数型ドメインモデリング
takonda
0
170
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
4
610
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
1k
1つのリクエストを追って理解する - llm-dのP/D分離
akhino
1
160
触りたくないデータに、どう触るか AI時代のRBACアクセスガバナンス
ivry_presentationmaterials
0
280
Featured
See All Featured
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.5k
We Are The Robots
honzajavorek
0
400
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
570
The Cult of Friendly URLs
andyhume
79
7k
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
Why Our Code Smells
bkeepers
PRO
340
58k
The Curse of the Amulet
leimatthew05
3
16k
Embracing the Ebb and Flow
colly
88
5.2k
YesSQL, Process and Tooling at Scale
rocio
174
15k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
380
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
410
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