通過查閱,得知UserGroupInformation這個類JAAS 框架上封裝了Hadoop的使用者資訊
有兩種方法:loginUserFromKeytab:呼叫checkTGTAndReloginFromKeytab來更新憑證,直接使用 keytab檔案以及principal呼叫實現。 getLoginUser:需要自己實現憑證,並起另一個執行緒實現週期性憑證更新,麻煩 所以使用loginUserFromKeytab來實現認證 這裡報了:Can't get Kerberos realm 跟著 UserGroupInformation.setConfiguration(configuration)方法走,一步一步看原始碼就行,這裡說兩個關鍵點吧
於是在etc資料夾下放上krb5.conf 然後報錯 java.io.IOException: Login failure for hve@TDH from keytab /Users/jeff/workspaces/Fs_Message1/target/classes/keytab: javax.security.auth.login.LoginException: Unable to obtain password from user 這個比較簡單UserGroupInformation.loginUserFromKeytab(principal, keytab); 這裡就是報錯資訊有點迷惑人,看了原始碼迅速解決