次の方法で共有


Azure Logic Apps からカスタム API を呼び出すときに認証を追加する

API の呼び出しのセキュリティを強化するには、Azure portal で Microsoft Entra 認証を設定できるので、コードを更新する必要はありません。 あるいは、API のコードで認証を要求し、強制できます。

次の方法で認証を追加できます。

コードを変更せず、API の呼び出しを認証する

この方法の一般的な手順を次に示します。

  1. 2 つの Microsoft Entra アプリケーション ID を作成します。ロジック アプリ リソース用に 1 つ、Web アプリ (または API アプリ) 用に 1 つです。

  2. API の呼び出しを認証するには、ロジック アプリの Microsoft Entra アプリケーション ID に関連付けられているサービス プリンシパルの資格情報 (クライアント ID とシークレット) を使います。

  3. アプリケーション ID をロジック アプリのワークフロー定義に含めます。

パート 1: ロジック アプリの Microsoft Entra アプリケーション ID を作成する

ロジック アプリ リソースはこの Microsoft Entra アプリケーション ID を使って、Microsoft Entra ID に対する認証を行います。 この ID は、ディレクトリに対して一度だけ設定します。 たとえば、ロジック アプリごとに一意の ID を作成できますが、すべてのロジック アプリに同じ ID を使用することを選択できます。 これらの ID は Azure ポータルまたは PowerShell を使用して設定できます。

  1. Azure portal で、[Microsoft Entra ID] を選びます。

  2. Web アプリまたは API アプリと同じディレクトリにいることを確認します。

    ヒント

    ディレクトリを切り替えるには、プロファイルを選択し、別のディレクトリを選択します。 あるいは、[概要]>[ディレクトリの切り替え] の順に選択します。

  3. ディレクトリ メニューの [管理] で、[アプリの登録]>[新しい登録] の順に選択します。

    [すべての登録] 一覧にはディレクトリのすべてのアプリ登録が表示されます。 自分のアプリ登録のみを表示するには、[所有しているアプリケーション] を選択します。

    Microsoft Entra インスタンス、[アプリの登録] ペイン、[新しい登録] が選ばれている Azure portal を示すスクリーンショット。

  4. ロジック アプリのアプリケーション ID のユーザー向けの名前を指定します。 [サポートされているアカウントの種類] を選択します。 [リダイレクト URI][Web] を選択し、認証応答を返す一意の URL を指定して、[登録] を選択します。

    [アプリケーションの登録] ペインを示すスクリーンショット。認証応答の送信先のアプリケーション ID 名と URL が表示されています。

    [所有しているアプリケーション] 一覧に、作成したアプリケーション ID が含められるようになりました。 この ID が表示されない場合は、ツール バーの [更新] を選択します。

    ロジック アプリのアプリケーション ID を示すスクリーンショット。

  5. アプリ登録一覧で、新しいアプリケーション ID を選択します。

  6. アプリケーション ID ナビゲーション メニューから、[概要] を選択します。

  7. [概要] ペインの [Essentials] で、アプリケーション ID をコピーして保存し、パート 3 でロジック アプリの "クライアント ID" として使用します。

    下線付きのアプリケーション (クライアント) ID を示すスクリーンショット。

  8. アプリケーション ID ナビゲーション メニューから、[証明書とシークレット] を選びます。

  9. [クライアント シークレット] タブで、[新しいクライアント シークレット] を選択します。

  10. [説明] にシークレットの名前を入力します。 [有効期限] で、シークレットの期間を選択します。 終了したら、 [追加] を選択します。

    作成するシークレットは、アプリケーション ID の "シークレット" またはロジック アプリのパスワードとして機能します。

    アプリケーション ID のシークレット作成を示すスクリーンショット。

    [証明書とシークレット] ペインの [クライアント シークレット] に、シークレットがシークレット値とシークレット ID と共に表示されるようになります。

    シークレット値とシークレット ID を示すスクリーンショット。シークレット値のコピー ボタンが選択されています。

  11. 後で使用するためにシークレット値をコピーします。 パート 3 でロジック アプリを構成するとき、この値を "シークレット" またはパスワードとして指定します。

