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