新增 Microsoft Entra 驗證以從 Azure Logic Apps 呼叫自訂 API。

適用於:Azure Logic Apps (使用量)

若要改善對 API 發出呼叫的安全性,您可以透過 Azure 入口網站設定 Microsoft Entra 驗證,如此便不需要更新您的程式碼。 或者,您可以透過您的 API 程式碼要求並強制執行驗證。

您可以使用下列方式新增驗證:

  • 無程式碼變更:透過 Azure 入口網站使用 Microsoft Entra ID 來保護您的 API,因此您不需要更新程式碼或重新部署您的 API。

    注意

    根據預設,您在 Azure 入口網站中選取的 Microsoft Entra 驗證不提供精細的授權。 例如,這項驗證會將您的 API 鎖定為僅限特定租用戶,而非特定使用者或應用程式。

  • 更新你的 API 程式碼:透過程式碼強制執行 憑證認證 或 Microsoft Entra 認證 來保護你的 API。

驗證對 API 的呼叫,不需要變更程式碼

以下是這個方法的一般步驟:

  1. 建立兩個 Microsoft Entra 應用程式身份(應用程式註冊):一個用於你的 Logic 應用程式資源,另一個用於你的網頁應用程式(或 API 應用程式)。

  2. 若要驗證對您 API 的呼叫,請使用與您邏輯應用程式 Microsoft Entra 應用程式身分識別相關聯之服務主體的認證 (用戶端 ID 與祕密)。

  3. 將應用程式識別碼包含在邏輯應用程式工作流程定義中。

第 1 部分:為您的邏輯應用程式建立 Microsoft Entra 應用程式身分識別

您的邏輯應用程式資源使用這個 Microsoft Entra 應用程式識別來對 Microsoft Entra ID 進行驗證。 你只需要為房客設定一次這個身份。 例如,儘管您可以為每個邏輯應用程式建立唯一的身分識別,但可以選擇讓所有的 Logic Apps 使用相同的身分識別。 您可以在 Azure 入口網站或使用 PowerShell 設定這些身分識別。

  1. 在 Azure 入口網站 的搜尋框中,找到並選擇 Microsoft Entra ID。

  2. 確認你和你的網頁應用程式或 API 應用程式在同一個租戶裡。

    提示

    要切換租戶,請從 Azure 標題欄開啟你的個人檔案,選擇 「切換目錄」。

  3. 在租戶資源選單中 ,管理下選擇 應用程式註冊。

    應用程式註冊頁面會顯示你租戶中所有的應用程式註冊。 若要只檢視您的應用程式註冊,請選取 [擁有的應用程式]。

  4. 在工具列中,選擇 新註冊。

    截圖顯示 Azure 入口網站有 Microsoft Entra 租戶、應用程式註冊窗格,並選擇了新註冊指令。

  5. 在 「註冊申請 」頁面,請依照以下步驟操作:

    1. 對於 名稱,請為你的邏輯應用程式的應用程式身份提供一個親切且易用的名稱。

    2. 在 支援帳號類型中,選擇最能描述可用該應用程式身份或存取 API 帳號類型的選項。

    3. 在重新導向 URI下,選擇 Web 作為平台。 在此選項旁,提供一個獨特的網址,讓該地點回傳驗證回應。

      截圖顯示註冊應用程式的面板,包括應用程式識別名稱和發送驗證回應的網址。

    4. 完成後,請選取 [註冊]。

    擁有應用程式標籤現在顯示你已建立的應用程式身份。 如果此身分識別未出現,請在工具列上選取 重新整理。

    截圖顯示了您邏輯應用程式的識別。

  6. 在應用程式註冊清單中,選取新的應用程式識別碼。

  7. 在應用程式身分識別導覽功能表中,選取 [概觀]。

  8. 在 概覽 頁面的 Essentials 底下,複製並儲存應用程式 (客戶端)ID ,作為你邏輯應用程式在第三部分的客戶端 ID。

    截圖顯示應用程式(客戶端)ID 被高亮顯示。

  9. 在應用程式身份選單中 ,管理選項中選擇 憑證與秘密。

  10. 在 用戶端秘密 頁面,選擇 新用戶端秘密。

  11. 在 「新增客戶端秘密 」的 描述欄,為你的秘密提供名稱。 關於 到期,請選擇機密的持續時間。 完成後,選取 [新增]。

    您要建立的祕密會作為應用程式識別碼的「祕密」或邏輯應用程式的密碼。

    截圖顯示應用程式身份的機密生成。

    在 「憑證與秘密」 頁面的 「用戶端秘密」 標籤中,你的秘密現在會連同秘密值和秘密 ID 一起出現。

    螢幕擷取畫面顯示祕密值與祕密識別碼,且已選取祕密值的複製按鈕。

  12. 複製祕密值以供後續使用。 當您在第 3 部分設定邏輯應用程式時,您要指定這個值作為「祕密」或密碼。