パート 2: Web アプリまたは API アプリの Microsoft Entra アプリケーション ID を作成する

Web アプリまたは API アプリが既にデプロイされている場合、Azure ポータルで認証をオンにし、アプリケーション ID を作成できます。 デプロイされていない場合、Resource Manager テンプレートでデプロイするときに認証をオンにできます

Azure portal でデプロイされた Web アプリまたは API アプリのアプリケーション ID を作成する

  1. Azure portal で、Web アプリまたは API アプリを探して選択します。

  2. [設定] で、[認証]>[ID プロバイダーの追加] を選択します。

  3. [ID プロバイダーの追加] ペインが開いたら、[基本] タブの [ID プロバイダー] の一覧から [Microsoft] を選んで Microsoft Entra ID を使用し、[追加] を選びます。

  4. その後、次のようにして Web アプリまたは API アプリのアプリケーション ID を作成します。

    1. [アプリの登録の種類] で、[新しいアプリの登録を作成する] を選択します。

    2. [名前] には、アプリケーション ID の名前を指定します。

    3. [サポートされているアカウントの種類] で、シナリオに適したアカウントの種類を選択します。

    4. [アクセスの制限] で、[認証が必要] を選びます。

    5. [認証されていない要求] で、シナリオに基づいてオプションを選択します。

    6. 終了したら、 [追加] を選択します。

    Web アプリまたは API アプリ用に作成したアプリケーション ID が、[ID プロバイダー] セクションに表示されるようになりました。

    Web アプリまたは API アプリの新しく作成されたアプリケーション ID を示すスクリーンショット。

    ヒント

    アプリケーション ID が表示されない場合は、ツールバーの [更新] を選択します。

次に、Web アプリまたは API アプリ用に作成したアプリケーション ID のアプリケーション (クライアント) ID とテナント ID を見つける必要があります。 ID はパート 3 で使用します。 そのため、Azure portal で次の手順に進みます。

