AzureFunctionsの認証にはAttributeにAuthLevelを指定することによる認証が用意されている
Azure Functions の HTTP トリガー | Microsoft Learn
しかし、Getメソッドの場合URLにクエリパラメータとしてキーを保持しており認証として不安なので AzureADによる認証を追加した
基本的にはURIに対してAAD認証を追加する形になるので、Web Appに対しても同様の実装になるはず
参照
前提
- Azure ADが構築されていること
- Azure Functionsがデプロイされていること
実装
AzureADに対象のアプリを登録
最認証を行いたいAzureADテナントとAzureFunctionsを紐づけるためにアプリを登録をおこなう
- リダイレクト URIとして、Webを選択して下記URIを指定
{app-url}/.auth/login/aad/callback
{app-url}はAAD認証をかけたいFunctionsのURIでFunctionsの概要から確認できる
URI自体は複数追加できるので、同じアプリを複数動かしている場合はここに登録することで対応できる
- 暗黙的な許可及びハイブリットフローとしてIDトークンを有効にする
IDトークンを有効化
AzureFunctiosn 認証プロパイダーの追加
FunctionsでAzure ADを有効にするためにプロバイダーを追加
- プロバイダーに
Microsoft
- クライアントID にAzureのアプリの登録で作成したクライアントIDを登録
- 発行者のURLに
<authentication-endpoint>/<tenant-id>/v2.0
を指定- authentication-endpointはAzureAD認証エンドポイントを指定
(基本的にはhttps://login.microsoftonline.com
で良いはず)
- authentication-endpointはAzureAD認証エンドポイントを指定
FunctionsとAzureADが同一ディレクトリないにある場合はこのディレクトリ内の既存アプリの登録を選択
で対応できるよう
プロバイダーの追加はauthsettingsV2よりbicepからも行える
learn.microsoft.com 上記設定が反映されるとAAD認証が追加される