Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Azure AD でセキュリティ保護された Web アプリケーションで Microsoft Graph を使用する / Using Microsoft Graph in Azure AD secured web applications
Takashi Shinohara
July 25, 2020
Programming
0
420
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
Microsoft Teams の 会議アプリ開発のはじめかた / How to start Microsoft Teams app development
karamem0
0
2.2k
Web API 開発を加速しよう - Avanade Beef のご紹介 / Accelerate your web API - development introducing Avanade Beef
karamem0
0
660
Japan Microsot 365 Developer Community Day 2021: Microsoft Teams ハンズオン / Japan Microsot 365 Developer Community Day 2021: Microsoft Teams Hands-on
karamem0
0
8
Microsoft 365 開発をはじめる人のための React 超入門 / Super introduction to react for those starting Microsoft 365 development
karamem0
0
640
Microsoft Build 2021 最新版! Microsoft Teams アプリ開発のいま / Microsoft Teams app development now (Microsoft Build 2021 latest version)
karamem0
0
1.2k
スクラムで Power Apps 開発をやってみた / Tried to develop Power Apps with Scrum
karamem0
1
1.7k
Power Apps/Power Automate for Office 365 でできる SharePoint リストを使ったアプリの構築 / Building apps with SharePoint lists via Power Apps and Power Automate for Office 365
karamem0
1
3.3k
Global Microsoft 365 Developer Bootcamp 2020 Tokyo: Teams 開発ハンズオン / Hands-on training for Global Microsoft 365 Developer Bootcamp 2020 Tokyo: Teams Development
karamem0
0
300
Microsoft Teams と Azure DevOps でリモート スクラム開発を実現する / Enabling remote scrum development with Microsoft Teams and Azure DevOps
karamem0
0
720
Other Decks in Programming
See All in Programming
YATA: collaborative documents and how to make them fast
horusiath
1
170
話題の AlloyDB は本当に凄いデータベースなのでプレビューを使い倒した #devio2022
maroon1st
0
13k
Cloudflare WorkersでGoのHTTPサーバーを動かすライブラリを作った話
syumai
0
150
それ全部エラーメッセージに書いてあるよ!〜独学でPHPプログラミングが上達するたった一つの方法〜
77web
1
160
ふんわり理解するcontext
rukiadia
1
180
kintoneでランダム取得を作ってみた(imoniCamp 2022-07-27)
shokun1108
0
150
2022 - COSCUP - 打造高速 Ruby 專案開發流程
elct9620
0
100
There's an API for that!
mariatta
PRO
0
110
kintone × LINE Bot で餃子検定Botを作った話
naberina
0
340
Pluggable Storage in PostgreSQL
sira
1
190
Git Rebase
bkuhlmann
7
1.1k
Google I/O 2022 Android関連概要 / Google I/O 2022 Android summary
phicdy
1
400
Featured
See All Featured
ReactJS: Keep Simple. Everything can be a component!
pedronauck
655
120k
jQuery: Nuts, Bolts and Bling
dougneiner
56
6.4k
GraphQLの誤解/rethinking-graphql
sonatard
31
6.8k
4 Signs Your Business is Dying
shpigford
169
20k
Bash Introduction
62gerente
598
210k
Side Projects
sachag
450
37k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
212
20k
Designing Experiences People Love
moore
130
22k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
151
13k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
14
3.8k
Principles of Awesome APIs and How to Build Them.
keavy
113
15k
StorybookのUI Testing Handbookを読んだ
zakiyama
6
2.5k
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 を使うことで組織のさまざまなリソースを操作 することができ、エンタープライズ アプリケーションの構築を容易にします。
ありがとうございました