Windows 中的凭据提供程序

凭据提供程序是用户身份验证的主要机制。 他们目前是唯一用于证明其身份(登录和其他系统身份验证方案所必需的)的方法。 自 Windows 10 和引入 Microsoft Passport 以来,凭据提供程序比以往任何时候都更重要。 它们用于对应用、网站等进行身份验证。

Microsoft提供各种凭据提供程序作为 Windows 的一部分,例如密码、PIN、智能卡和 Windows Hello(指纹、人脸和鸢尾花识别)。 本文中称为“系统凭据提供程序”。 OEM、Enterprise 和其他实体可以编写自己的凭据提供程序并将其轻松集成到 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 的频繁更新节奏尤其如此。

如果需要本机不包含的凭据提供程序中的功能,建议的路径是创建自定义凭据提供程序。 这是一种更稳定的方法,它不依赖于系统提供程序。

另请参阅