🔐

Easy Auth を設定した Azure Functions を Power Automate から呼び出す

に公開

はじめに

Azure Functions ではセキュリティを高めるために標準で API キーを渡して実行できます。より高いセキュリティが必要な場合は Azure AD による認証 (Easy Auth) を設定することがあります。Azure Functions の HTTP トリガーの関数は府フロントエンド (ブラウザーの遷移) で呼び出すことはほとんどありません。JavaScript のリクエストや Power Automate の HTTP アクションからの呼び出しといったバックエンドとして動作します。その場合、OAuth で Azure AD の認証および承認を通す必要がありますが、その手順を解説します。

実行手順

Azure Functions の設定

Easy Auth を有効にするため、呼び出し先の Azure Functions で プラットフォーム機能 - ネットワーク - 承認/認証 をクリックします。

App Service 認証 をオンにし、認証プロバイダー として Azure Active Directory を選択します。アプリの作成が要求されるので、簡易モードでアプリを作成します。

Azure AD のアプリの登録

Easy Auth を有効にするため、作成したアプリとは別に新しいアプリを作成します。新しいアプリで API のアクセス許可 で検索すると、Easy Auth を有効にしたときのアプリが表示されるので、user_impersonation をチェックし、アクセス許可を追加します。

リフレッシュ トークンの取得

Power Automate を使って、作成した新しいアプリに対してのアクセス トークンおよびリフレッシュ トークンを取得します。手順については以下の記事にまとまっているので参考にしてください。

https://qiita.com/r-wakatsuki/items/3c84fff0471c658a99c1

ここでは、ブラウザー経由で認証コードを取得し、アクセス トークンを OneDrive for Business (先の記事では OneDrive になっていますが OneDrive for Business に読み替えてください) に保存するフローを実行したとします。

Azure Functions の呼び出し

OneDrive for Business に保存されたリフレッシュ トークンからアクセス トークンを取得します。アクセス トークンを Authorization ヘッダーに追加して Azure Functions の HTTP トリガーを呼び出します。

実行すると、HTTP トリガーが正常に呼び出され結果が返ってくることが確認できます。

おわりに

今回の手順は App Service で自作の Web API を Azure AD で保護する手順と同じです。アプリが 2 種類出てくるため混乱しがちですが、アクセス許可を定義する アプリと アクセス許可を付与する アプリがあることを理解するとよいでしょう。

Discussion