欢迎来到天天文库
浏览记录
ID:8817088
大小:78.09 KB
页数:18页
时间:2018-04-08
《使用windowsvista的凭据提供程序创造自定义的登录体验》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、桌面安全使用WindowsVista的凭据提供程序创造自定义的登录体验DanGriffin本文讨论:·新的凭据提供程序体系结构·为什么弃用了基于GINA的身份验证·多因素(Multi-factor)身份验证·开发和调试凭据提供程序本文使用了以下技术:WindowsVista、C++ 目录新旧两种体系结构的比较混合凭据提供程序要求设计混合凭据提供程序混合方式的实现改进的可能性测试和调试智能卡和初始化WindowsVista在平台集成方面为开发人员提供了许多新的机会。新的凭据提供程序模型是变动最大的方面之一,由于它的出现,实现操作系
2、统支持的新用户身份验证方案变得容易了许多。它已取代了GINA(图形标识与身份验证)模型,而直言不讳地说,后者一向因为开发人员难以理解和实现以及昂贵的Microsoft支持费用而广为诟病。那么Windows®登录插件接口的一个变化竟会如此令人兴奋,其原因何在?用户打开计算机时首先看到的是登录屏幕。由于登录体验是由凭据提供程序来控制和管理的,这使得自定义登录体验以及集成最符合组织需要的身份验证方法变得容易了许多。简而言之,凭据提供程序为开发和实现更好、更可靠的安全性提供了一种更容易的方式。新旧两种体系结构的比较我不想过细地阐述基于G
3、INA的登录体系结构。不过,花点时间比较一下这两个体系结构,帮助您更好地理解新的体系结构以及其中的变动,这也很值当。在WindowsVista™之前的环境中,每个会话都有一个winlogon实例,它负责控制该会话的交互式登录序列。(图1显示了WindowsXP和WindowsServer®2003旧的登录体系结构。)在刚启动的系统中,控制台位置的交互式登录始终在会话0中执行。会话0承载运行系统服务以及其他关键进程,包括“本地安全机构”(LocalSecurityAuthority)进程。(换句话说,在会话0中运行的许多进程都没有
4、在图1中显示出来。)图1 GINA登录体系结构 计算机上已注册的GINA加载到winlogon进程空间中。(还可能加载一个称作“GINA链接”的配置,但测试和支持这样的复杂配置很困难。)最后,GINA调用LogonUser以及相关的身份验证API。在WindowsVista中,会话0不再用于交互式登录(请参见图2)。这有利于提高安全性,因为现在已有一个会话边界将所有的计算机进程与各个用户的进程分隔开来。此外,现在对内核全局命名空间的控制也更加严格,因为默认情况下由用户应用程序创建的对象已不在内核全局命名空间之内。图2 新的登录体
5、系结构 除会话0之外的每一个会话仍会有一个winlogon实例。图2显示,系统中已注册了几个凭据提供程序,并已通过新的LogonUI进程加载。在由哪个组件负责显示登录图形界面方面也有一个重要的改动。以前,这是由GINA来处理的,因此,显示界面的工作可能一直由第三方组件来完成。在新的体系结构中,这是由操作系统的一个内置组件LogonUI来负责完成的。那么每个提供程序的用户提示行为在新的模型中是如何实现的呢?“凭据提供程序”体系结构要求每个提供程序都要列举说明它所需要的UI元素。例如,在某个指定的方案中,提供程序可能会向LogonU
6、I表明它需要两个编辑框、两个标题、一个复选框和一个位图。然后,LogonUI为凭据提供程序显示这些控件。这对实现以前讨论的目标大有帮助,即用一致的外观和方法来广泛支持不断修改完善的用户验证方案。负责“凭据提供程序”开发的Microsoft开发团队原以为外部开发人员会更愿意基于COM来开发插件模型。然而,在WindowsVista开发周期的早期阶段,新接口最初的内部设计(类似于GINA)完全基于LoadLibrary和函数指针。之后,基于COM的重新设计吸取了第一次的教训,使得设计出来的界面更加简洁和易用。现在我们转到示例代码,来
7、帮助引导我们深入了解凭据提供程序接口。混合凭据提供程序此新插件模型的计时功能臻于完美(当然,或许早就应该有这样的功能了)。现在,开发人员可以更轻松地满足多因素身份验证方案需求,同时提供与Microsoft原有的相一致的登录体验。尽管如此,新的接口仍显得相当抽象。有关它的描述说明也同样令人费解,让人感到乏味!要想了解它,一个让人能提起兴趣的方式就是体验一下新凭据提供程序的设计、开发和测试过程。而且,这可以很好地弥补Microsoft提供的现有文档的不足-有关指针方面的内容,请参阅侧栏“其他资源”。我创建了一个示例,即“混合凭据提供
8、程序”,它会演示一些全新的功能。混合凭据提供程序允许将用户名、密码和域名存储在智能卡上。插入智能卡后,用户会自动登录。(可从《MSDN®杂志》网站下载示例代码。)我没有重新编写代码,而是将以下三个来源的代码合在一起:·Microsoft®WindowsSDK中提
此文档下载收益归作者所有