適用於: 內部租赁者
外部租赁者(深入瞭解)
在 Microsoft Entra 外部 ID 自助式註冊使用者流程內整合 REST API 時,您必須使用驗證來保護您的 REST API 端點。 REST API 驗證會確保只有具有適當認證的服務 (例如 Microsoft Entra ID),才能呼叫您的端點。 本文探討如何保護 REST API。
必要條件
完成逐步解說指南中的步驟:將 API 連接器新增至註冊使用者流程。
您可以使用 HTTP 基本驗證或 HTTPS 用戶端憑證驗證來保護您的 API 端點。 無論哪一種情況,您都要提供在呼叫 API 端點時 Microsoft Entra ID 使用的認證。 API 端點即會檢查認證並執行授權決策。
HTTP 基本驗證
HTTP 基本身份驗證定義於 RFC 2617 中。 基本驗證的運作方式如下:Microsoft Entra ID 在 username
標頭中傳送 HTTP 要求與用戶端認證 (password
和 Authorization
)。 該認證會格式化為 base64 編碼的字串 (username:password
)。 您的 API 即會負責檢查這些值,以執行其他授權決策。
若要使用 HTTP 基本驗證來設定 API 連接器,請遵循下列步驟:
- 以至少用戶系統管理員身分登入 Microsoft Entra 系統管理中心。
- 流覽至 Entra ID>外部身分識別>概觀。
- 選取 [所有 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
-
存留期 Acton 類型:
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 租用戶名稱 (例如
-Subject
),適當地修改contosowebapp.contoso.onmicrosoft.com
引數。 您也可以調整-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 系統管理中心。
- 流覽至 Entra ID>外部身分識別>概觀。
- 選取 [所有 API 連接器],然後選取您要設定的 API 連接器 。
- 在 [驗證類型] 中,選取 [憑證]。
- 在 [上傳憑證] 方塊中,選取包含私密金鑰的憑證 .pfx 檔案。
- 在 [輸入密碼] 方塊中,鍵入憑證的密碼。
- 選取 [儲存]。
執行授權決策
您的 API 必須根據傳送的用戶端憑證來實作授權,才能保護 API 端點。 如需 Azure App Service 和 Azure Functions,請參閱 設定 TLS 相互驗證 ,以瞭解如何 從 API 程式代碼啟用和驗證憑證。 或者,您可以使用 Azure API 管理作為任何 API 服務前層,根據所需的值 檢查客戶端憑證屬性 。
更新憑證
建議您設定憑證到期時的提醒警示。 您必須產生新的憑證,並在使用過的憑證即將到期時重複本文中的步驟。 為了「輪替」使用新憑證,在您部署新的憑證時,API 服務可以暫時繼續接受舊的和新的憑證。
若要將新憑證上傳至現有的 API 連接器,請選取 [API 連接器] 下方的 API 連接器,然後選取 [上傳新憑證]。 Microsoft Entra ID 會自動使用最新上傳且未過期、其開始日期已經生效的憑證。
API 金鑰驗證
有些服務會在開發期間使用「API 金鑰」機制,藉由要求呼叫者將唯一金鑰納入為 HTTP 標頭或 HTTP 查詢參數,來混淆對 HTTP 端點的存取。 針對 Azure Functions,請在 code
API 連接器的 端點 URL 中包含 作為查詢參數。 例如,https://contoso.azurewebsites.net/api/endpoint
?code=0123456789
)。
您不應該單獨在生產環境中使用此機制。 因此,您一定要設定基本或憑證驗證。 如果您基於開發用途,不想要實作任何驗證方法 (不建議),您可以在 API 連接器設定中選取 [基本] 驗證,並使用 username
和 password
的暫存值,以在您實作適當授權時讓 API 將其忽略。
下一步
- 開始使用我們的 快速入門範例。