登錄方式CredentialProvider的優點

總結一下新的登錄方式CredentialProvider的優點:
 
1、實現所謂的“會話隔離”
使用Credential Provider 方式實現“操作系統服務以及其他關鍵進程”和“用戶進程”
在不同的 會話(session)中運行,這樣有利於提高安全性。
 
2、基於COM的設計,使得登錄界面可以添加微軟給定的控件,來實現開發者想要實現
的功能。即用一致的外觀和方法來完成不同的用戶驗證方案。更加美觀(我個人認爲:)。

 

Vista之前,Windows的開機密碼認證模塊一般是由Gina DLL完成的。
Gina原理
WinLogon會和GINA DLL進行交互,缺省是MSGINA.DLL(在System32目錄下)。微軟同時也爲我們提供了接口,
我們可以自己編寫GINA DLL來代替MSGINA.DLL。在默認情況下,GINA顯示登陸對話框,用戶輸入用戶名及
密碼 。所以要獲得用戶名和密碼 ,則可以寫一個新的GINA DLL,其中提供接口調用msgina.dll的函數。


在先前版本的 Windows 中,各種系統進程之間的關係並不直觀。例如,在系統引導時,交互登錄管理器
 (%SystemRoot%\System32\Winlogon.exe) 會啓動“本地安全機構子系統服務”(Lsass.exe) 和“服務控
制管理器”(Services.exe)。此外,Windows 會使用一個名爲 Session 的命名空間容器來隔離在不同登
錄會話中運行的進程。


但在推出 Windows Vista 之前,登錄到控制檯的用戶共享的是 Session 0(即,由系統進程使用的會話),
這就造成了潛在的安全問題。例如,如果某個運行於 Session 0 中的編寫拙劣的 Windows 服務在交互式
控制檯上顯示一個用戶界面,從而允許惡意軟件通過粉碎攻擊之類的方法來攻擊窗口並有可能獲得管理特
權,就會引發此類安全問題。


    爲解決這些問題,若干個系統進程都針對 Windows Vista 進行了重新設計。會話管理器 (Smss.exe) 
是在使用先前版本的 Windows 時在引導期間創建的第一個用戶模式進程,但在 Windows Vista 上,會話
管理器會啓動自己的另一個實例來配置 Session 0,該會話將獨自供系統進程專用。用於Session 0 的會
話管理器進程將啓動“Windows 啓動應用程序”(Wininit.exe)(一個用於 Session 0 的 Windows 子系統
進程 (Csrss.exe)),然後退出。“Windows 啓動應用程序”會通過啓動“服務控制管理器”、“本地安
全機構子系統”和一個用來管理計算機的終端服務器連接的新進程(即“本地會話管理器”(Lsm.exe))持
續運行。


    當用戶登錄到系統上時,初始的會話管理器會創建其自己的一個新實例來配置新會話。新的 Smss.exe 
進程會爲這個新會話啓動 Windows 子系統進程和 Winlogon 進程。讓主會話管理器使用自己的副本初始化
新會話並不會爲客戶端系統帶來任何有利條件,但在充當終端服務器的 Windows Server“Longhorn”系統上,
可以並行運行多個副本以提高多個用戶的登錄速度。


    在這個新的體系結構下,各系統進程(包括 Windows 服務)在 Session 0 中進行了隔離。如果運行於
 Session 0 中的某個 Windows 服務顯示一個用戶界面,則“交互服務檢測”服務 (%SystemRoot%\System32\UI0Detect.exe) 
會通過在用戶的安全上下文中啓動自己的實例並顯示消息來通知所有登錄的管理員。如果用戶選擇“顯示消
息”按鈕,該服務會將桌面切換到 Windows 服務桌面,用戶可在這裏與服務的用戶界面交互,然後再切換
回自己的桌面。


憑據提供程序Credential Provider


即使是登錄體系結構也在 Windows Vista 上發生了變化。在先前版本的 Windows 上,Winlogon 進程會加
載在註冊表中指定的“圖形識別與認證”(GINA) DLL 來顯示要求用戶提供其憑據的登錄 UI。遺憾的是,
GINA 模式受到了許多限制,包括只能配置一個 GINA、第三方很難編寫完整的 GINA,以及具有非標準用戶
界面的自定義 GINA 會改變 Windows 用戶體驗。


而 Windows Vista 使用了新的“憑據提供程序”體系結構來代替 GINA。Winlogon 會啓動一個單獨的進程,
即“登錄用戶界面主機”(Logonui.exe),該進程將加載在 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Currentversion\Authentication\Credential Providers 中配置的憑據提供程序。Logonui 可以並行託管多個憑據提供程序;實際上,Windows Vista 隨帶了交互
式 (Authui.dll) 提供程序和智能卡式 (Smart-cardcredentialprovider.dll) 提供程序。爲確保統一的用
戶體驗,LogonUI 會管理對最終用戶顯示的用戶界面,但它還會允許憑據提供程序指定文本、圖標和編輯控件之類的自定義元素。


延遲式自動啓動服務
如果您曾經在 Windows 系統啓動後立即登錄到系統上,您或許在桌面被完全配置並且您可以與外殼和所啓
動的任何應用程序進行交互之前經歷了一些延遲。在您登錄時,“服務控制管理器”會啓動多個被配置爲自
動啓動服務並因此在引導時激活的 Windows 服務。許多服務都會執行與登錄活動爭用資源的CPU 密集型初
始化和磁盤密集型初始化。爲解決此問題,Windows Vista 採用了一個被稱爲延遲式自動啓動的新服務啓動
類型,如果服務不必在 Windows 引導後立即激活,便可使用該類型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章