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