共用方式為


在 Microsoft Entra 外部 ID 自助式註冊使用者流程中,保護使用 API 連接器的 API

適用於具有白色核取記號的綠色圓圈。 員工租用戶 具有灰色 X 符號的白色圓圈。 外部租用戶 (深入了解)

在 Microsoft Entra 外部 ID 自助式註冊使用者流程內整合 REST API 時,您必須使用驗證來保護您的 REST API 端點。 REST API 驗證會確保只有具有適當認證的服務 (例如 Microsoft Entra ID),才能呼叫您的端點。 本文探討如何保護 REST API。

必要條件

完成逐步解說:將 API 連接器新增至註冊使用者流程指南中的步驟。

您可以使用 HTTP 基本驗證或 HTTPS 用戶端憑證驗證來保護您的 API 端點。 無論哪一種情況,您都要提供在呼叫 API 端點時 Microsoft Entra ID 使用的認證。 API 端點即會檢查認證並執行授權決策。

HTTP 基本驗證

提示

根據您從中開始的入口網站,本文中的步驟可能會略有不同。

RFC 2617 中有 HTTP 基本驗證的定義。 基本驗證的運作方式如下:Microsoft Entra ID 在 Authorization 標頭中傳送 HTTP 要求與用戶端認證 (usernamepassword)。 該認證會格式化為 base64 編碼的字串 (username:password)。 您的 API 即會負責檢查這些值,以執行其他授權決策。

若要使用 HTTP 基本驗證來設定 API 連接器,請遵循下列步驟:

  1. 以至少是使用者管理員的身分登入 Microsoft Entra 系統管理中心
  2. 瀏覽至 [身分識別]>[外部身分識別]>[概觀]
  3. 選取 [所有 API 連接器],然後選取您要設定的 API 連接器
  4. 在 [驗證類型] 中,選取 [基本]
  5. 提供 REST API 端點的使用者名稱密碼API 連接器的基本驗證設定螢幕擷取畫面。
  6. 選取 [儲存]。

HTTPS 用戶端憑證驗證

用戶端憑證驗證是一種交互憑證型驗證,由用戶端 Microsoft Entra ID 向伺服器提供其用戶端憑證,以證明其身分識別。 這發生在 SSL 交握過程中。 您的 API 會負責驗證憑證是否屬於有效用戶端 (例如 Microsoft Entra ID),然後執行授權決策。 用戶端憑證為 X.509 數位憑證。

重要

在生產環境中,必須由憑證授權單位簽署憑證。

建立憑證

若要建立憑證,您可以使用 Azure Key Vault,其中包含自我簽署憑證的選項,以及整合已簽署憑證的憑證簽發者提供者選項。 建議設定包括:

  • 主旨CN=<yourapiname>.<tenantname>.onmicrosoft.com
  • 內容類型PKCS #12
  • 存留期動作類型Email all contacts at a given percentage lifetimeEmail all contacts a given number of days before expiry
  • 金鑰類型RSA
  • 金鑰大小2048
  • 可匯出的私密金鑰Yes (以便能夠匯出 .pfx 檔案)

然後,您即可匯出憑證

選項 2:使用 PowerShell 準備自我簽署憑證

如果您還沒有憑證,可以使用自我簽署憑證。 自我簽署憑證是一種安全性憑證,其不是由憑證授權單位 (CA) 所簽署,因此不會為 CA 所簽署的憑證提供安全性保證。

