IIS服務(wù)器身份驗證的方式原理
IIS服務(wù)器具有身份驗證功能,可以有以下幾種驗證方式:
匿名訪問
這種方式不驗證訪問用戶的身份,客戶端不需要提供任何身份驗證的憑據(jù),服務(wù)端把這樣的訪問作為匿名的訪問,并把這樣的訪問用戶都映射到一個服務(wù)端的賬戶,一般為IUSER_MACHINE這個用戶,可以修改映射到的用戶:
集成windows身份驗證
這種驗證方式里面也分為兩種情況
NTLM驗證
這種驗證方式需要把用戶的用戶名和密碼傳送到服務(wù)端,服務(wù)端驗證用戶名和密碼是否和服務(wù)器的此用戶的密碼一致。用戶名用明碼傳送,但是密碼經(jīng)過處理后派生出一個8字節(jié)的key加密質(zhì)詢碼后傳送。
Kerberos驗證
這種驗證方式只把客戶端訪問IIS的驗證票發(fā)送到IIS服務(wù)器,IIS收到這個票據(jù)就能確定客戶端的身份,不需要傳送用戶的密碼。需要kerberos驗證的用戶一定是域用戶。
每一個登錄用戶在登錄被驗證后都會被域中的驗證服務(wù)器生成一個票據(jù)授權(quán)票(TGT)作為這個用戶訪問其他服務(wù)所要驗證票的憑證(這是為了實現(xiàn)一次登錄就能訪問域中所有需要驗證的資源的所謂單點登錄SSO功能),而訪問IIS服務(wù)器的驗證票是通過此用戶的票據(jù)授權(quán)票(TGT)向IIS獲取的。之后此客戶訪問此IIS都使用這個驗證票。同樣訪問其他需要驗證的服務(wù)也是憑這個TGT獲取該服務(wù)的驗證票。
下面是kerberos比較詳細(xì)的原理。
Kerberos原理介紹:
工作站端運行著一個票據(jù)授權(quán)的服務(wù),叫Kinit,專門用做工作站同認(rèn)證服務(wù)器Kerberos間的身份認(rèn)證的服務(wù)。
1. 用戶開始登錄,輸入用戶名,驗證服務(wù)器收到用戶名,在用戶數(shù)據(jù)庫中查找這個用戶,結(jié)果發(fā)現(xiàn)了這個用戶。
2. 驗證服務(wù)器生成一個驗證服務(wù)器跟這個登錄用戶之間共享的一個會話口令(Session key),這個口令只有驗證服務(wù)器跟這個登錄用戶之間使用,用來做相互驗證對方使用。同時驗證服務(wù)器給這個登錄用戶生成一個票據(jù)授權(quán)票(ticket-granting ticket),工作站以后就可以憑這個票據(jù)授權(quán)票來向驗證服務(wù)器請求其他的票據(jù),而不用再次驗證自己的身份了。驗證服務(wù)器把{ Session key + ticket-granting ticket }用登錄用戶的口令加密后發(fā)回到工作站。
3. 工作站用自己的口令解密驗證服務(wù)器返回的數(shù)據(jù)包,如果解密正確則驗證成功。解密后能夠獲得登錄用戶與驗證服務(wù)器共享的Session key和一張ticket-granting ticket。到此,登錄用戶沒有在網(wǎng)絡(luò)上發(fā)送口令,通過驗證服務(wù)器使用用戶口令加密驗證授權(quán)票的方法驗證了用戶,用戶跟驗證服務(wù)器之間建立了關(guān)系,在工作站上也保存來相應(yīng)的身份證明,以后要是用網(wǎng)絡(luò)中的其他服務(wù),可以通過這個身份證明向驗證服務(wù)器申請相應(yīng)服務(wù)器的服務(wù)票,來獲得相應(yīng)服務(wù)身份驗證。
4. 如果用戶第一次訪問IIS服務(wù)器,工作站的kinit查看本機上沒有訪問IIS服務(wù)器的驗證票,于是kinit會向驗證服務(wù)器發(fā)出請求,請求訪問IIS服務(wù)的驗證票。Kinit先要生成一個驗證器,驗證器是這樣的:{用戶名:工作站地址}用跟驗證服務(wù)器間的Session key加密。Kinit將驗證器、票據(jù)授權(quán)票、你的名字、你的工作站地址、IIS服務(wù)名字發(fā)送的驗證服務(wù)器,驗證服務(wù)器驗證驗證授權(quán)票真實有效,然后用跟你共享的Session key解開驗證器,獲取其中的用戶名和地址,與發(fā)送這個請求的用戶和地址比較,如果相符,說明驗證通過,這個請求合法。
5. 驗證服務(wù)器先生成這個用戶跟IIS服務(wù)器之間的Session key會話口令,之后根據(jù)用戶請求生成IIS服務(wù)器的驗證票,是這個樣子的:{會話口令:用戶名:用戶機器地址:服務(wù)名:有效期:時間戳},這個驗證票用IIS服務(wù)器的密碼(驗證服務(wù)器知道所有授權(quán)服務(wù)的密碼)進行加密形成最終的驗證票。最后,驗證服務(wù)器{會話口令+加好密的驗證票}用用戶口令加密后發(fā)送給用戶。
6. 工作站收到驗證服務(wù)器返回的數(shù)據(jù)包,用自己的口令解密,獲得跟IIS服務(wù)器的Session key和IIS服務(wù)器的驗證票。
7. 工作站kinit同樣要生成一個驗證器,驗證器是這樣的:{用戶名:工作站地址}用跟IIS服務(wù)器間的Session key加密。將驗證器和IIS驗證票一起發(fā)送到IIS服務(wù)器。
8.IIS服務(wù)器先用自己的服務(wù)器密碼解開IIS驗證票,如果解密成功,說明此驗證票真實有效,然后查看此驗證票是否在有效期內(nèi),在有效期內(nèi),用驗證票中帶的會話口令去解密驗證器,獲得其中的用戶名和工作站地址,如果跟驗證票中的用戶名和地址相符則說明發(fā)送此驗證票的用戶就是驗證票的所有者,從而驗證本次請求有效。
基本身份驗證
這種驗證方式完全是把用戶名和明文用明文(經(jīng)過base64編碼,但是base64編碼不是加密的,經(jīng)過轉(zhuǎn)換就能轉(zhuǎn)換成原始的明文)傳送到服務(wù)端驗證。服務(wù)器直接驗證服務(wù)器本地是否用用戶跟客戶端提供的用戶名和密碼相匹配的,如果有則通過驗證。
關(guān)鍵詞:IIS服務(wù)器身份驗證
閱讀本文后您有什么感想? 已有
0
人給出評價!
- 1
- 1
- 1
- 1
- 1
- 1