有两种方法: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);
这里就是报错信息有点迷惑人,看了源码迅速解决