Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Graph API について

Graph API について

MiyakeMito

May 21, 2022
Tweet

More Decks by MiyakeMito

Other Decks in Technology

Transcript

  1. Power Automate と Power Virtual Agents で ゲームを作ってます ⚫ オセロ

    ⚫ 神経衰弱 ⚫ どうぶつしょうぎ ⚫ WORDL
  2. 本日の参考サイト ▪ Microsoft Graph APIってなに?(りなたむさん) https://speakerdeck.com/rnakamuramartiny/microsoft-graphtutenani ▪ Microsoft FlowでMicrosoft Graph

    APIを利用する2通りの方法 (@r-wakatsuki さん) https://qiita.com/r-wakatsuki/items/3c84fff0471c658a99c1 ▪ Microsoft Graph を使ってみよう(kenichiro nakamuraさん) https://qiita.com/kenakamu/items/6a1ca508dc093779eefa ▪ Microsoft Graph ドキュメント https://docs.microsoft.com/ja-jp/graph/?view=graph-rest-1.0
  3. Graph APIとは ② Microsoft 365 User, Groups, Organizations Outlook /

    Exchange SharePoint, OneDrive Teams Planner To Do Excel OneNote Delve Microsoft Search アクセス可能なソリューション Windows 10,11 Activities Device Relay Commands 通知 Enterprise Mobility + Security Azure AD Intune Advanced Threat Analytics Advanced Threat Protection Identity Manager Dynamics 365 Business Central などなど
  4. DEMOします ▪ ゲストを招待する https://docs.microsoft.com/ja-jp/graph/api/invitation-post?view=graph-rest-1.0&tabs=http ▪ ライセンスを割り当てる https://docs.microsoft.com/ja-jp/graph/api/user-assignlicense?view=graph-rest-1.0&tabs=http ▪ パスワードを変更する https://docs.microsoft.com/ja-jp/graph/api/passwordauthenticationmethod-

    resetpassword?view=graph-rest-beta&tabs=http ▪ Intune 業務用デバイスIDを登録する https://docs.microsoft.com/ja-jp/graph/api/intune-enrollment-importeddeviceidentity- importdeviceidentitylist?view=graph-rest-beta Graphを利用すると 例えばこんなことができます
  5. Graph Explorer ▪ https://developer.microsoft.com/ja-jp/graph/graph-explorer ▪ GUI を使って実際に Graph を触れるツール ▪

    委任されたアクセス許可で実行される ▪ サンプルアカウントで の実行も可能 ➢ Megan Bowenさん
  6. Powe Automateで利用する手順 アプリの登録 アプリにアクセス許可を付与 アプリケーションの 許可でAPI実行 委任されたアクセス許可でAPI実行 初 回 の

    み 問 い 合 わ せ の 度 に Graph API 実行 Graph API 実行 アクセストークン 発行 これが 一番手軽 Graph API 実行 パターン1 パターン2 パターン3
  7. Powe Automateで利用する手順 アプリの登録 アプリにアクセス許可を付与 アプリケーションの 許可でAPI実行 委任されたアクセス許可でAPI実行 初 回 の

    み 問 い 合 わ せ の 度 に Graph API 実行 Graph API 実行 アクセストークン 発行 Graph API 実行 パターン1 パターン2 パターン3 ここ!
  8. アプリをAzure ポータル(Microsoft ID プラット フォーム)に登録 Azure portal ➢ Azure Active

    Directory ➢ アプリの登録 アプリを Azure に登録① 開発者がユーザーや顧客の各自の Microsoft ID やSNSア カウントを使用してサインインで切る仕組みを提供 SSO,ゲストアクセスなど
  9. Powe Automateで利用する手順 アプリの登録 アプリにアクセス許可を付与 アプリケーションの 許可でAPI実行 委任されたアクセス許可でAPI実行 初 回 の

    み 問 い 合 わ せ の 度 に Graph API 実行 Graph API 実行 アクセストークン 発行 Graph API 実行 パターン1 パターン2 パターン3 いまココ!
  10. アクセス許可 サインインしているユーザーとして 動作するよ ➢ユーザーに代わってAPIを実行す るよ アプリ自体にアクセス許可を付与し て動作します ➢ユーザーなしでAPIを実行します ➢事前に管理者の同意が必要 エンドユーザーが利用するスマホアプ

    リ等、サインインユーザーとして動作 することが必要なアプリで利用 バックグラウンドサービスやデーモン 等のなど、サインインユーザーが存在 しないアプリで利用
  11. 委任されたアクセス許可 ◼ HTTP with Azure ADコネクタ > HTTP要求を呼び出します ◼ HTTP

    with Azure AD コネクタはある程度の権限を保持している ➢ 実行できる権限スコープの一覧は公開されていない ➢ フローを実行した際に権限エラーが発生する場合、アプリケー ションの許可を利用する、またはトークンを取得する必要がある 私の権限で実行して どうぞ
  12. アプリケーションの許可 ◼ HTTP > HTTP ◼ Azure AD にアプリを登録する必要がある ➢

    フローから Active Directory OAuth で認証する 私が実行します
  13. Powe Automateで利用する手順 アプリの登録 アプリにアクセス許可を付与 アプリケーションの 許可でAPI実行 委任されたアクセス許可でAPI実行 初 回 の

    み 問 い 合 わ せ の 度 に Graph API 実行 Graph API 実行 アクセストークン 発行 Graph API 実行 パターン1 パターン2 パターン3 ココ!
  14. Graph API 実行 {ディレクトリ (テナント) ID} {クライアントシークレット} HTTPメソッド URI Content-type

    : application/json 要求本文 {アプリケーション(クライアント)ID} Acrive Directory Oauth を選択 https://graph.microsoft.com シークレット を選択
  15. URIについて ① https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/children バージョン リソース パラメータ ▪ バージョン v1.0:一般公開 beta:プレビュー段階

    ▪ Microsoft Graph のリソースに対し、APIの応答をカスタマイズするた めのRESTメソッドパラメータを指定(省略可能) メソッド
  16. Powe Automateで利用する手順 アプリの登録 アプリにアクセス許可を付与 アプリケーションの 許可でAPI実行 委任されたアクセス許可でAPI実行 初 回 の

    み 問 い 合 わ せ の 度 に Graph API 実行 Graph API 実行 アクセストークン 発行 Graph API 実行 パターン1 パターン2 パターン3 いまココ!
  17. 403… HTTP with Azure AD コネクタは ある程度の権限を保持しているが、 権限エラーが発生する場合は・・・ ➢ アプリケーションの許可でアク

    セス権限を付与できるなら ➢ できない場合は アクセストークンを発行する 私に任せて下さい!
  18. Powe Automateで利用する手順 アプリの登録 アプリにアクセス許可を付与 アプリケーションの 許可でAPI実行 委任されたアクセス許可でAPI実行 初 回 の

    み 問 い 合 わ せ の 度 に Graph API 実行 Graph API 実行 アクセストークン 発行 Graph API 実行 パターン1 パターン2 パターン3 ココ!
  19. アクセストークンを発行 ⑤ POST https://login.microsoftonline.com/common/ oauth2/v2.0/token Content-Type : application/x-www-form-urlencoded client_id={アプリケーション(クライアント)ID} &scope=offline_access%20{アクセス許可}

    &refresh_token={リフレッシュトークン} &redirect_uri=http%3A%2F%2Flocalhost%2F myapp%2F &grant_type=refresh_token &client_secret={クライアントシークレット}
  20. トークンの発行サイクル 承認要求 認可コード リフレッシュ トークン リフレッシュ トークン リフレッシュ トークン リフレッシュ

    トークン アクセス トークン アクセス トークン アクセス トークン アクセス トークン アクセストークン発 行時に、リフレッ シュトークンも併せ て発行されるよ 初 回 の み 問 い 合 わ せ の 度 に
  21. 認可サーバー APIのセキュリティ ▪ OAuth2.0 ① 許可申請 クライアント ② 権限付与確認 ③

    許可 ④ 認可コード発行 利用権でアクセス ⑤ アクセストークン リクエスト ⑥ アクセストークン 取得 そうだよ リソースサーバの API使いたい ID Pass 知ってるクライアント? 許可されたよ 許可権を利用権 にかえて 利用権だよ ⑦ APIへ アクセス ⑧ リソース取得 やったぜ! リソースオーナー リソースサーバー Graph API
  22. アクセストークン発行 ROPC POST https://login.microsoftonline.com/ {ディレクトリ (テナント) ID}/oauth2/token Content-Type : application/x-www-form-urlencoded

    grant_type=password &resource=https://graph.microsoft.com &client_id={アプリケーション(クライアント)ID} &username={実行ユーザーID} &password={実行ユーザーパスワード} &client_secret={クライアントシークレット} ROPC権限は1アクションでアクセストークンを取得できるけど、 フローにユーザーID/パスワードとクライアントシークレットを設定するので注意!!
  23. Powe Automateで利用する手順 アプリの登録 アプリにアクセス許可を付与 アプリケーションの 許可でAPI実行 委任されたアクセス許可でAPI実行 初 回 の

    み 問 い 合 わ せ の 度 に Graph API 実行 Graph API 実行 アクセストークン 発行 Graph API 実行 パターン1 パターン2 パターン3 ココ!
  24. Power AutomateでGraph API 同等機能のコネクタ 機能を共有 1. 提供コネクタを利用 2. カスタムコネクタを利用 3.

    HTTPアクション または HTTP要求を呼び出します ある Power Automateで Graph API を呼びたい 共有する ない 共有しない Power Automate 標準機能でできなきいことをGraph APIで実現しよう!
  25. ご参考に ▪ Power Automate で Graph API の「委任されたアクセス許可」でアクセス トークンを発行する方法 https://qiita.com/MiyakeMito/items/a768841d76d22544a4c6

    ▪ Power Virtual Agents と Power Automate でユーザーのパスワードリセット するチャットボット作成【情シスボットシリーズ①】 https://qiita.com/MiyakeMito/items/e433059661dbfcd4fdf4 ▪ Power Virtual Agents と Power Automate でユーザーにライセンスを付与す るチャットボット作成【情シスボットシリーズ②】 https://qiita.com/MiyakeMito/items/6595dffc3a97a2f92d7c https://qiita.com/MiyakeMito