在 Windows 上,您可以使用 PowerShell 中的 New-SelfSignedCertificate Cmdlet 來產生憑證。

  1. 執行下列 PowerShell 命令來產生自我簽署憑證。 針對您的應用程式與 Azure AD B2C 租用戶名稱 (例如 contosowebapp.contoso.onmicrosoft.com),適當地修改 -Subject 引數。 您也可以調整 -NotAfter 日期,為憑證指定不同的到期日。

    New-SelfSignedCertificate `
        -KeyExportPolicy Exportable `
        -Subject "CN=yourappname.yourtenant.onmicrosoft.com" `
        -KeyAlgorithm RSA `
        -KeyLength 2048 `
        -KeyUsage DigitalSignature `
        -NotAfter (Get-Date).AddMonths(12) `
        -CertStoreLocation "Cert:\CurrentUser\My"
    
  2. 在 Windows 電腦上,搜尋並選取 [管理使用者憑證]

  3. 在 [憑證 - 目前使用者] 下方,選取 [個人]>[憑證]>[yourappname.yourtenant.onmicrosoft.com]

  4. 選取憑證,然後選取 [動作]>[所有工作]>[匯出]

  5. 選取 [下一步]>[是,匯出私密金鑰]>[下一步]

  6. 接受 [匯出檔案格式] 的預設值,然後選取 [下一步]

  7. 啟用 [密碼] 選項,輸入憑證的密碼,然後選取 [下一步]

  8. 若要指定儲存憑證的位置,請選取 [瀏覽] 並瀏覽至您選擇的目錄。

  9. 在 [另存新檔] 視窗上,為 [檔案名稱] 輸入檔案名稱,然後選取 [儲存]

  10. 選取 [下一步]>[完成]

若要讓 Azure AD B2C 接受 .pfx 檔案密碼,您必須使用 Windows 憑證存放區匯出公用程式中的 TripleDES-SHA1 選項來將密碼加密,而非 AES256-SHA256。

設定 API 連接器

若要使用用戶端憑證驗證來設定 API 連接器,請遵循下列步驟:

  1. 以至少是使用者管理員的身分登入 Microsoft Entra 系統管理中心
  2. 瀏覽至 [身分識別]>[外部身分識別]>[概觀]
  3. 選取 [所有 API 連接器],然後選取您要設定的 API 連接器
  4. 在 [驗證類型] 中,選取 [憑證]
  5. 在 [上傳憑證] 方塊中,選取包含私密金鑰的憑證 .pfx 檔案。
  6. 在 [輸入密碼] 方塊中,鍵入憑證的密碼。 API 連接器的憑證驗證設定螢幕擷取畫面。
  7. 選取 [儲存]。

執行授權決策

您的 API 必須根據傳送的用戶端憑證來實作授權,才能保護 API 端點。 若是 Azure App Service 和 Azure Functions,請參閱 設定 TLS 相互驗證,以了解如何透過 API 程式碼啟用和驗證憑證。 您也可以在任何 API 服務前方使用 Azure API 管理作為保護層,以根據所需的值來檢查用戶端憑證屬性

更新憑證

建議您設定憑證過期的提醒警示。 當使用的憑證即將過期時,您必須產生新的憑證並重複上述步驟。 為了「輪替」使用新憑證,在您部署新的憑證時,API 服務可以暫時繼續接受舊的和新的憑證。

若要將新憑證上傳至現有的 API 連接器,請選取 [API 連接器] 下方的 API 連接器,然後選取 [上傳新憑證]。 Microsoft Entra ID 會自動使用最近上傳且其開始日期已過但未過期的憑證。

已存在新憑證的螢幕擷取畫面。

API 金鑰驗證

有些服務會在開發期間使用「API 金鑰」機制,藉由要求呼叫者將唯一金鑰納入為 HTTP 標頭或 HTTP 查詢參數,來混淆對 HTTP 端點的存取。 若是 Azure Functions,您可以在 API 連接器的端點 URL 中包含 code 作為查詢參數,以完成這項操作。 例如,https://contoso.azurewebsites.net/api/endpoint?code=0123456789)。

這個機制不應該單獨在生產環境中使用。 因此,您一定要設定基本或憑證驗證。 如果您基於開發用途,不想要實作任何驗證方法 (不建議),您可以在 API 連接器設定中選取 [基本] 驗證,並使用 usernamepassword 的暫存值,以在您實作適當授權時讓 API 將其忽略。

下一步