本案例在测试中很实用噢!
上代码:
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.UserGroupInformation;
import java.io.IOException;
public class KerberosProvider {
public static final String krb5Conf = "D:\\configs\\krb5.conf";
public static final String keytab = "D:\\configs\\xxx.keytab";
public static final String principal = "xxx@XXXXX.COM";
static {
System.setProperty("java.security.krb5.conf", krb5Conf);
}
public static void login(){
try {
Configuration conf = new Configuration();
conf.set("hadoop.security.authentication", "Kerberos");
UserGroupInformation.setConfiguration(conf);
UserGroupInformation.loginUserFromKeytab(principal, keytab);
String userName = UserGroupInformation.getLoginUser().getUserName();
String method = UserGroupInformation.getLoginUser().getAuthenticationMethod().toString();
System.out.printf("kerberos login username [%s] for method [%s]%n",userName,method);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}