第 2 部分:為您的 Web 應用程式或 API 應用程式建立 Microsoft Entra 應用程式身分識別

如果已部署 web 應用程式或 API 應用程式,您就可以開啟驗證,並在 Azure 入口網站中建立應用程式識別碼。 否則,您可以在您使用 Azure Resource Manager 範本進行部署時開啟驗證。

在Azure 入口網站中為已部署的 Web 應用程式或 API 應用程式建立應用程式身分識別

  1. 在 Azure 入口網站中,找出並選取您的 Web 應用程式或 API 應用程式。

  2. 在 [設定] 下,選取 [驗證]>[新增識別提供者]。

  3. 在 [新增識別提供者] 窗格開啟後,在 [基本] 索引標籤的 [識別提供者] 清單中,選取 [Microsoft] 以使用 Microsoft Entra 身分識別,然後選取 [新增]。

  4. 現在建立 Web 應用程式或 API 應用程式的應用程式識別碼,如下所示:

    1. 針對 [應用程式註冊類型],請選取 [建立新的應用程式註冊]。

    2. 針對 [名稱],請提供應用程式身分識別的名稱。

    3. 針對 [支援的帳戶類型],請選取適合您案例的帳戶類型。

    4. 針對 [限制存取],請選取 [需要驗證]。

    5. 針對 [未驗證的要求],請根據您的案例選取選項。

    6. 完成後,選取 [新增]。

    在 身份提供者 區塊中,您的網頁應用程式或 API 應用程式的新應用程式識別碼現在會出現:

    截圖顯示了新建立的網頁應用程式或 API 應用程式識別碼。

    提示

    如果應用程式身分識別未出現,請在工具列上選取 [重新整理]。

現在,您必須為剛建立的 Web 應用程式或 API 應用程式找出應用程式身分識別的應用程式 (用戶端) ID 與租用戶 ID。 您可以在第 3 部分中使用這些識別碼。 因此,繼續執行 Azure 入口網站的下列步驟。

在 Azure 入口網站中,為您的 Web 應用程式或 API 應用程式找出應用程式身分識別的用戶端 ID 與租用戶 ID

  1. 在你的網頁應用程式選單中 ,管理選項中,選擇 認證。

  2. 在 身份提供者 區塊中,找到你先前建立的應用程式身份。 選擇應用程式身份名稱。

    截圖顯示新建立的應用程式身份驗證頁面已開啟。

  3. 在 概覽 頁面,找到 應用程式(客戶端)ID 與 目錄(租戶)ID 的數值。 複製與儲存要在第 3 部分使用的值。

    截圖顯示網路應用程式的應用程式 ID 的概覽頁面已開啟,並選擇了應用程式(用戶端)ID 與目錄(租戶)ID 的值。

    您也可以視需要在您的 Web 應用程式或 API 應用程式的部署範本中使用租用戶識別碼 GUID。 此 GUID 是您特定租用戶的 GUID (「租用戶 ID」),且應該會出現在此 URL:https://sts.windows.net/<tenant-GUID>

在您使用 Azure Resource Manager 範本進行部署時設定驗證

若您使用 Azure Resource Manager 範本 (ARM 範本),您仍須為 Web 應用程式或 API 應用程式建立 Microsoft Entra 應用程式身分識別,其與邏輯應用程式的應用程式身分識別不同。 若要建立應用程式身分識別,然後尋找用戶端識別碼與租用戶識別碼,請遵循第 2 部分中有關Azure 入口網站的之前步驟。 您將在應用程式的部署範本和第 3 部分中使用用戶端識別碼和租用戶識別碼。

