Windows 10 中的凭据提供程序

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

Microsoft 作为Windows的一部分提供各种凭据提供程序,例如密码、PIN、智能卡和Windows Hello (指纹、人脸和虹膜识别) 。 本文称为“系统凭据提供程序”。 OEM、Enterprise 和其他实体可以编写自己的凭据提供程序,并将其轻松集成到Windows。 本文称为“第三方凭据提供程序”。 请注意,Windows 10支持 V1 和 V2 凭据提供程序。 第三方凭据提供程序的创建者和经理必须了解这些建议。

系统凭据提供程序

强烈建议除了任何第三方凭据提供程序之外,设备上每个用户都至少有一个系统凭据提供程序可用。 此外,在设置第三方凭据提供程序期间,应提示设备上的每个用户设置至少一个系统凭据提供程序, (如果没有其他恢复选项,请参阅方案 A,请参阅以下) 。

方案 A

本地帐户用户已设置第三方凭据提供程序,并定期使用它登录到设备。 有一天,用户会将一些更新安装到中断第三方凭据提供程序的设备,并且用户在重启计算机之前不知道此更改。

在下一次重启时,用户位于登录屏幕上,无法使用预期的第三方凭据提供程序。 如果用户设置了系统凭据提供程序,则用户将能够使用该提供程序登录到计算机。 否则,用户无法在计算机上恢复帐户。

方案 B

MSA/AD/AAD 帐户用户已设置第三方凭据提供程序,并定期使用它登录到设备。 有一天,用户会将一些更新安装到中断第三方凭据提供程序的设备,并且用户在重启计算机之前不知道此更改。

在下一次重启时,用户位于登录屏幕上,无法使用预期的第三方凭据提供程序。 如果用户设置了系统凭据提供程序,则用户将能够使用该提供程序登录到计算机。 或者,如果系统的密码凭据提供程序可用,用户可以远程请求/重置密码,并使用该密码登录到计算机。 如果两个选项都不可用,则用户无法在计算机上恢复帐户。

结论

总之,我们希望阻止禁用设备上的所有系统凭据提供程序。 虽然第三方凭据提供程序可能满足特定用户组的其他身份验证要求,但请务必确保在发生重大更改时,用户始终能够重新获得对计算机的访问权限。 系统凭据提供程序提供此保证。

自定义凭据提供程序

Windows凭据提供程序框架使开发人员能够创建自定义凭据提供程序。 当 Winlogon 想要收集凭据时,登录 UI 会查询每个凭据提供程序,以获取要枚举的凭据数。 枚举其磁贴后,登录 UI 向用户显示这些磁贴。 然后,用户与磁贴进行交互,以提供所需的凭据。 登录 UI 提交这些凭据进行身份验证。 如有必要,凭据 UI 还可以使用凭据提供程序。 有关支持凭据提供程序的方案列表,请参阅 CREDENTIAL_PROVIDER_USAGE_SCENARIO

由于此系统,创建凭据提供程序比历史上更容易。 大部分工作由 Winlogon、登录 UI 和凭据 UI 的组合处理。 为此,需要创建自己的 ICredentialProviderICredentialProviderCredential 实现。 如果要实现建议的 V2 凭据提供程序,则还需要实现 ICredentialProviderCredential2

请务必注意,凭据提供程序不是强制机制。 它们仅用于收集和序列化凭据,并提交凭据以供授权。 地方当局和身份验证包将处理任何必要的安全强制实施。

将凭据提供程序与受支持的硬件相结合,可以扩展Windows,以支持使用生物识别信息、密码、PIN、智能卡证书或任何你选择创建的自定义身份验证包登录。 还可以通过多种方式自定义用户的登录体验。 例如,当登录 UI 查询凭据提供程序以获取凭据磁贴时,可以指定默认磁贴来为用户提供自定义体验。 凭据提供程序甚至可以设计为支持单一登录 (SSO) 、将用户进行身份验证到安全访问点以及计算机登录。

凭据提供程序在Windows计算机上注册,并负责以下事项。

  • 描述身份验证所需的凭据信息。
  • 使用任何外部身份验证机构处理通信和逻辑。
  • 打包用于交互式登录和网络登录的凭据。

提示

请记住,可以在单个计算机上安装多个凭据提供程序。

包装凭据提供程序

可以包装系统凭据提供程序,将功能添加到本机不支持的凭据提供程序。 不建议这样做,因为它可能导致有问题的行为。 可以对凭据提供程序进行更改,这些提供程序可能与包装器冲突,导致用户体验不佳,甚至阻止用户进入其设备。 这尤其适用于频繁更新Windows 10节奏。

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

凭据提供程序驱动Windows登录体验

ICredentialProvider

CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION

CREDENTIAL_PROVIDER_USAGE_SCENARIO