hadoop Kerberos過程

破棉襖發表於2014-08-26

Kerberos協議分為兩個部分:

1 . Client向KDC傳送自己的身份資訊,KDC從Ticket Granting Service得到TGT(ticket-granting ticket), 並用協議開始前Client與KDC之間的金鑰將TGT加密回覆給Client。

此時只有真正的Client才能利用它與KDC之間的金鑰將加密後的TGT解密,從而獲得TGT。

(此過程避免了Client直接向KDC傳送密碼,以求透過驗證的不安全方式)

2. Client利用之前獲得的TGT向KDC請求其他Service的Ticket,從而透過其他Service的身份鑑別。

 Kerberos協議的重點在於第二部分,簡介如下:

        

2.1     Client將之前獲得TGT和要請求的服務資訊(服務名等)傳送給KDC,KDC中的Ticket Granting Service將為Client和Service之間生成一個Session Key用於Service對Client的身份鑑別。然後KDC將這個Session Key和使用者名稱,使用者地址(IP),服務名,有效期, 時間戳一起包裝成一個Ticket(這些資訊最終用於Service對Client的身份鑑別)傳送給Service, 不過Kerberos協議並沒有直接將Ticket傳送給Service,而是透過Client轉發給Service

2.2    此時KDC將剛才的Ticket轉發給Client。由於這個Ticket是要給Service的,不能讓Client看到,所以KDC用協議開始前KDC與Service之間的金鑰將Ticket加密後再傳送給Client。同時為了讓Client和Service之間共享那個秘密(KDC在第一步為它們建立的Session Key), KDC用Client與它之間的金鑰將Session Key加密隨加密的Ticket一起返回給Client。

2.3    為了完成Ticket的傳遞,Client將剛才收到的Ticket轉發到Service. 由於Client不知道KDC與Service之間的金鑰,所以它無法算改Ticket中的資訊。同時Client將收到的Session Key解密出來,然後將自己的使用者名稱,使用者地址(IP)打包成Authenticator用Session Key加密也傳送給Service。

2.4    Service 收到Ticket後利用它與KDC之間的金鑰將Ticket中的資訊解密出來,從而獲得Session Key和使用者名稱,使用者地址(IP),服務名,有效期。然後再用Session Key將Authenticator解密從而獲得使用者名稱,使用者地址(IP)將其與之前Ticket中解密出來的使用者名稱,使用者地址(IP)做比較從而驗證Client的身份。

2.5    如果Service有返回結果,將其返回給Client。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29754888/viewspace-1257776/,如需轉載,請註明出處,否則將追究法律責任。

相關文章