共用方式為


Windows 中的認證提供者

認證提供者是用戶驗證的主要機制。 他們目前是使用者唯一用來證明其身分識別的方法,這是登入和其他系統驗證案例所需的身分識別。 自 Windows 10 和引進 Microsoft Passport 以來,認證提供者比以往更加重要。 它們會用於對應用程式、網站等進行驗證。

Microsoft提供各種認證提供者作為 Windows 的一部分,例如密碼、PIN、智慧卡和 Windows Hello(指紋、臉部和鳶尾花辨識)。 本文稱為「系統認證提供者」。 OEM、企業和其他實體可以撰寫自己的認證提供者,並輕鬆地將它們整合至 Windows。 本文稱為「第三方認證提供者」。 請注意,Windows 支援 V1 和 V2 認證提供者。 對於第三方認證提供者的建立者和管理員而言,請務必瞭解這些建議。

系統認證提供者

強烈建議除了任何第三方認證提供者之外,裝置上每位使用者一律至少有一個系統認證提供者可供使用。 此外,在第三方認證提供者的設定期間,應提示裝置上的每個使用者至少設定一個系統認證提供者(如果沒有其他可用的復原選項,請參閱下面的案例 A)。

案例 A

本機帳戶用戶已設定第三方認證提供者,並定期使用它來登入裝置。 有一天,用戶會將一些更新安裝到中斷第三方認證提供者的裝置,而使用者在重新啟動計算機之前並不知道這項變更。

在下一次重新啟動時,用戶位於登入畫面上,且無法使用預期的第三方認證提供者。 如果使用者已設定系統認證提供者,使用者就能夠使用該認證來登入計算機。 如果沒有,則使用者無法復原計算機上的帳戶。

案例 B

Microsoft帳戶(MSA)、Active Directory(AD)或Microsoft Entra ID 帳戶用戶已設定第三方認證提供者,並定期使用它來登入裝置。 有一天,用戶會將一些更新安裝到中斷第三方認證提供者的裝置,而使用者在重新啟動計算機之前並不知道這項變更。

在下一次重新啟動時,用戶位於登入畫面上,且無法使用預期的第三方認證提供者。 如果使用者已設定系統認證提供者,使用者就能夠使用該認證來登入計算機。 或者,如果系統的密碼認證提供者可供使用,使用者可以從遠端要求/重設密碼,並使用該密碼登入計算機。 如果兩個選項都無法使用,則使用者無法復原電腦上的帳戶。

結論

總而言之,不建議停用裝置上的所有系統認證提供者。 雖然第三方認證提供者可能滿足特定使用者群組的額外驗證需求,但請務必確保使用者一律可以在發生重大變更時重新取得其計算機的存取權。 系統認證提供者會提供這項保證。

自訂認證提供者

Windows 認證提供者架構可讓開發人員建立自定義認證提供者。 當 Winlogon 想要收集認證時,登入 UI 會查詢每個認證提供者想要列舉的認證數目。 在所有提供者列舉磚之後,登入UI就會向用戶顯示它們。 然後,使用者會與圖格互動,以提供必要的認證。 登入 UI 會提交這些認證以進行驗證。 必要時,認證 UI 也可以使用認證提供者。 如需可支持認證提供者的案例清單,請參閱 CREDENTIAL_PROVIDER_USAGE_SCENARIO

由於此系統,建立認證提供者比過去更容易。 大部分工作都是透過 Winlogon、登入 UI 和認證 UI 的組合來處理。 若要這樣做,您必須建立自己的 ICredentialProvider 實作,並 ICredentialProviderCredential。 如果您要實作建議的 V2 認證提供者,您也必須實作 ICredentialProviderCredential2

請務必注意,認證提供者不是強制機制。 它們可用來收集和串行化認證,並提交認證以進行授權。 本機授權單位和驗證套件將處理和任何必要的安全性強制執行。

藉由結合認證提供者與支持的硬體,您可以擴充 Windows 以支援使用生物特徵辨識資訊、密碼、PIN、智慧卡憑證或任何您選擇要建立的自定義驗證套件登入。 您也可以以各種方式自定義使用者的登入體驗。 例如,當登入 UI 查詢認證提供者的認證磚時,您可以指定預設磚來為使用者提供自定義體驗。 認證提供者甚至可以設計成支援單一登錄 (SSO),將使用者驗證到安全存取點,以及電腦登入。

認證提供者會在 Windows 計算機上註冊,並負責下列事項。

  • 描述驗證所需的認證資訊。
  • 使用任何外部驗證授權單位處理通訊和邏輯。
  • 封裝互動式和網路登入的認證。

提示

請記住,單一計算機上可以安裝多個認證提供者。

包裝認證提供者

您可以包裝系統認證提供者,將功能新增至原本不支持的認證提供者。 不建議這麼做,因為它可能會導致有問題的行為。 對可能與包裝函式衝突的認證提供者進行變更,造成用戶體驗不佳,甚至防止使用者存取其裝置。 這特別適用於 Windows 的頻繁更新頻率。

如果認證提供者中不需要原生包含的功能,建議的路徑就是建立自定義認證提供者。 這是較穩定的方法,其與系統提供者沒有相依性。

另請參閱