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