Credential provider 架构

下表是Windows7中的交互式登陆架构的关键组件:

组件名称 描述
Winlogon 提供交互式登陆的下层基础
Logon UI 提供交互式UI(的渲染)
Credential providers(密码和智能卡) 描述凭据信息和序列化凭据
LSA 处理登陆凭据
授权包(Authentication packages) 包括NTLM和Kerberos,与认证服务器通信

流程如图所示:

Credential provider 架构_第1张图片


Windows交互登陆从用户按下Ctrl+ALT+DEL开始,这3个键的组合叫做SAS,防止其他进程或程序使用。Winlogon在Boot的时候注册此SAS,然后Logon UI 生成界面。

一般来说,用户登陆计算机使用的要么是本地账户,要么是域账户的用户名和密码,这些凭据用来验证用户身份。如果是智能卡,那么用户的凭证则存储在卡上,读卡器让计算机与卡的安全芯片交互。在登陆的过程中,用户输入一个PIN码,而不是用户名和密码。

Credential providers是一个用于收集凭据的COM对象,运行在本地系统上下文中。总的来说,Logon UI提供界面,Winlogon提供登陆下层基础,Credential providers与这二者交互,以帮助收集和处理凭据。

用户按下SAS的3个键后,Winlogon命令logon UI 显示各个credential provider的选项,Logon UI查询各个 credential provider。 credential provider 可以选择某个某个登陆界面作为默认。枚举完所有的登陆界面后,logon UI显示给用户, 用户选择一个进行登陆,然后logon UI提交凭据信息。

credential provider 可以扩展,允许用户通过生物(指纹,声音,视网膜),密码,PIN,智能卡或任何自定义的认证包。企业和IT部门可能为域用户开发和部署自定义的认证机制。

credential provider 不是强制的机制,它是用于采集和序列化凭据的,而LSA和authentication packages才强制安全。

credential provider 可能设计成用于SSO,认证用户到一个安全的网络访问点。

credential provider 也可以设计成用于某个特定程序的凭据采集,或者用于网络资源或加域的认证,以及提供UAC的管理员权限提示。

credential provider必须要被写进注册表,负责:

描述认证所需要的凭据信息。

处理与外部认证方式的通信和逻辑。

打包凭据,用于交互式登陆和网络登陆。

credential provider API 不渲染UI,不描述什么需要渲染。只在安全模式可以用密码credential provider,智能卡只在带有网络的安全模式中可用。


你可能感兴趣的:(Windows,内核原理)