重要

當您建立 Web 應用程式或 API 應用程式的 Microsoft Entra 應用程式身分識別時,必須使用 Azure 入口網站,而不是 PowerShell。 PowerShell commandlet 不會設定使用者登入網站的必要權限。

取得用戶端識別碼和租用戶識別碼後,請在部署範本中納入這些識別碼,作為 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 Yes Microsoft Entra 租戶的 GUID。
audience Yes 你想存取的目標資源的 GUID,也就是你網頁應用程式或 API 應用程式的客戶端 ID。
clientId Yes 要求存取權的用戶端 GUID,也就是您邏輯應用程式應用程式身分識別中的用戶端 ID。
secret Yes 要求存取權杖之用戶端的應用程式身分識別中的祕密或密碼。
type Yes 驗證類型。 若為 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 應用程式中的要求,您可以使用用戶端憑證。 如需設定程式碼,請了解如何設定 TLS 相互驗證。

重要

一律保護機密和個人資料,例如認證、秘密、存取密鑰、連接字串、憑證、指紋,以及具有最高可用或支援安全性層級的類似資訊。

請務必使用 Microsoft Entra ID 和 Azure 金鑰保存庫 安全地儲存這類資訊。 請勿硬式編碼此資訊、與其他用戶共用,或以純文本形式儲存其他人可存取的任何位置。 制定一個計劃,在秘密被洩露時輪換或撤銷秘密。 如需詳細資訊,請參閱以下資源:

在 [授權] 區段中,納入以下屬性:

{
   "type": "ClientCertificate",
   "password": "<password>",
   "pfx": "<long-pfx-key>"
}
屬性 必要 描述:
type Yes 驗證類型。 若為 TLS/SSL 用戶端憑證,值必須是 ClientCertificate。
password 否 存取用戶端憑證(PFX 檔案)的密碼。
pfx Yes 客戶端憑證(PFX 檔案)中以 base64 編碼的內容。

基本驗證

若要驗證邏輯應用程式傳入 Web 應用程式或 API 應用程式中的要求,您可以使用基本驗證,例如使用者名稱和密碼。 雖然基本認證是常見的模式,且你可以在任何用於建置網頁應用程式或 API 應用程式的語言中使用此認證,但務必使用可用或支援的最佳認證等級。

警告

Microsoft 建議「不要」使用以下流程進行驗證和授權:

  • OAuth 2.0 的資源擁有者密碼認證 (ROPC)

    此流程可讓您使用密碼登入應用程式。 流程與多重要素驗證 (MFA) 不相容,需要對應用程式進行非常高的信任,並帶來其他流程中不存在的風險。 只有在不支援或無法使用其他更安全的流程時,才使用此流程。

    如需詳細資訊,請參閱 Oauth 2.0 資源擁有者密碼認證。

  • OAuth 2.0 的隱含授權流程

    此權杖型流程適用於傳統 Web 應用程式,其中伺服器對資料處理 POST 具有更安全的控制權,而且通常與 授權碼流程搭配使用。 由於此流程處理和傳回 ID 權杖或存取權杖的方式,流程需要對應用程式有非常高的信任度,並帶來其他流程中不存在的風險。 只有在不支援或無法使用其他更安全的流程時,才使用此流程。

    如需詳細資訊,請參閱 OAuth 2.0 隱含授權流程。

在 [授權] 區段中,納入以下屬性:

{
   "type": "Basic",
   "username": "<username>",
   "password": "<password>"
}
屬性 必要 描述:
type Yes 您想要使用的驗證類型。 基本驗證的值必須是**Basic**。
username Yes 你想用來驗證的用戶名稱。
password Yes 你想用來驗證的密碼。

透過程式碼進行 Microsoft Entra 驗證

根據預設,您在 Azure 入口網站中開啟的 Microsoft Entra 驗證不提供精細的授權。 例如,這項驗證會將您的 API 鎖定為僅限特定租用戶,而非特定使用者或應用程式。

若要限制 API 透過程式碼存取您的邏輯應用程式,請擷取具有 JSON Web 權杖 (JWT) 的標頭。 檢查呼叫者的身分識別,並拒絕不相符的要求。

下一步