You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-issues@hadoop.apache.org by "Jing Zhao (JIRA)" <ji...@apache.org> on 2014/06/24 20:48:26 UTC

[jira] [Commented] (HADOOP-10342) Extend UserGroupInformation to return a UGI given a preauthenticated kerberos Subject

    [ https://issues.apache.org/jira/browse/HADOOP-10342?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14042508#comment-14042508 ] 

Jing Zhao commented on HADOOP-10342:
------------------------------------

Update the fix version: the patch has been merged to branch-2 already.

> Extend UserGroupInformation to return a UGI given a preauthenticated kerberos Subject
> -------------------------------------------------------------------------------------
>
>                 Key: HADOOP-10342
>                 URL: https://issues.apache.org/jira/browse/HADOOP-10342
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: security
>            Reporter: Larry McCay
>            Assignee: Larry McCay
>             Fix For: 2.5.0
>
>         Attachments: 10342.branch-1.2.patch, 10342.branch-1.patch, 10342.branch-2.3.patch, 10342.branch-2.patch, 10342.patch
>
>
> We need the ability to use a Subject that was created inside an embedding application through a kerberos authentication. For example, an application that uses JAAS to authenticate to a KDC should be able to provide the resulting Subject and get a UGI instance to call doAs on.
> Example: 
> {code}
>         UserGroupInformation.setConfiguration(conf);
> 		LoginContext context = new LoginContext("com.sun.security.jgss.login", new UserNamePasswordCallbackHandler(userName, password));
> 		context.login();
> 		
> 		Subject subject = context.getSubject();
> 	    final UserGroupInformation ugi2 = UserGroupInformation.getUGIFromSubject(subject);
>         ugi2.doAs(new PrivilegedExceptionAction<Object>() {
>             @Override
>             public Object run() throws Exception {
>                 final FileSystem fs = FileSystem.get(conf);
>                 int i=0;
>                 for (FileStatus status : fs.listStatus(new Path("/user"))) {
>                     System.out.println(status.getPath());
>                     System.out.println(status);
>                     if (i++ > 10) {
>                         System.out.println("only first 10 showed...");
>                         break;
>                     }
>                 }
>                 return null;
>             }
>         });
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)