Azure ポータルで、Web アプリまたは API アプリのアプリケーション ID のクライアント ID とテナント ID を見つける

  1. Web アプリのナビゲーション メニューで、[認証] を選択します。

  2. [ID プロバイダー] セクションで、前に作成したアプリケーション ID を見つけます。 アプリケーション ID の名前を選択します。

    新しく作成されたアプリケーション ID を示すスクリーンショット。[概要] ペインが開いています。

  3. アプリケーション ID の [概要] ペインが開いたら、[アプリケーション (クライアント) ID][ディレクトリ (テナント) ID] の値を見つけます。 パート 3 で使用する値をコピーして保存します。

    アプリケーション ID の [概要] ペインが開いていることを示すスクリーンショット。[アプリケーション (クライアント) ID] 値と [ディレクトリ (テナント) ID] 値に下線が付いています。

    必要であれば、Web アプリまたは API アプリのデプロイ テンプレートでもテナント ID GUID を使用できます。 この GUID は特定のテナントの GUID ("テナント ID") であり、URL (https://sts.windows.net/{GUID}) に表示されます。

Azure Resource Manager テンプレートでデプロイするときに認証を設定する

Azure Resource Manager テンプレート (ARM テンプレート) を使っている場合でも、ロジック アプリのアプリ ID とは異なる、Web アプリまたは API アプリの Microsoft Entra アプリケーション ID を作成する必要があります。 アプリケーション ID を作成し、クライアント ID とテナント ID を見つけるには、Azure portal のパート 2 の前の手順に従います。 アプリのデプロイ テンプレートとパート 3 でも、クライアント ID とテナント ID の両方を使用します。

重要

Web アプリまたは API アプリの Microsoft Entra アプリケーション ID を作成するときは、PowerShell ではなく、Azure ポータルを使う必要があります。 PowerShell コマンドレットでは、ユーザーが Web サイトにサインインするために必要なアクセス許可が設定されません。

クライアント ID とテナント ID を取得したら、ID を Web アプリまたは API アプリのサブ リソースとしてデプロイ テンプレートに追加します。

"resources": [
   {
      "apiVersion": "2015-08-01",
      "name": "web",
      "type": "config",
      "dependsOn": ["[concat('Microsoft.Web/sites/','parameters('webAppName'))]"],
      "properties": {
         "siteAuthEnabled": true,
         "siteAuthSettings": {
            "clientId": "<client-ID>",
            "issuer": "https://sts.windows.net/<tenant-ID>/"
         }
      }
   }
]

Microsoft Entra 認証と共に、空の Web アプリやロジック アプリを自動的にデプロイするには、こちらで完全なテンプレートを確認するか、次の [Azure にデプロイ] ボタンを選びます。

Azure に配置する

パート 3: ロジック アプリの承認セクションを入力する

先ほどのテンプレートではこの認可セクションが既に設定されていますが、ロジック アプリ定義を直接作成する場合、認可セクション全体を含める必要があります。

  1. ロジック アプリ定義をコード ビューで開きます。

  2. HTTP アクション定義に移動し、[認可] セクションを見つけて、次のプロパティを含めます。

{
   "tenant": "<tenant-ID>",
   "audience": "<client-ID-from-Part-2-web-app-or-API app>",
   "clientId": "<client-ID-from-Part-1-logic-app>",
   "secret": "<secret-from-Part-1-logic-app>",
   "type": "ActiveDirectoryOAuth"
}
プロパティ Required Description
tenant はい Microsoft Entra テナントの GUID
audience はい アクセスするターゲット リソースの GUID。Web アプリまたは API アプリのアプリケーション ID からのクライアント ID です
clientId はい アクセスを要求するクライアントの GUID。ロジック アプリのアプリケーション ID からのクライアント ID です
secret はい アクセス トークンを要求しているクライアントのアプリケーション ID からのシークレットまたはパスワード
type はい 認証の種類。 ActiveDirectoryOAuth 認証の場合、値 ActiveDirectoryOAuthを使用します。

次に例を示します。

{
   "actions": {
      "HTTP": {
         "inputs": {
            "method": "POST",
            "uri": "https://your-api-azurewebsites.net/api/your-method",
            "authentication": {
               "tenant": "tenant-ID",
               "audience": "client-ID-from-azure-ad-app-for-web-app-or-api-app",
               "clientId": "client-ID-from-azure-ad-app-for-logic-app",
               "secret": "key-from-azure-ad-app-for-logic-app",
               "type": "ActiveDirectoryOAuth"
            }
         }
      }
   }
}

コードを利用して API 呼び出しを保護する

証明書の認証

ロジック アプリ ワークフローから Web アプリまたは API アプリに入ってくる要求を検証するために、クライアント証明書を利用できます。 コードの設定方法については、「Web アプリの TLS 相互認証を構成する方法」を参照してください。

[認可] セクションで、次のプロパティを含めます。

{
   "type": "ClientCertificate",
   "password": "<password>",
   "pfx": "<long-pfx-key>"
}
プロパティ Required Description
type はい 認証の種類。 TLS/SSL クライアント証明書の場合、値として ClientCertificate を指定する必要があります。
password いいえ クライアント証明書 (PFX ファイル) にアクセスするためのパスワード
pfx はい Base64 でエンコードされた、クライアント証明書のコンテンツ (PFX ファイル)

[基本認証]

ロジック アプリから Web アプリまたは API アプリに入ってくる要求を検証するために、ユーザー名やパスワードなど、基本認証を利用できます。 基本認証は一般的なパターンなので、この認証は Web アプリまたは API アプリの作成にどの言語が使われていても使用できます。

[認可] セクションで、次のプロパティを含めます。

{
   "type": "Basic",
   "username": "<username>",
   "password": "<password>"
}
プロパティ Required Description
type はい 使用する認証の種類。 基本認証の場合、値 Basic を使用する必要があります。
username はい 認証に使用するユーザー名
password はい 認証に使用するパスワード

コードによる Microsoft Entra 認証

既定では、Azure portal で Microsoft Entra 認証を有効にしても、きめ細かい認可は提供されません。 たとえば、この認証は、特定のユーザーやアプリではなく、特定のテナントに API を制限します。

コードを利用し、ロジック アプリへの API アクセスを制限するには、JSON Web トークン (JWT) が含まれるヘッダーを抽出します。 呼び出し元の ID を確認し、一致しない要求を拒否します。

次のステップ