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