[
https://issues.apache.org/jira/browse/YARN-2892?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14238520#comment-14238520
]
Sevada Abraamyan commented on YARN-2892:
----------------------------------------
On second thought I think [~djp] was referring directly to the code I
referenced above. Since we'd rather not modify the public interface of RMApp,
maybe we should continue passing in the full username to
_createAndGetApplicationReport_ and prior to AMRM security check we can use
this full username to construct a short username. It seems a bit hacky but I'm
not sure how else we can avoid not breaking the public interface.
The easiest way I can see doing this is by using something like the following:
{code}
UserGroupInformation remoteUser =
UserGroupInformation.getRemoteUser(clientUserName);
String shortUsername = remoteUser.getShortUsername();
{code}
Another solution could be to do the following:
{code}
//if security is set to kerberos...
HadoopKerberosName kbName = new HadoopKerberosName(clientUserName);
String shortUsername = kbName.getShortUsername()
{code}
The first solution is a bit strange but looks more attractive to me as it
allows _RMAppImpl_ to stay agnostic to the underlying security framework. Any
suggestions?
> Unable to get AMRMToken in unmanaged AM when using a secure cluster
> -------------------------------------------------------------------
>
> Key: YARN-2892
> URL: https://issues.apache.org/jira/browse/YARN-2892
> Project: Hadoop YARN
> Issue Type: Bug
> Components: resourcemanager
> Reporter: Sevada Abraamyan
> Assignee: Sevada Abraamyan
> Attachments: YARN-2892.patch, YARN-2892.patch, YARN-2892.patch
>
>
> An AMRMToken is retrieved from the ApplicationReport by the YarnClient.
> When the RM creates the ApplicationReport and sends it back to the client it
> makes a simple security check whether it should include the AMRMToken in the
> report (See createAndGetApplicationReport in RMAppImpl).This security check
> verifies that the user who submitted the original application is the same
> user who is requesting the ApplicationReport. If they are indeed the same
> user then it includes the AMRMToken, otherwise it does not include it.
> The problem arises from the fact that when an application is submitted, the
> RM saves the short username of the user who created the application (See
> submitApplication in ClientRmService). Afterwards when the ApplicationReport
> is requested, the system tries to match the full username of the requester
> against the previously stored short username.
> In a secure cluster using Kerberos this check fails because the principle is
> stripped from the username when we request a short username. So for example
> the short username might be "Foo" whereas the full username is
> "[email protected]"
> Note: A very similar problem has been previously reported
> ([Yarn-2232|https://issues.apache.org/jira/browse/YARN-2232])
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)