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
Microsoft 365 の認証と承認を理解する / Understanding Micro...
Search
Takashi Shinohara
October 16, 2025
Technology
0
14
Microsoft 365 の認証と承認を理解する / Understanding Microsoft 365 Authentication and Authorization
第 12 回 JPM365DEV 勉強会 (
https://jpm365dev.connpass.com/event/370200/
) に登壇したときのスライドです。
Takashi Shinohara
October 16, 2025
Tweet
Share
More Decks by Takashi Shinohara
See All by Takashi Shinohara
Power Automate のパフォーマンス改善レシピ / Power Automate Performance Improvement Recipes
karamem0
0
330
どっちの API SHOW?SharePoint 開発における SharePoint REST API Microsoft Graph API の違い / Which API show? Differences between Microsoft Graph API and SharePoint REST API
karamem0
0
1.1k
Microsoft Ignite 2024 最新情報!Microsoft 365 Agents SDK 概要 / Microsoft Ignite 2024 latest news Microsoft 365 Agents SDK overview
karamem0
0
490
徹底解説!Microsoft 365 Copilot の拡張機能 / Complete guide to Microsoft 365 Copilot extensions
karamem0
1
4.2k
Microsoft Search の Graph コネクタ ハンズオン / Handson for Graph Connector of Microsoft Search
karamem0
0
190
いまだから「検索」を語ろう! SharePoint FAST Search から Microsoft Search セマンティックインデックスまで / Let's talk about search now
karamem0
3
1.7k
徹底解説!Power Platform 導入の成功事例から見る DX 推進のコツ / Tips for DX promotion from Power Platform case studies
karamem0
0
5.3k
どうする Power Pages?Web 開発者からみる Power Pages / How to deal with Power Pages
karamem0
0
1.4k
Fluent UI を理解する / Understanding Fluent UI
karamem0
0
1.1k
Other Decks in Technology
See All in Technology
WEBサービスを成り立たせるAWSサービス
takano0131
0
110
やる気のない自分との向き合い方/How to Deal with Your Unmotivated Self
sanogemaru
0
510
LLMアプリの地上戦開発計画と運用実践 / 2025.10.15 GPU UNITE 2025
smiyawaki0820
1
570
カンファレンスに託児サポートがあるということ / Having Childcare Support at Conferences
nobu09
1
580
ソースを読むプロセスの例
sat
PRO
7
2.5k
Geospatialの世界最前線を探る [2025年版]
dayjournal
1
220
「れきちず」のこれまでとこれから - 誰にでもわかりやすい歴史地図を目指して / FOSS4G 2025 Japan
hjmkth
1
310
プレーリーカードを活用しよう❗❗デジタル名刺交換からはじまるイベント会場交流のススメ
tsukaman
0
160
ComposeではないコードをCompose化する case ビズリーチ / DroidKaigi 2025 koyasai
visional_engineering_and_design
0
110
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
43k
エンタメとAIのための3Dパラレルワールド構築(GPU UNITE 2025 特別講演)
pfn
PRO
0
330
Claude Codeを駆使した初めてのiOSアプリ開発 ~ゼロから3週間でグローバルハッカソンで入賞するまで~
oikon48
9
3.6k
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Designing for Performance
lara
610
69k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
44
7.8k
4 Signs Your Business is Dying
shpigford
185
22k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
189
55k
Code Reviewing Like a Champion
maltzj
526
40k
YesSQL, Process and Tooling at Scale
rocio
173
14k
The Invisible Side of Design
smashingmag
302
51k
It's Worth the Effort
3n
187
28k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Transcript
Microsoft 365 の認証と承認を理解する 2025/10/16 第 12 回 JPM365DEV 勉強会
篠原 敬志 (Takashi Shinohara) アバナード株式会社 グループ マネージャー, アジャイル コーチ Microsoft
MVP M365 (2018-2026) Microsoft Top Partner Engineer Award (2023) JPM365DEV 運営
本日のアジェンダ 認証と承認 OAuth 2.0 Microsoft ID Platform
認証と承認
認証 (Authentication) とは 認証とは、対象の真正性を確認する行為のこと (Wikipedia より) 情報技術の世界ではその人本人であると確認することを指すことが多い 英語では Authentication だが、長いので
AuthN と略されることがある
認証の例 印鑑 過去の記憶 顔
承認 (Authorization) とは 承認とは、一定の行為または事実の存在を許諾または肯定すること (Wikipedia より) 情報技術の世界では特定のリソースへのアクセスを許可することを指すことが多い 英語では Authorization だが、長いので
AuthZ と略されることがある 承認は Microsoft の用語で一般的には認可と呼ぶことが多い
承認の例 ホテルの鍵 伝説の剣 チケット
認証と承認の組み合わせ カードの所有 暗証番号の入力 限度額の確認 認証 承認
認証と承認は常にセットではない 合言葉、ZIP ファイルのパスワード、共有 URL など、認証をしない承認もある セキュリティ リスクを伴う可能性があるため注意が必要
情報技術の世界での認証と承認 情報技術の世界では現実世界に比べて本人であることの証明が難しい デジタル情報は簡単に複製が可能 世界中に公開されているため攻撃されるリスクが高い フィッシング、ブルートフォース攻撃、辞書攻撃、マルウェアなど 同じ認証手段 (パスワード) を使っている場合は影響範囲が広い より強固なセキュリティ対策が必要
認証の三要素 所持情報 本人のみ所持可能な物理 的なものによる証明 • パスポート • 運転免許証 • マイナンバー
カード • クレジット カード • ハードウェア トークン 知識情報 本人のみ知りうる情報による 証明 • 名前 • 住所 • 電話番号 • 暗証番号 • パスワード 生体情報 本人の身体的な特徴による 証明 • 顔 • 指紋 • 声紋 • 虹彩
多段階認証と多要素認証 複数の認証を組み合わせることでセキュリティは強固になる 多段階認証 複数のステップの認証を組み合わせること (要素の種類は問わない) 例) パスワード (知識情報) + 秘密の質問
(知識情報) 多要素認証 複数の要素の認証を組み合わせること 例) 信頼されたデバイス (所持情報) + 顔 (生体情報)
先進認証 (Advanced Authentication) 従来のパスワード認証に加えて、複数の異なる要素や技術を組み合わせる手法 • パスワードレス認証 (FIDO2、パスキー、セキュリティ キーなど) • 多要素認証
• 生体認証 • リスクベース認証 • 行動認証
OAuth 2.0
OAuth 2.0 とは Microsoft をはじめとした世界の主要サービスが採用している承認の仕組み マルチ デバイスやマイクロ サービスといったクラウド アプリケーションに適している 誰が、何に、どこまでを明確に制御する
OAuth 2.0 をベースとした認証の仕組みとして OpenID Connect (OIDC) がある
OAuth 2.0 の仕組み OAuth 2.0 には 4 つのロールが関与する • 承認サーバー
• クライアント • リソース オーナー • リソース サーバー
わかりにくいので…
OAuth 2.0 を現実世界で表現すると 出演者 (リソース オーナー) 依頼 マネージャー (クライアント) 受付
運営会社 (承認サーバー) 発行 入館証 (アクセス トークン) 入場 イベント会場 (リソース サーバー)
承認サーバー ユーザー (リソース オーナー) の認証後にリソースへのアクセ スを許可するトークンを発行する ID プロバイダー (IdP) と呼ばれることがある
リソース オーナー リソースを所有するユーザーまたはアプリケーション 保護されたリソース (ユーザー データ) に対してクライアントに よるアクセスを許可する
リソース サーバー リソース オーナーのデータをホストするサーバー ほとんどの場合は Web API (代表的なものは Microsoft Graph
API)
クライアント リソース オーナーの代わりにリソース サーバーにアクセスしてデータを操作するアプリケーション Web アプリ、デスクトップ アプリ、モバイル アプリ、ほかの Web API
を呼び出す Web API など
アクセス トークン リソース サーバーがクライアントを許可するために使用されるトークン RFC 6749 (The OAuth 2.0 Authorization
Framework) では以下のように定義される • リソース サーバー、承認サーバー、クライアントの間でのみ共有されること • 第三者による生成、改変、推測ができないようにすること • クライアントは最小限のスコープで要求できること アクセス トークンの使用方法として Bearer トークンや JWT (JSON Web Token) が使用される 入館証を偽造できないための仕組み
JWT (JSON Web Token) 推奨される読み方は jot (ジョット) ヘッダー、ペイロード、署名で構成される • ヘッダー:
トークンの種類と署名アルゴリズム • ペイロード: トークンに含まれるクレームのセット • 署名: トークンの改ざんを防ぐための署名
クレーム クレーム=正当な権利の主張 承認に関する発行者、有効期限、ユーザー情報などのデータが含まれる リソース サーバーはクレームを検証することで正当性を確認する クレーム名 説明 実際の例 iss 発行者
(Issuer) https://sts.windows.net/{tenant-id}/ sub 主体 (Subject) vz9jzDIIQQLxgevubSyGmj53MmAmpntekwJ_qJPH3Tg aud 対象 (Audience) 00000003-0000-0000-c000-000000000000 exp 有効終了日時 (Expiration) 1707052800 nbf 有効開始日時 (Not Before) 1707049200 iat 発行日時 (Issued At) 1707049200
JWT のデコード JWT をデコードするためのサイト (アクセス トークンの取り扱いには注意!) jwt.io (Auth0 提供) jwt.ms
(Microsoft 提供)
DEMO jwt.io を使ってアクセス トークンの中身を見る
Microsoft ID Platform
Microsoft ID Platform とは Microsoft Entra ID (Azure AD) を基盤とする認証基盤
(IdP)
アプリケーションの登録 組織の Microsoft Entra ID にアプリケーション登録をすることで独自のアプリケーションに認証お よび承認を実装できる • シングルテナント: 自組織でのみ使用するアプリケーション
• マルチテナント: ISV など外部に提供するアプリケーション Azure ポータルまたは Microsoft Entra 管理センターから登録する 以前はマイクロソフト アカウント (個人アカウント) でも登録できたが現在は非推奨
公開クライアントと機密クライアント 公開クライアント 機密クライアント ユーザーのデバイス上で実行され、資格 情報 (クライアント シークレットや証明 書) を保存できないクライアント •
シングル ページ アプリケーション • デスクトップ/モバイルアプリ • コンソール アプリ サーバー上で実行され、資格情報 (クラ イアント シークレットや証明書) を保存で きるクライアント • Web アプリ • Web API • デーモン サービス (バッチ プログラム)
OAuth 2.0 フロー クライアントのシナリオに合わせてさまざまなフローが存在する (下記は代表的なもの) フロー名 説明 RFC Authorization Code
Flow 認可コードを使ったフロー RFC 6749 Authorization Code Flow with PKCE PKCE (Proof Key for Code Exchange) を使ったフロー RFC 7636 Implicit Flow 暗黙的な許可フロー (非推奨) RFC 6749 Client Credentials Flow クライアント資格情報を使ったフロー RFC 6749 Resource Owner Password Credentials Flow パスワード資格情報を使ったフロー (非推奨) RFC 6749 Device Code Flow デバイス コードを使ったフロー RFC 8628 On-Behalf-Of Flow (OBO) 別の API の呼び出しに使われるフロー RFC 8693
委任されたアクセス許可 リソース オーナーの持っているアクセス許可のうち一部のアクセス許可をクライアントに委任する • クライアントはリソース オーナーに許可されていない操作はできない • リソース オーナーがもともと許可されていない操作もできない マネージャー、代わりにやっといて
でも言ったこと以外やっちゃダメだよ 出演者 (リソース オーナー) マネージャー (クライアント)
アプリケーションのアクセス許可 クライアントそのものに与えられたアクセス許可で動作する 非常に強い権限を持つため限定的なシナリオでのみ使用する 対応しているのは Client Credentials Flow のみ
DEMO アプリケーション登録をして Postman から Microsoft Graph API を呼び出す
まとめ 認証は本人確認、承認はアクセス許可の仕組み OAuth 2.0 はクラウド アプリケーションの承認の仕組み Microsoft ID Platform を使ってカスタム
アプリに OAuth 2.0 を実装できる
ご清聴ありがとうございました アンケートのご協力お願いします! https://forms.office.com/r/VhKmBi10J8