Slide 1

Slide 1 text

Microsoft Graph ハンズオン 2018/10/27 篠原敬志 (@karamem0)

Slide 2

Slide 2 text

自己紹介 Name 篠原敬志 (Takashi Shinohara) Company アバナード株式会社 シニアコンサルタント Award Microsoft MVP for Office Development (2018-) Twitter @karamem0 Blog からめもぶろぐ。(http://blog.karamem0.jp) Bio SharePoint が得意なフレンズ

Slide 3

Slide 3 text

本日のアジェンダ Microsoft Graph とは ハンズオン: Graph Explorer OAuth とは Microsoft Graph における OAuth ハンズオン: Hello Microsoft Graph

Slide 4

Slide 4 text

Microsoft Graph とは

Slide 5

Slide 5 text

Microsoft Graph

Slide 6

Slide 6 text

Microsoft 365 企業向けのサブスクリプション型の統合型ソリューション 生産性を最大限に高めるアプリケーション ビジネスを安全に守る高度なセキュリティとデバイスの管理 Office 365 Windows 10 Enterprise Mobility + Security

Slide 7

Slide 7 text

統合型プログラミング モデル 1 つのエンドポイント https://graph.microsoft.com 豊富なリソース Azure Active Directory Office 365 Enterprise Mobility + Security Windows 10 教育

Slide 8

Slide 8 text

リレーションシップ Graph: 「つながり方」に着目して抽 象化された「点とそれらをむすぶ線」 の概念 /me からはじまる

Slide 9

Slide 9 text

提供されるサービス サービス 機能 ユーザーとグループ ユーザー、グループ ID およびアクセス管理 ID およびアクセス管理 生産性 予定表、ファイル、メール、メモ、個人用連絡先、ブックとグラフ グループ作業 サイトとリスト、タスクとプラン、チームワーク (プレビュー) ソーシャル インテリジェンスおよび分析機能 連絡先、ドキュメントのインサイト (プレビュー) デバイスの管理 デバイスとアプリ セキュリティ セキュリティ統合 (プレビュー)、Identity Protection (プレビュー) クロスデバイス エクスペリエンス クロスデバイス エクスペリエンス 利用状況レポート レポート 教育 教育 ビジネス アプリケーション 顧客の予約 (プレビュー)

Slide 10

Slide 10 text

API のバージョン 一般提供 https://graph.microsoft.com/v1.0 プレビュー版 https://graph.microsoft.com/beta プレビュー機能が一般提供になった場合は最新バージョンに取り込まれる バージョンが新しくなる場合、現在のバージョンは非推奨となり、24 か月 後に非サポートとなる

Slide 11

Slide 11 text

HTTP メソッド メソッド 説明 GET リソースからデータを読み取ります。 POST 新しいリソースを作成、または処理を実行します。 PATCH リソースを新しい値で更新します。 PUT リソースを新しいものと置換します。 DELETE リソースを削除します。

Slide 12

Slide 12 text

クエリ パラメーター (OData) 名前 説明 $count 一致するリソースの総数を取得します。 $expand 関連リソースを取得します。 $filter 結果 (行) をフィルターします。 $format 指定したメディア形式で結果を返します。 $orderby 結果を並べます。 $search 検索条件に基づいて結果を返します。 $select プロパティ (列) をフィルターします。 $skip 結果セットにインデックスを作成します。 $skipToken 複数ページにわたる結果セットから、結果の次のページを取得します。 $top 結果のページ サイズを設定します。

Slide 13

Slide 13 text

SDK (プレビュー) (プレビュー)

Slide 14

Slide 14 text

Graph Explorer Microsoft Graph をお手軽に試すための Web サービス サンプル アカウントが使用可 豊富なサンプル クエリ

Slide 15

Slide 15 text

ハンズオン: Graph Explorer

Slide 16

Slide 16 text

Graph Explorer サンプル データを表示する 自分のユーザー情報を取得する メールを送信する OneDrive の Excel ファイルに値を書き込む

Slide 17

Slide 17 text

Graph Explorer サンプル データを表示する 自分のユーザー情報を取得する メールを送信する OneDrive の Excel ファイルに値を書き込む

Slide 18

Slide 18 text

サンプル データ: Graph Explorer https://developer.microsoft.com/ja-jp/graph/graph-explorer に アクセス

Slide 19

Slide 19 text

サンプル データ: クエリの実行 [クエリを実行] をクリック

Slide 20

Slide 20 text

Graph Explorer サンプル データを表示する 自分のユーザー情報を取得する メールを送信する OneDrive の Excel ファイルに値を書き込む

Slide 21

Slide 21 text

自分のユーザー情報: Sign in with Microsoft [Sign in with Microsoft] をクリック

Slide 22

Slide 22 text

自分のユーザー情報: サインイン 組織アカウントでサインイン

Slide 23

Slide 23 text

自分のユーザー情報: アクセス許可の承認 [承諾] をクリック

Slide 24

Slide 24 text

自分のユーザー情報: クエリの実行 [クエリを実行] をクリック

Slide 25

Slide 25 text

自分のユーザー情報: OData による操作 /v1.0/me?select=displayName を実行

Slide 26

Slide 26 text

Graph Explorer サンプル データを表示する 自分のユーザー情報を取得する メールを送信する OneDrive の Excel ファイルに値を書き込む

Slide 27

Slide 27 text

メールの送信: アクセス許可の修正 [アクセス許可の修正] をクリック

Slide 28

Slide 28 text

メールの送信: アクセス許可の選択 [Mail.Send] を選択して [アクセス許可の修正] をクリック

Slide 29

Slide 29 text

メールの送信:アクセス許可の承認 [承諾] をクリック

Slide 30

Slide 30 text

メールの送信: サンプルをさらに表示 [サンプルをさらに表示] をクリック

Slide 31

Slide 31 text

メールの送信: サンプル カテゴリの選択 [Outlook メール] をオンに設定

Slide 32

Slide 32 text

メールの送信: サンプルの選択 [電子メールを送信する] を選択

Slide 33

Slide 33 text

メールの送信: 宛先の変更 宛先を自分のメール アドレスに変更して実行

Slide 34

Slide 34 text

メールの送信: 実行結果の確認 応答の状態コードの確認

Slide 35

Slide 35 text

メールの送信: Graph での受信メールの確認 /v1.0/me/messages?$filter=isRead eq false を実行

Slide 36

Slide 36 text

メールの送信: Outlook での受信メールの確認 Outlook から受信メールを確認

Slide 37

Slide 37 text

Graph Explorer サンプル データを表示する 自分のユーザー情報を取得する メールを送信する OneDrive の Excel ファイルに値を書き込む

Slide 38

Slide 38 text

Excel 書き込み: ファイルの準備 OneDrive for Bussiness に Excel ファイルを作成

Slide 39

Slide 39 text

Excel 書き込み: ファイルの検索 /v1.0/me/drive/root/search(q=‘{query}’) を実行し id を保管

Slide 40

Slide 40 text

Excel 書き込み: セッションの開始 /v1.0/me/drive/items/{itemid}/workbook/createSession を実行

Slide 41

Slide 41 text

Excel 書き込み: セッション情報の設定 要求ヘッダーに workbook-session-id を設定

Slide 42

Slide 42 text

Excel 書き込み: ワークシートの取得 /v1.0/me/drive/items/{itemid}/workbook/worksheets を実行

Slide 43

Slide 43 text

Excel 書き込み: セルに書き込み /v1.0/me/drive/items/{itemid}/workbook/worksheets/{sheetna me}/range(address=‘A1:A1’) を実行 要求本文: { "values" : [["Hello Microsoft Graph!"]], }

Slide 44

Slide 44 text

Excel 書き込み: 実行結果の確認 応答の状態コードの確認

Slide 45

Slide 45 text

Excel 書き込み: Excel ファイルの確認 Excel ファイルに値が書き込まれていることを確認

Slide 46

Slide 46 text

Excel 書き込み: セッションの終了 /v1.0/me/drive/items/{itemid}/workbook/closeSession を実行

Slide 47

Slide 47 text

OAuth とは

Slide 48

Slide 48 text

OAuth サード パーティー アプリケーションによる HTTP サービスへの限定的なアクセ スを可能にする認可フレームワーク サード パーティー アプリケーションに対して資格情報 (ユーザー名とパスワー ドのペア) を共有することなく認可を行うことができる

Slide 49

Slide 49 text

さまざまなサービスでの実装 OAuth 1.0 OAuth 2.0

Slide 50

Slide 50 text

RFC RFC 6749: The OAuth 2.0 Authorization Framework RFC 6750: The OAuth 2.0 Authorization Framework: Bearer Token Usage RFC 8252: OAuth 2.0 for Native Apps draft-ietf-oauth-device-flow draft-ietf-oauth-jwt-bearer-12

Slide 51

Slide 51 text

ロールの種類 Resource Owner Resource Server Client Authorization Server

Slide 52

Slide 52 text

認可フローの種類 Authorization Code Grant Implicit Grant Password Credentials Grant Client Credentials Grant Device Flow On-Behalf-Of Flow

Slide 53

Slide 53 text

Microsoft Graph における OAuth

Slide 54

Slide 54 text

アクセス許可 委任されたアクセス許可 アプリケーションのアクセス許可 認可フロー Authorization Code Grant Implicit Grant Password Credentials Grant Device Flow On-Behalf-Of Flow Client Credentials Grant 用途 対話型のアプリケーション バックグランド アプリケーション アクセス許可 Resource Owner (ユーザー) が持って いる権限とアプリに付与された権限の 最小範囲 完全なレベルの権限 /me の使用 可 不可

Slide 55

Slide 55 text

エンドポイント v1.0 v2.0 URL https://login.microsoftonline.c om/oauth2 https://login.microsoftonline.c om/oauth2/v2.0 アカウント 組織アカウントのみ 組織アカウントおよびマイクロソフト アカウントの両方に対応 アプリの登録 Azure Portal Application Registration Portal 動的なアクセス許可 不可 可 認可フロー サポートされている 一部はサポートされていない ライブラリ ADAL MSAL

Slide 56

Slide 56 text

アクセス トークン 認可が正常に行われたときに返される JSON Web Token (JWT) 形式 の文字列 System.IdentityModel.Tokens.Jwt を使って解析できる 有効期間が存在する (セキュリティ上短くするのが望ましい)

Slide 57

Slide 57 text

リフレッシュ トークン 有効期間が切れた場合はリフレッシュ トークンを使ってアクセス トークンを 取得しなおす必要がある 認可フローによってはリフレッシュ トークンを取得できない 有効期間が存在する (切れた場合は再認証)

Slide 58

Slide 58 text

ハンズオン: Hello Microsoft Graph

Slide 59

Slide 59 text

Hello Microsoft Graph アプリの登録 委任されたアクセス許可によるアプリの実行 アプリケーションのアクセス許可によるアプリの実行 SDK を使ったアプリの実行

Slide 60

Slide 60 text

Hello Microsoft Graph アプリの登録 委任されたアクセス許可によるアプリの実行 アプリケーションのアクセス許可によるアプリの実行 SDK を使ったアプリの実行

Slide 61

Slide 61 text

アプリの登録: Application Registration Portal https://apps.dev.microsoft.com にアクセス

Slide 62

Slide 62 text

アプリの登録: サインイン 組織アカウントでサインイン

Slide 63

Slide 63 text

アプリの登録: アプリの追加 [アプリの追加] をクリック

Slide 64

Slide 64 text

アプリの登録: アプリケーション名の登録 [Application Name] を入力して [Create] をクリック

Slide 65

Slide 65 text

アプリの登録: アプリケーション ID の確認 [アプリケーション ID] の値をコピーして保管

Slide 66

Slide 66 text

アプリの登録: 委任されたアクセス許可の確認 [委任されたアクセス許可]-[追加] をクリック

Slide 67

Slide 67 text

アプリの登録: アプリケーションのアクセス許可の確認 [アプリケーションのアクセス許可]-[追加] をクリック

Slide 68

Slide 68 text

アプリの登録: シークレットの生成 [新しいパスワードを生成] をクリック

Slide 69

Slide 69 text

アプリの登録: シークレットの生成 生成されたパスワードをコピーして保管

Slide 70

Slide 70 text

アプリの登録: プラットフォームの追加 [プラットフォームの追加] をクリック

Slide 71

Slide 71 text

アプリの登録: プラットフォームの選択 [Web] をクリック

Slide 72

Slide 72 text

アプリの登録: リダイレクト URL の入力と保存 https://localhost:5001/Account/Callback と入力して保存

Slide 73

Slide 73 text

Hello Microsoft Graph アプリの登録 委任されたアクセス許可によるアプリの実行 アプリケーションのアクセス許可によるアプリの実行 SDK を使ったアプリの実行

Slide 74

Slide 74 text

サンプル プロジェクト: AuthorizationCodeGrant 委任されたアクセス許可 (Authorization Code Grant による認可フ ロー) を体験するためのサンプル プロジェクト ASP.NET Core MVC アプリケーション サインインするとようこそメッセージを表示

Slide 75

Slide 75 text

委任されたアクセス許可: VS Code で開く Visual Studio Code で [AuthorizationCodeGrant] を開く

Slide 76

Slide 76 text

委任されたアクセス許可: AccountController.cs の修正 TenantId, ClientId, ClientSecret を設定

Slide 77

Slide 77 text

委任されたアクセス許可: ビルドの実行 [ターミナル]-[ビルド タスクの実行]-[build] をクリック

Slide 78

Slide 78 text

委任されたアクセス許可: ビルド結果の確認 [ターミナル] でビルドが成功したことを確認

Slide 79

Slide 79 text

委任されたアクセス許可: Fiddler Fiddler を起動

Slide 80

Slide 80 text

委任されたアクセス許可: デバッグの開始 [デバッグ]-[デバッグの開始] をクリック

Slide 81

Slide 81 text

委任されたアクセス許可: Sign in with Microsoft [Sign in with Microsoft] をクリック

Slide 82

Slide 82 text

委任されたアクセス許可: サインイン 組織アカウントでサインイン

Slide 83

Slide 83 text

委任されたアクセス許可: アクセス許可の承認 [承諾] をクリック

Slide 84

Slide 84 text

委任されたアクセス許可: ようこそ ようこそメッセージが表示されることを確認

Slide 85

Slide 85 text

委任されたアクセス許可: 認可フロー Resouce Owner Client Authorization Server Resource Server [Sign in with Microsoft] をクリック /oauth2/v2.0/authorize にリダイレクト サインイン ページを表示 組織アカウントでサインイン コールバック URL にリダイレクト /oauth2/v2.0/token にリクエストを実行 アクセス トークンの返却 /v1.0/me にリクエストを実行 ユーザー情報の返却 ようこそメッセージを表示

Slide 86

Slide 86 text

委任されたアクセス許可: /oauth2/v2.0/authorize Fiddler で実行結果を確認

Slide 87

Slide 87 text

委任されたアクセス許可: /oauth2/v2.0/token Fiddler で実行結果を確認

Slide 88

Slide 88 text

委任されたアクセス許可: /v1.0/me Fiddler で実行結果を確認

Slide 89

Slide 89 text

Hello Microsoft Graph アプリの登録 委任されたアクセス許可によるアプリの実行 アプリケーションのアクセス許可によるアプリの実行 SDK を使ったアプリの実行

Slide 90

Slide 90 text

サンプル プロジェクト: ClientCredentialsGrant アプリケーションのアクセス許可 (Client Credentials Grant による認可 フロー) を体験するためのサンプル プロジェクト .NET Core コンソール アプリケーション 実行すると組織内のすべてのユーザーの情報を表示

Slide 91

Slide 91 text

アプリケーションのアクセス許可: アクセス許可の追加 [アプリケーションのアクセス許可]-[追加] をクリック

Slide 92

Slide 92 text

アプリケーションのアクセス許可: アクセス許可の選択 [User.Read.All] を選択して [OK] をクリック

Slide 93

Slide 93 text

アプリケーションのアクセス許可: 変更の保存 [保存] をクリック

Slide 94

Slide 94 text

アプリケーションのアクセス許可: VS Code で開く Visual Studio Code で [ClientCredentialsGrant] を開く

Slide 95

Slide 95 text

アプリケーションのアクセス許可: Program.cs の修正 TenantId, ClientId, ClientSecret を設定

Slide 96

Slide 96 text

アプリケーションのアクセス許可: ビルドの実行 [ターミナル] で dotnet build -r と入力して実行

Slide 97

Slide 97 text

アプリケーションのアクセス許可: ビルド結果の確認 [ターミナル] でビルドが成功したことを確認

Slide 98

Slide 98 text

アプリケーションのアクセス許可: Fiddler Fiddler を起動

Slide 99

Slide 99 text

アプリケーションのアクセス許可: プログラムの実行 [ターミナル] で dotnet run -r と入力して実行

Slide 100

Slide 100 text

アプリケーションのアクセス許可: Admin Consent [ターミナル] に表示される URL をコピーしてアクセス

Slide 101

Slide 101 text

アプリケーションのアクセス許可: サインイン 組織アカウントでサインイン

Slide 102

Slide 102 text

アプリケーションのアクセス許可: アクセス許可の承認 [承諾] をクリック

Slide 103

Slide 103 text

アプリケーションのアクセス許可: アクセス トークンの表示 [ターミナル] で Enter キーを押すとアクセス トークンを表示

Slide 104

Slide 104 text

アプリケーションのアクセス許可: すべてのユーザーの表示 [ターミナル] で Enter キーを押すと組織内のすべてのユーザーを表示

Slide 105

Slide 105 text

アプリケーションのアクセス許可: 認可フロー Resouce Owner Client Authorization Server Resource Server AdminConsent の URL を表示 サインイン ページを表示 組織アカウントでサインイン コールバック URL にリダイレクト プログラムの実行 /oauth2/2.0/token にリクエストを実行 アクセス トークンを返却 /v1.0/users にリクエストを実行 ユーザー情報の返却 ユーザー情報を表示

Slide 106

Slide 106 text

アプリケーションのアクセス許可: /oauth2/v2.0/token Fiddler で実行結果を確認

Slide 107

Slide 107 text

アプリケーションのアクセス許可: /v1.0/users Fiddler で実行結果を確認

Slide 108

Slide 108 text

Hello Microsoft Graph アプリの登録 委任されたアクセス許可によるアプリの実行 アプリケーションのアクセス許可によるアプリの実行 SDK を使ったアプリの実行

Slide 109

Slide 109 text

サンプル プロジェクト: MsalAndGraphSdk Microsoft Authentication Library (MSAL) および Microsoft Graph SDK を使用して Authorization Code Grant による認可フローを体験 するためのサンプル プロジェクト ASP.NET Core コンソール アプリケーション やっていることは AuthorizationCodeGrant と同じ

Slide 110

Slide 110 text

SDK の使用: VS Code で開く Visual Studio Code で [MsalAndGraphSdk] を開く

Slide 111

Slide 111 text

SDK の使用: AccountController.cs の修正 TenantId, ClientId, ClientSecret を設定

Slide 112

Slide 112 text

SDK の使用: ビルドの実行 [ターミナル]-[ビルド タスクの実行]-[build] をクリック

Slide 113

Slide 113 text

SDK の使用: ビルド結果の確認 [ターミナル] でビルドが成功したことを確認

Slide 114

Slide 114 text

SDK の使用: Fiddler Fiddler を起動

Slide 115

Slide 115 text

SDK の使用: デバッグの開始 [デバッグ]-[デバッグの開始] をクリック

Slide 116

Slide 116 text

SDK の使用: サインイン~ようこそ

Slide 117

Slide 117 text

SDK の使用: /oauth2/v2.0/authorize Fiddler で実行結果を確認

Slide 118

Slide 118 text

SDK の使用: /oauth2/v2.0/token Fiddler で実行結果を確認

Slide 119

Slide 119 text

SDK の使用: /v1.0/me Fiddler で実行結果を確認

Slide 120

Slide 120 text

SDK の使用: メリット タイプ セーフ グローバル対応 アクセス トークンのキャッシュ

Slide 121

Slide 121 text

まとめ

Slide 122

Slide 122 text

本日のアジェンダ Microsoft Graph とは ハンズオン: Graph Explorer OAuth とは Microsoft Graph における OAuth ハンズオン: Hello Microsoft Graph

Slide 123

Slide 123 text

学習リソース https://developer.microsoft.com/ja-jp/graph にアクセス

Slide 124

Slide 124 text

ありがとうございました