共用方式為


新增 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 一起出現。

    截圖顯示秘密值和秘密 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 應用程式所建立的應用程式(用戶端)識別碼和租用戶識別碼。 您可以在第 3 部分中使用這些識別碼。 因此,繼續執行 Azure 入口網站的下列步驟。

在 Azure 入口網站中尋找您的 Web 應用程式或 API 應用程式的應用程式識別之用戶端識別碼和租用戶識別碼

  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) 的標頭。 檢查呼叫者的身分識別,並拒絕不相符的要求。

下一步