mirror of https://github.com/apache/druid.git
Add relogin logic to renew the Kerberos TGT once it expire (#5096)
* Kerberos TGT will expire after some pre-determined time, this patch add relogin calls Change-Id: I17ccb9b42aa3032de5d28c8c21e4ffbe8222b815 * exit if the first login passed Change-Id: Ifefd5e9e0dd7d07b05cc493ab1f72415de557ec2
This commit is contained in:
parent
50140ce820
commit
e115da39df
|
@ -99,10 +99,22 @@ public class DruidKerberosUtil
|
||||||
conf.set(CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION, "kerberos");
|
conf.set(CommonConfigurationKeysPublic.HADOOP_SECURITY_AUTHENTICATION, "kerberos");
|
||||||
UserGroupInformation.setConfiguration(conf);
|
UserGroupInformation.setConfiguration(conf);
|
||||||
try {
|
try {
|
||||||
|
//login for the first time.
|
||||||
if (UserGroupInformation.getCurrentUser().hasKerberosCredentials() == false
|
if (UserGroupInformation.getCurrentUser().hasKerberosCredentials() == false
|
||||||
|| !UserGroupInformation.getCurrentUser().getUserName().equals(internalClientPrincipal)) {
|
|| !UserGroupInformation.getCurrentUser().getUserName().equals(internalClientPrincipal)) {
|
||||||
log.info("trying to authenticate user [%s] with keytab [%s]", internalClientPrincipal, internalClientKeytab);
|
log.info("trying to authenticate user [%s] with keytab [%s]", internalClientPrincipal, internalClientKeytab);
|
||||||
UserGroupInformation.loginUserFromKeytab(internalClientPrincipal, internalClientKeytab);
|
UserGroupInformation.loginUserFromKeytab(internalClientPrincipal, internalClientKeytab);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//try to relogin in case the TGT expired
|
||||||
|
if (UserGroupInformation.isLoginKeytabBased()) {
|
||||||
|
log.info("Re-Login from key tab [%s] with principal [%s]", internalClientKeytab, internalClientPrincipal);
|
||||||
|
UserGroupInformation.getLoginUser().checkTGTAndReloginFromKeytab();
|
||||||
|
return;
|
||||||
|
} else if (UserGroupInformation.isLoginTicketBased()) {
|
||||||
|
log.info("Re-Login from Ticket cache");
|
||||||
|
UserGroupInformation.getLoginUser().reloginFromTicketCache();
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (IOException e) {
|
catch (IOException e) {
|
||||||
|
|
Loading…
Reference in New Issue