次の方法で共有


Azure Logic Apps からカスタム API を呼び出すための Microsoft Entra 認証を追加する

適用対象: Azure Logic Apps (従量課金)

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

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

  • コードを変更しない: Azure ポータルで Microsoft Entra ID を使って API を保護するので、コードの更新や、API の再デプロイの必要がありません。

    注意

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

  • API のコードを更新する: コードを使用して 証明書認証 または Microsoft Entra 認証を適用して API を保護します。

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

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

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

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

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

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

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

  1. Azure portal の検索ボックスで、Microsoft Entra ID を見つけて選択します。

  2. Web アプリまたは API アプリと同じテナントに存在することを確認します。

    ヒント

    テナントを切り替えるには、Azure タイトル バーからプロファイルを開 き、[ディレクトリの切り替え] を選択します。

  3. テナント リソース メニューの [ 管理] で、[ アプリの登録] を選択します。

    [ アプリの登録 ] ページには、テナント内のすべてのアプリ登録が表示されます。 自分のアプリ登録のみを表示するには、[所有しているアプリケーション] を選択します。

  4. ツール バーの [ 新規登録] を選択します。

    Microsoft Entra テナント、アプリの登録ウィンドウ、および [新規登録] で選択したコマンドを含む Azure portal を示すスクリーンショット。

  5. [ アプリケーションの登録 ] ページで、次の手順に従います。

    1. [名前] には、ロジック アプリのアプリケーション ID にわかりやすいユーザー向けの名前を指定します。

    2. [ サポートされているアカウントの種類] で、アプリケーション ID を使用したり API にアクセスしたりできるアカウントの種類を最もよく説明するオプションを選択します。

    3. リダイレクト URI の下で、プラットフォームとして Web を選択します。 このオプションの横に、認証応答を返す場所の一意の URL を指定します。

      認証応答を送信する場所のアプリケーション ID 名と URL を使用してアプリケーションを登録するウィンドウを示すスクリーンショット。

    4. 完了したら、[登録] を選択します。

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

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

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

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

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

    スクリーンショットは、アプリケーション (クライアント) ID が強調表示されていることを示しています。

  9. アプリケーション ID メニューの [ 管理] で、[ 証明書とシークレット] を選択します。

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

  11. [ クライアント シークレットの追加 ] ウィンドウの [説明] に、シークレットの名前を指定します。 [ 有効期限] で、シークレットの期間を選択します。 終了したら、 [追加] を選択します。

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

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

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

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

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

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

Web アプリまたは API アプリが既にデプロイされている場合、Azure ポータルで認証をオンにし、アプリケーション ID を作成できます。 それ以外の場合は、Azure 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. 終了したら、 [追加] を選択します。

    [ ID プロバイダー ] セクションに、Web アプリまたは API アプリの新しいアプリケーション 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 の値を見つけます。 パート 3 で使用する値をコピーして保存します。

    スクリーンショットには、Web アプリ アプリケーション ID の [概要] ページが開き、アプリケーション (クライアント) ID とディレクトリ (テナント) ID に対して選択された値が示されています。

    必要であれば、Web アプリまたは API アプリのデプロイ テンプレートでもテナント ID GUID を使用できます。 この GUID は特定のテナントの GUID ("テナント ID") であり、URL (https://sts.windows.net/<tenant-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"
}
プロパティ 必須 説明
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 相互認証を構成する方法」を参照してください。

重要

資格情報、シークレット、アクセス キー、接続文字列、証明書、拇印など、機密性の高い個人データを常にセキュリティで保護し、最高レベルのセキュリティレベルまたはサポートされているレベルのセキュリティで保護します。

このような情報は、Microsoft Entra ID と Azure Key Vault を使用して必ず安全に保存してください。 この情報をハードコーディングしたり、他のユーザーと共有したり、他のユーザーがアクセスできる場所でプレーンテキストで保存したりしないでください。 侵害された場合にシークレットをローテーションまたは取り消す計画を設定します。 詳細については、次のリソースを参照してください。

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

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

基本認証

ロジック アプリから Web アプリまたは API アプリに入ってくる要求を検証するために、ユーザー名やパスワードなど、基本認証を利用できます。 基本認証は一般的なパターンであり、Web アプリまたは API アプリの構築に使用する任意の言語でこの認証を使用できますが、常に使用可能またはサポートされている最適な認証レベルを使用します。

Warnung

Microsoft は、認証と承認に次のフローを使用 することを 推奨します。

  • OAuth 2.0 のリソース所有者パスワード資格情報 (ROPC)

    このフローでは、パスワードを使用してアプリケーションにサインインできます。 フローは多要素認証 (MFA) と互換性がなく、アプリケーションに非常に高い信頼を必要とし、他のフローに存在しないリスクを伴います。 このフローは、他のより安全なフローがサポートされていないか、使用できない場合にのみ使用してください。

    詳細については、「 Oauth 2.0 リソース所有者のパスワード資格情報」を参照してください。

  • OAuth 2.0 の暗黙的な許可フロー

    このトークンベースのフローは、サーバーが POST データの処理をより安全に制御し、 承認コード フローでよく使用される従来の Web アプリを対象としています。 このフローが ID トークンまたはアクセス トークンを処理して返す方法により、フローにはアプリケーションに非常に高い信頼が必要であり、他のフローには存在しないリスクが伴います。 このフローは、他のより安全なフローがサポートされていない場合や使用できない場合にのみ使用します。

    詳細については、 OAuth 2.0 の暗黙的な許可フローに関するセクションを参照してください。

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

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

コードによる Microsoft Entra 認証

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

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

次のステップ