原创  LSA Authentication Model -- LSA 验证模式 收藏

Local Security Authority (LSA) 具有以下特点:

LSA验证支持定制的验证包(authentication packages)。这就允许最终用户和独立软件供应商(independent software vendors (ISVs))定制或替代验证程序来适应超过由标准微软验证包所提供的功能的需求。当由微软提供的验证包需要用户名和密码作为登录数据时,一个定制的验证包可以接收其他形式的登录数据,像是一个ATM卡信息和一个personal identification number (PIN)。一个定制的验证包也可以被用来实现一个新的安全协议(security protocol)。

 

LSA支持定制的安全包,它可以作为供分布式应用程序使用的安全支持提供者和作为需要验证服务的应用程序的验证包。The authentication functionality is accessed using the same interface as a stand-alone authentication package, while the security support provider functionality is accessed using Security Support Provider Interface (SSPI)LSA支持函数集合可用来定制安全验证包使得它们支持高级的安全特性,像是创建令牌和后续证书管理(supplemental credentials management)。

 

LSA支持使用非微软产品的接口进行不同种类的证书管理,像是网络和数据库。因为这些产品经常具有它们自己的安全证书,LSA提供验证包可以用来将非微软产品和windows进程相关联的函数。当需要时定制验证包可以提供用于请求这些证书的服务,比如当一个网络重定向器尝试与一个远程系统建立连接的时候。

 

每一个安装到系统上的登录设备类型都可以有它们自己的登录过程。设备类型典型的包括只能读卡器这类的设备;然而,对于LSA验证的目的来说,网络连接也被认为是一个设备。缺省情况下,windows OS 提供支持使用键盘来输入与用户名和密码的登录过程。开发人员可以支持其他设备,像是智能读卡器。

 

LSA Logon Sessions

一个登录会话(logon session)是一个处理会话,它起始于用户验证成功,终止于用户登出系统。

 

当一个用户成功验证后,验证包就会创建一个登录会话并且返回信息到LSA, 它会被用于为新用户创建一个令牌。该令牌包含了(在其他信息之中)一个本地的用来标识登陆会话的唯一标识符(LUID),被称作LogonId

 

当令牌创建完成后,登录会话的引用计数就会增加。当无论何时为进程,代理(impersonation),或其他使用而创建一个令牌的副本,引用计数也会增加。当令牌使用完毕或副本删除,登录会话的引用计数就会减少。当引用计数为零时,登录会话就会被删除。

 

注意:如果验证没有成功,验证包就不应该创建一个登录会话。如果验证包在作一个用户有效性的最终决定前必须要创建一个登录会话并且验证失败,验证包就必须删除该会话。

 

LSA User Logon Authentication

LSA在本地机器上处理用户登录和验证,并且如果验证包处理登录请求支持转发验证(pass-through authentication),LSA也可以让用户登录到网络上的其他机器。LSA提供者有权使用供图形方式验证和鉴定(Graphical Identification and Authentication (GINA)DLL和安全验证提供器(Security Support Providers (SSPs))所使用的验证包。使用下面两种验证类型中的哪一个,依赖于这些组件的哪个会调用LSA

Interactive Authentication

 

当一个用户被提示提供登录信息时,验证是交互式的。当用户通过GINA用户界面进行登录时,LSA执行一个交互式验证。下边的图例显示了包括在一个典型的交互式验证中的组件:

用户按下CTRL+ALT+DEL 安全提示序列(secure attention sequence (SAS))来通知系统开始登录序列。Winlogon接收SAS并且调用GINA来显示用户界面并且接收像是用户名和密码这样的登录数据。

获得这些登录数据后,GINA会调用 LsaLogonUser 函数来验证用户,必须指明使用哪个验证包来验证登陆数据。

 

Noninteractive Authentication

非交互式验证只能在交互式验证启动后使用,在非交互式验证过程中,用户不输入登录数据,而是使用之前已经建立好的证书。

 

非交互式验证在应用程序使用安全支持提供器接口(Security Support Provider Interface (SSPI))和安全包建立一个安全的网络连接时被执行。当用户连接到网络上的多台机器时,非交互式验证机制可以让用户不需要为每台机器都输入登录信息。例如,如果一个应用程序需要打开远端机器上的一个安全文件夹,并且程序用户已经通过交互式验证登录了一个域帐号,应用程序就不需要用户再次提供登录信息。而是程序可以通过使用SSPI请求一个非交互式验证,将之前已经创建的安全信息传递到安全包。安全包就会使用LSA函数检查证书。下边的图例描述了这一过程:

在上边的图例中,客户端程序初始化一个SSPI调用来请求一个鉴定过的网络连接。SSPI将客户的请求传递到安全包以供处理,安全包就会通过调用LSA验证用户并且指明验证包,提供用户已存在的证书。

验证结果通过LSA从验证包传递到安全包中,最后到达SSPISSPI通知客户程序请求的结果。

 

发表于 @ 2007年10月12日 18:06:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:使用dbghelp5.1 改善你的错误报告 | 新一篇:LSA Authentication Packages -- LSA 验证包

  • 发表评论
  • 评论内容:
  •  
Copyright © 2608
Powered by CSDN Blog