Pocket

Microsoft Flow から Microsoft Graph API を利用する場合、アクセストークンを取得する必要があるわけです。ただ、HTTP アクションを使ってわざわざアクセストークンを取得してくるのが面倒だな…、そう思っていたところ HTTP アクションに気になるオプションを見つけました。

Microsoft Flow の HTTP アクションには「詳細オプション」が用意されており、そこには「認証」という項目が用意されています。その中に「Active Directory OAuth」というオプションも用意されているので、はてさて、これはどうやって利用するのかな?というわけで使い方を確認してみました。

これが利用できれば、アクセストークンの取得方法を覚えていなくても、アクションの設定だけで Microsoft Graph API などを利用できるわけです。

クライアント シークレットを利用する場合の設定

今回動作を確認できたのは、クライアント シークレットを利用する方法です。

まず、HTTP アクションの「認証」で「Active Directory OAuth」を選択すると、次のような設定項目が表示されます。

必須になっている項目は「テナント」「対象ユーザー」「クライアント ID」「資格情報の種類」「シークレット」です。今回は「資格情報の種類」は「シークレット」を選択しますので、必要な項目は残りの 4 項目になります。

Azure Active Directory へアプリを登録

これらに設定する値を取得するためには、Azure Active Directory にアプリを登録する必要があります。Azure の管理ポータルを開き、Azure Active Direcotry の自身が管理しているディレクトリを開きます。

ディレクトリの管理メニューから [アプリの登録]-[新しいアプリケーションの登録] とクリックしていきます。作成フォームには、次のように指定します。サインオン URL は http:// や https:// で始まるものであればなんでも良いです。今回は「https://login.windows.net」としておきました。

アプリの登録が終わったら、[設定]-[必要なアクセス許可]-[追加] とクリックしていき、「API を選択します」では「Microsoft Graph」を選択し、「アクセス許可を選択します」では、利用したい Microsoft Graph API に合わせて必要なアクセス許可を選択します。

今回の方法で利用できるアクセス許可は「アプリケーションのアクセス許可」にあるものだけなので、API リファレンスを見ながら設定します。たとえば、指定したユーザーのプロファイルを取得する「Get a user」を呼び出す場合、Permissions で示されているものは次の通りですね。

Permission アプリケーションのアクセス許可
User.Read.All Read all users’ full profiles
User.ReadWrite.All Read and write all users’ full profiles
Directory.Read.All Read directory data
Directory.ReadWrite.All Read and write directory data

Get a user
https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/api/user_get

Microsoft Graph permissions reference
https://developer.microsoft.com/en-us/graph/docs/concepts/permissions_reference

これを次のように設定していきます。

ここまで終わったら [アクセス許可の付与] をクリックしておきましょう。

Microsoft Flow から呼び出すために必要な項目

さて、ここまで設定が終わったら、いよいよ最初に確認した Microsoft Flow の HTTP アクションに設定すべき情報を確認してきます。

まず、「テナント」には「ディレクトリ ID」が必要です。ディレクトリの [プロパティ] にある「ディレクトリ ID」をコピペしておきます。

次に必要なのは「クライアント ID」です。こちらは、先ほど登録したアプリケーションの「アプリケーション ID」をコピペしておきます。

そして「シークレット」には、こちらも先ほど登録したアプリケーションの [設定]-[キー] をクリックし、「パスワード」を作成すると表示される値をコピペしておきます。

さて、残りの「対象ユーザー」ですが、こちらは Microsoft Graph API を呼び出す場合は「https://graph.microsoft.com」と設定しておくと良いようです。

HTTP アクション設定項目 Azure Active Directory で対応する項目
テナント ディレクトリ ID
クライアント ID アプリケーション ID
対象ユーザー https://graph.microsoft.com(Microsoft Graph API の場合)
資格情報の種類 シークレット
シークレット アプリ キー(パスワード)

これらを設定すると、次のようになります。マスクばかりなのは、これらの情報が漏れてしまうと第三者に悪用される可能性があるためです。特に「シークレット」は文字通りシークレットにし、取扱いに気を付けてください。

あとは、Microsoft Graph API のリファレンスに従って「方法」「URI」「ヘッダー」「本文」を設定しましょう。今回の方法の特徴として、通常はヘッダーに指定しなければならない Authorization の Bearer トークンが不要になりますので、その他の設定のみ必要となります。

実行結果

上手く動けば、次のように API からのレスポンスが返ってきます。

うむ、ちゃんと動いているようです。

さいごに

これで Microsoft Flow の HTTP アクション一発で Microsoft Graph API を利用できるようになったわけですが、利用したいなと思う API はコネクタとして実装されているものも多いため、用途はそんなに多くないかもしれません…。もっと Microsoft Graph API の研究が必要ですねー。