Windows登錄過程淺析
做MOSS項目的過程中,感覺MOSS的根基是AD,這几天也在網上看了一些文章,關于AD,ADAM有一些了解,但并不理解其原理。
今天在看AD的原理的時候,順便稍微研究了一下Windows登錄的過程,現總結如下:
1. Windows啟動的時候用LSA(Local Security Authority)將SSP(Security Support Provider)調入內存,以例根據不同的設定使用不同的SSP進行身份驗証。Windows2000以上缺少的是Kerberos, 也附帶了其它的SSP,Negotiate (SPNEGO), Kerberos, NTLM, Schannel, and Digest。因此你可以寫一個自己的SSP,讓Windows的LSA調用,但你的SSP必須符合SSPI協議。看下圖:
2. 如果用戶登錄的是Domain, 必须先通过DNS定位KDC,然后使用Kerberos验证协议。这2步是必须的。DNS使用的是TCP和UDP的53端口,Kerberos使用的是TCP和UDP的88端口。可以看到,登录使用的协议是Kerberos V5,端口是TCP和UDP的53和88。
3. 如果用戶登錄的是本機,則用的SSP是NTLM
以下登錄過程請參見:http://technet.microsoft.com/en-us/library/cc772815.aspx
4. 登錄成功后,并沒有任何權限,對于本機也是一樣,這時系統會向TGS發送請求。將本身的Tikect及Autheticator和所要方問的Server名稱附帶上去。
5. TGS得到請求后驗証請求者身份(用Ticket),如果合法,則返回一個TGT給客戶端
6. 客戶收到后,將些TGT及一個新的Authenticator發送給真正的服務器和服務獲得服務。
當然在這之前, Windows要從網絡上獲得IP,怎樣獲得呢?是發送DHCP Discovery廣播,里面附帶有本機的MAC,DHCP得到后返回一個IP給客戶端,客戶端再發送廣播詢問網絡上是否有相同IP,如果有,則放棄,再請求新的IP。如果在子網內沒有DHCP,一般是設計DHCP Proxy來作為Router獲取。DHCP返回的信息不僅僅是IP,還是Router, Wins, Subnet, DNS等信息給客戶端。