UserGroupInformation { public static UserGroupInformation getUGIFromSubject(Subject subject) throws IOException { if (subject == null) { throw new IOException("Subject must not be null"); } if (subject.getPrincipals(KerberosPrincipal.class).isEmpty()) { throw new IOException("Provided Subject must contain a KerberosPrincipal"); } KerberosPrincipal principal = subject.getPrincipals(KerberosPrincipal.class).iterator().next(); User ugiUser = new User(principal.getName(), AuthenticationMethod.KERBEROS, null); subject.getPrincipals().add(ugiUser); UserGroupInformation ugi = new UserGroupInformation(subject); ugi.setLogin(null); ugi.setAuthenticationMethod(AuthenticationMethod.KERBEROS); return ugi; } UserGroupInformation(Subject subject); @InterfaceAudience.Public @InterfaceStability.Evolving static void setConfiguration(Configuration conf); static boolean isSecurityEnabled(); boolean hasKerberosCredentials(); @InterfaceAudience.Public @InterfaceStability.Evolving synchronized static UserGroupInformation getCurrentUser(); static UserGroupInformation getBestUGI(
      String ticketCachePath, String user); @InterfaceAudience.Public @InterfaceStability.Evolving static UserGroupInformation getUGIFromTicketCache(
            String ticketCache, String user); static UserGroupInformation getUGIFromSubject(Subject subject); @InterfaceAudience.Public @InterfaceStability.Evolving synchronized static UserGroupInformation getLoginUser(); @InterfaceAudience.Public @InterfaceStability.Evolving synchronized static void loginUserFromSubject(Subject subject); @InterfaceAudience.Private @InterfaceStability.Unstable @VisibleForTesting synchronized static void setLoginUser(UserGroupInformation ugi); boolean isFromKeytab(); @InterfaceAudience.Public @InterfaceStability.Evolving synchronized static void loginUserFromKeytab(String user,
                                  String path
                                  ); @InterfaceAudience.Public @InterfaceStability.Evolving void logoutUserFromKeytab(); synchronized void checkTGTAndReloginFromKeytab(); @InterfaceAudience.Public @InterfaceStability.Evolving synchronized void reloginFromKeytab(); @InterfaceAudience.Public @InterfaceStability.Evolving synchronized void reloginFromTicketCache(); synchronized static UserGroupInformation loginUserFromKeytabAndReturnUGI(String user,
                                  String path
                                  ); @InterfaceAudience.Public @InterfaceStability.Evolving synchronized static boolean isLoginKeytabBased(); static boolean isLoginTicketBased(); @InterfaceAudience.Public @InterfaceStability.Evolving static UserGroupInformation createRemoteUser(String user); @InterfaceAudience.Public @InterfaceStability.Evolving static UserGroupInformation createRemoteUser(String user, AuthMethod authMethod); @InterfaceAudience.Public @InterfaceStability.Evolving static UserGroupInformation createProxyUser(String user,
      UserGroupInformation realUser); @InterfaceAudience.Public @InterfaceStability.Evolving UserGroupInformation getRealUser(); @InterfaceAudience.Public @InterfaceStability.Evolving static UserGroupInformation createUserForTesting(String user, 
                                                          String[] userGroups); static UserGroupInformation createProxyUserForTesting(String user,
      UserGroupInformation realUser, String[] userGroups); String getShortUserName(); String getPrimaryGroupName(); @InterfaceAudience.Public @InterfaceStability.Evolving String getUserName(); synchronized boolean addTokenIdentifier(TokenIdentifier tokenId); synchronized Set<TokenIdentifier> getTokenIdentifiers(); boolean addToken(Token<? extends TokenIdentifier> token); boolean addToken(Text alias, Token<? extends TokenIdentifier> token); Collection<Token<? extends TokenIdentifier>> getTokens(); Credentials getCredentials(); void addCredentials(Credentials credentials); synchronized String[] getGroupNames(); @Override String toString(); synchronized void setAuthenticationMethod(AuthenticationMethod authMethod); void setAuthenticationMethod(AuthMethod authMethod); synchronized AuthenticationMethod getAuthenticationMethod(); synchronized AuthenticationMethod getRealAuthenticationMethod(); static AuthenticationMethod getRealAuthenticationMethod(
      UserGroupInformation ugi); @Override boolean equals(Object o); @Override int hashCode(); @InterfaceAudience.Public @InterfaceStability.Evolving T doAs(PrivilegedAction<T> action); @InterfaceAudience.Public @InterfaceStability.Evolving T doAs(PrivilegedExceptionAction<T> action
                    ); static void main(String [] args); static final String HADOOP_TOKEN_FILE_LOCATION; }
@Test (timeout = 30000) public void testGetUGIFromSubject() throws Exception { KerberosPrincipal p = new KerberosPrincipal("guest"); Subject subject = new Subject(); subject.getPrincipals().add(p); UserGroupInformation ugi = UserGroupInformation.getUGIFromSubject(subject); assertNotNull(ugi); assertEquals("guest@DEFAULT.REALM", ugi.getUserName()); }