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 AD でセキュリティ保護された Web アプリケーションで Microsoft Graph を使用する / Using Microsoft Graph in Azure AD secured web applications
Search
Takashi Shinohara
July 25, 2020
Programming
0
610
Azure AD でセキュリティ保護された Web アプリケーションで Microsoft Graph を使用する / Using Microsoft Graph in Azure AD secured web applications
.NET ラボ 勉強会 2020 年 7 月 (
https://dotnetlab.connpass.com/event/181076
) に登壇したときのスライドです。
Takashi Shinohara
July 25, 2020
Tweet
Share
More Decks by Takashi Shinohara
See All by Takashi Shinohara
いまだから「検索」を語ろう! SharePoint FAST Search から Microsoft Search セマンティックインデックスまで / Let's talk about search now
karamem0
3
440
徹底解説!Power Platform 導入の成功事例から見る DX 推進のコツ / Tips for DX promotion from Power Platform case studies
karamem0
0
4k
どうする Power Pages?Web 開発者からみる Power Pages / How to deal with Power Pages
karamem0
0
840
Fluent UI を理解する / Understanding Fluent UI
karamem0
0
250
Microsoft Teams の 会議アプリ開発のはじめかた / How to start Microsoft Teams app development
karamem0
0
3.3k
Web API 開発を加速しよう - Avanade Beef のご紹介 / Accelerate your web API - development introducing Avanade Beef
karamem0
0
2.2k
Japan Microsot 365 Developer Community Day 2021: Microsoft Teams ハンズオン / Japan Microsot 365 Developer Community Day 2021: Microsoft Teams Hands-on
karamem0
0
22
Microsoft 365 開発をはじめる人のための React 超入門 / Super introduction to react for those starting Microsoft 365 development
karamem0
0
930
Microsoft Build 2021 最新版! Microsoft Teams アプリ開発のいま / Microsoft Teams app development now (Microsoft Build 2021 latest version)
karamem0
0
1.4k
Other Decks in Programming
See All in Programming
The Future of C++ Interoperability: Insights from Porting a Game to Swift
teamhimeh
0
270
Go1.22からの疑似乱数生成器について/go-122-pseudo-random-generator
convto
1
160
Parallel Socket Communication in Swift
s_shimotori
0
220
Laravel標準バリデーションでできること
hmb_ok
2
360
SwiftUI, Jetpack Composeの導入で変化した「家族アルバム みてね」のアプリ開発体験
hicka04
6
390
C# 大統一理論推進委員会 会員のための Unity Package Manager プロジェクト構成案
monry
PRO
0
580
Dockerで始めるAWS Lambda開発
stutkhd0709
13
2.5k
MySQL のインデックスの種類をおさらいしよう! / overviewing indexes in MySQL
okashoi
0
170
Crafting a Own PHP - ウキウキ手作りミニマリストPHP
uzulla
4
1.1k
上手な探索的テストとその上達方法について
matsu802
4
650
TCAの Shared Stateって どういう仕組みになってんの?
yimajo
0
330
htmx is fun!
codehex
2
190
Featured
See All Featured
It's Worth the Effort
3n
180
27k
BBQ
matthewcrist
78
8.7k
How To Stay Up To Date on Web Technology
chriscoyier
781
250k
Testing 201, or: Great Expectations
jmmastey
27
6.3k
GraphQLの誤解/rethinking-graphql
sonatard
48
9.1k
The MySQL Ecosystem @ GitHub 2015
samlambert
242
12k
Adopting Sorbet at Scale
ufuk
66
8.5k
Debugging Ruby Performance
tmm1
68
11k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
16k
Fantastic passwords and where to find them - at NoRuKo
philnash
35
2.4k
KATA
mclloyd
14
11k
Transcript
Azure AD でセキュリティ保護された Web アプリケー ションで Microsoft Graph を使用する 2020/7/25
篠原 敬志 (@karamem0)
自己紹介 Name 篠原敬志 (Takashi Shinohara) Company アバナード株式会社 シニアコンサルタント Award Microsoft
MVP for Office Development (2018-) Twitter @karamem0 Facebook t.shinohara.56 Blog https://blog.karamem0.jp
Japan M365 Dev User Group 勉強会開催します!
本セッションについて de:code 2020 の MVP パーソナル スポンサーとして提供したサンプル コードにつ いて前提の話から含めて解説します。 サンプル
コードと説明は GitHub から入手可能です。 https://github.com/karamem0/decode2020
Azure の Web アプリをセキュリティ保護する Azure App Service および Azure Functions
ではコーディングなしで認証と承認を有 効にする組み込みの機能があります。 認証を実装するためにはセキュリティに対する深い理解が必要となりますが、この 機能を使うことで、開発者はその労力を割くことなく、ビジネス価値を提供するこ とに集中することはできます。 この機能は "Easy Auth" と呼ばれることがあります。
認証/承認を提供するサービス
認証/承認のアーキテクチャ (Windows) https://docs.microsoft.com/ja-jp/azure/app-service/overview-authentication-authorization
認証/承認のエンドポイント 種類 エンドポイント ログイン /.auth/login/<provider> ログアウト /.auth/logout トークンの取得 (*) /.auth/me
トークンの更新 (*) /.auth/refresh (*) トークン ストアが有効である必要があります
DEMO Azure AD の認証/承認を有効にする
Azure AD による Web アプリのセキュリティ保護 Azure AD をプロバイダーとして Web アプリをセキュリティ保護する場合、Azure
AD に新しいアプリを作成が作成され、OpenID Connect による認証が行われます。 認証後の各種トークンは HTTP 要求ヘッダーまたは "/.auth/me" へのリクエストに よって取得できます。このトークンを使うことで、Microsoft Graph をはじめとし たさまざまなサービスに追加のアクセス許可の要求を行うことができます。
トークンの種類 種類 説明 ID トークン ユーザーの認証情報を含むトークン アクセス トークン 特定のリソースへのアクセス許可を含むトークン リフレッシュ
トークン アクセス トークンを更新するためのトークン
JWT (Json Web Token) eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNT E2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c Base64 エンコードされたヘッダー { "alg":
"HS256", "typ": "JWT" } Base64 エンコードされたペイロード { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 } ヘッダーとペイロードからなる署名
アクセス トークンを取得する OpenID Connect による認証のときに取得されるアクセス トークンには Microsoft Graph などのサービスへのアクセス許可は含まれません。Microsoft Graph
を使う ためにはアクセス トークンを取得しなおす必要があります。 今回のサンプル コードではリフレッシュ トークンを使ってアクセス トークンを更 新する方法を使います。アクセス トークンを取得する方法は他にも存在します。
DEMO サンプル コードを動かしてみる
まとめ Azure の Web アプリケーションは Azure AD で簡単に認証をかけられます。 Azure AD
の認証情報を使って Microsoft Graph をはじめとした API にアクセスする ことが可能です。Microsoft Graph を使うことで組織のさまざまなリソースを操作 することができ、エンタープライズ アプリケーションの構築を容易にします。
ありがとうございました