kerberos認(rèn)證機制介紹
Kerberos簡介
Kerberos協(xié)議是一種計算機網(wǎng)絡(luò)授權(quán)協(xié)議,用來在非安全網(wǎng)絡(luò)中,對個人通信以安全的手段進行身份認(rèn)證。這個詞又指麻省理工學(xué)院為這個協(xié)議開發(fā)的一套計算機軟件。軟件設(shè)計上采用客戶端/服務(wù)器結(jié)構(gòu),并且能夠進行相互認(rèn)證,即客戶端和服務(wù)器端均可對對方進行身份認(rèn)證。可以用于防止竊聽、防止replay攻擊、保護數(shù)據(jù)完整性等場合,是一種應(yīng)用對稱密鑰體制進行密鑰管理的系統(tǒng)。Kerberos的擴展產(chǎn)品也使用公開密鑰加密方法進行認(rèn)證。
參考:http://zh.wikipedia.org/wiki/Kerberos
Kerberos官方網(wǎng)站:http://web.mit.edu/kerberos
認(rèn)證過程簡介
實際場景介紹
?????1.?用戶開始登錄,輸入用戶名,KDC收到用戶名,在用戶數(shù)據(jù)庫中查找這個用戶,結(jié)果發(fā)現(xiàn)了這個用戶。
?????2. KDC生成一個KDC跟這個登錄用戶之間共享的一個會話口令(Session key),這個口令只有KDC跟這個登錄用戶之間使用,用來做相互驗證對方使用。同時KDC給這個登錄用戶生成一個票據(jù)授權(quán)票(ticket- granting ticket),客戶端以后就可以憑這個票據(jù)授權(quán)票來向KDC請求其他的票據(jù),而不用再次驗證自己的身份了。KDC把{ Session key?+?ticket-granting ticket }用登錄用戶的口令加密后發(fā)回到客戶端。
?????3.?客戶端用自己的口令解密KDC返回的數(shù)據(jù)包,如果解密正確則驗證成功。解密后能夠獲得登錄用戶與驗證服務(wù)器共享的Session key和一張ticket-granting ticket。?到此,登錄用戶沒有在網(wǎng)絡(luò)上發(fā)送口令,通過KDC使用用戶口令加密驗證授權(quán)票的方法驗證了用戶,用戶跟KDC之間建立了關(guān)系,在客戶端也保存了相應(yīng)的身份證明,以后要是用網(wǎng)絡(luò)中的其他服務(wù),可以通過這個身份證明向KDC申請相應(yīng)服務(wù)器的服務(wù)票,來獲得相應(yīng)服務(wù)身份驗證。
?????4.?如果用戶第一次訪問namenode,客戶端的kinit查看本機上沒有訪問namenode服務(wù)器的授權(quán)票,于是kinit會向KDC發(fā)出請求,請求訪問namenode服務(wù)的授權(quán)票。kinit先要生成一個驗證碼,驗證碼是這樣的:{用戶名:客戶端地址}用跟KDC間的Session key加密。Kinit將驗證碼、票據(jù)授權(quán)票、你的名字、你的客戶端地址、namenode服務(wù)名字發(fā)送給KDC,KDC驗證授權(quán)票真實有效,然后用跟?你共享的Session key解開驗證碼,獲取其中的用戶名和地址,與發(fā)送這個請求的用戶和地址比較,如果相符,說明驗證通過,這個請求合法。
?????5. KDC先生成這個用戶跟namenode服務(wù)器之間的Session key會話口令,之后根據(jù)用戶請求生成訪問namenode服務(wù)器的授權(quán)票,包含{會話口令:用戶名:用戶機器地址:服務(wù)名:有效期:時間戳},這個授權(quán)票用?namenode服務(wù)器的密碼(KDC知道所有授權(quán)服務(wù)的密碼)進行加密形成最終的授權(quán)票。最后,KDC將{會話口令+加好密的授權(quán)票}用用戶口令加密后發(fā)送?給用戶。
?????6.?客戶端收到KDC返回的數(shù)據(jù)包,用自己的口令解密,獲得跟namenode服務(wù)器的Session key和namenode服務(wù)器的授權(quán)票。
?????7.?客戶端kinit同樣要生成一個驗證碼,包含:{用戶名:用戶地址}用跟namenode服務(wù)器間的Session key加密。將驗證碼和namenode授權(quán)票一起發(fā)送到namenode服務(wù)器。
?????8. namenode服務(wù)器先用自己的服務(wù)器密碼解開namenode授權(quán)票,如果解密成功,說明此授權(quán)票真實有效,然后查看此授權(quán)票是否在有效期內(nèi),在有效期內(nèi),用授權(quán)票中帶的?會話口令去解密驗證碼,獲得其中的用戶名和客戶端地址,如果跟授權(quán)票中的用戶名和地址相符則說明發(fā)送此驗證票的用戶就是授權(quán)票的所有者,從而驗證本次請求?有效。
實際應(yīng)用
對應(yīng)kerberos認(rèn)證的第一步,客戶端向kdc獲取票據(jù),對應(yīng)Kdc日志
Jul 15 11:38:35 XXX-XXX-XXX-XXX krb5kdc[3815](info): AS_REQ (1 etypes {18}) xxx.x.xxx.xxx: ISSUE: authtime 1373859515, etypes {rep=18 tkt=18 ses=18}, hdfs/hadoop@HADOOP.COM for?krbtgt/HADOOP.COM@HADOOP.COM
Namenode啟動時會使用hdfs/hadoop@HADOOP.COM到kdc來進行認(rèn)證。
對應(yīng)kerberos認(rèn)證的第二步,客戶端向kdc獲取服務(wù)端st,對應(yīng)kdc?日志
Jul 15 11:38:35 XXX-XXX-XXX-XXX krb5kdc[3815](info): TGS_REQ (6 etypes {3 1 23 16 17 18}) xxx.x.xxx.xxx: ISSUE: authtime 1373859515, etypes {rep=18 tkt=18 ses=23}, hdfs/hadoop@HADOOP.COM for?zookeeper/hadoop@HADOOP.COM
Namenode啟動后會需要連接zookeeper服務(wù)從而觸發(fā)到kdc獲取zookeeper服務(wù)st的過程。
EI企業(yè)智能 智能數(shù)據(jù) HBase 表格存儲服務(wù) CloudTable
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。