在 Microsoft Entra 外部 ID 自助式註冊使用者流程中,保護使用 API 連接器的 API
適用於: 員工租用戶 外部租用戶 (深入了解)
在 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 要求與用戶端認證 (username
和 password
)。 該認證會格式化為 base64 編碼的字串 (username:password
)。 您的 API 即會負責檢查這些值,以執行其他授權決策。
若要使用 HTTP 基本驗證來設定 API 連接器,請遵循下列步驟:
- 以至少是使用者管理員的身分登入 Microsoft Entra 系統管理中心。
- 瀏覽至 [身分識別]>[外部身分識別]>[概觀]。
- 選取 [所有 API 連接器],然後選取您要設定的 API 連接器。
- 在 [驗證類型] 中,選取 [基本]。
- 提供 REST API 端點的使用者名稱和密碼。
- 選取 [儲存]。
HTTPS 用戶端憑證驗證
用戶端憑證驗證是一種交互憑證型驗證,由用戶端 Microsoft Entra ID 向伺服器提供其用戶端憑證,以證明其身分識別。 這發生在 SSL 交握過程中。 您的 API 會負責驗證憑證是否屬於有效用戶端 (例如 Microsoft Entra ID),然後執行授權決策。 用戶端憑證為 X.509 數位憑證。
重要
在生產環境中,必須由憑證授權單位簽署憑證。
建立憑證
選項 1:使用 Azure Key Vault (建議)
若要建立憑證,您可以使用 Azure Key Vault,其中包含自我簽署憑證的選項,以及整合已簽署憑證的憑證簽發者提供者選項。 建議設定包括:
- 主旨:
CN=<yourapiname>.<tenantname>.onmicrosoft.com
- 內容類型:
PKCS #12
- 存留期動作類型:
Email all contacts at a given percentage lifetime
或Email all contacts a given number of days before expiry
- 金鑰類型:
RSA
- 金鑰大小:
2048
- 可匯出的私密金鑰:
Yes
(以便能夠匯出.pfx
檔案)
然後,您即可匯出憑證。
選項 2:使用 PowerShell 準備自我簽署憑證
如果您還沒有憑證,可以使用自我簽署憑證。 自我簽署憑證是一種安全性憑證,其不是由憑證授權單位 (CA) 所簽署,因此不會為 CA 所簽署的憑證提供安全性保證。
在 Windows 上,您可以使用 PowerShell 中的 New-SelfSignedCertificate Cmdlet 來產生憑證。
執行下列 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"
在 Windows 電腦上,搜尋並選取 [管理使用者憑證]
在 [憑證 - 目前使用者] 下方,選取 [個人]>[憑證]>[yourappname.yourtenant.onmicrosoft.com]。
選取憑證,然後選取 [動作]>[所有工作]>[匯出]。
選取 [下一步]>[是,匯出私密金鑰]>[下一步]。
接受 [匯出檔案格式] 的預設值,然後選取 [下一步]。
啟用 [密碼] 選項,輸入憑證的密碼,然後選取 [下一步]。
若要指定儲存憑證的位置,請選取 [瀏覽] 並瀏覽至您選擇的目錄。
在 [另存新檔] 視窗上,為 [檔案名稱] 輸入檔案名稱,然後選取 [儲存]。
選取 [下一步]>[完成]。
若要讓 Azure AD B2C 接受 .pfx 檔案密碼,您必須使用 Windows 憑證存放區匯出公用程式中的 TripleDES-SHA1 選項來將密碼加密,而非 AES256-SHA256。
設定 API 連接器
若要使用用戶端憑證驗證來設定 API 連接器,請遵循下列步驟:
- 以至少是使用者管理員的身分登入 Microsoft Entra 系統管理中心。
- 瀏覽至 [身分識別]>[外部身分識別]>[概觀]。
- 選取 [所有 API 連接器],然後選取您要設定的 API 連接器。
- 在 [驗證類型] 中,選取 [憑證]。
- 在 [上傳憑證] 方塊中,選取包含私密金鑰的憑證 .pfx 檔案。
- 在 [輸入密碼] 方塊中,鍵入憑證的密碼。
- 選取 [儲存]。
執行授權決策
您的 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 連接器設定中選取 [基本] 驗證,並使用 username
和 password
的暫存值,以在您實作適當授權時讓 API 將其忽略。
下一步
- 開始使用快速入門範例。