コード例 #1
0
        /// <exception cref="System.IO.IOException"/>
        private static UserGroupInformation GetTokenUGI(ServletContext context, HttpServletRequest
                                                        request, string tokenString, Configuration conf)
        {
            Org.Apache.Hadoop.Security.Token.Token <DelegationTokenIdentifier> token = new Org.Apache.Hadoop.Security.Token.Token
                                                                                       <DelegationTokenIdentifier>();
            token.DecodeFromUrlString(tokenString);
            IPEndPoint serviceAddress = GetNNServiceAddress(context, request);

            if (serviceAddress != null)
            {
                SecurityUtil.SetTokenService(token, serviceAddress);
                token.SetKind(DelegationTokenIdentifier.HdfsDelegationKind);
            }
            ByteArrayInputStream      buf = new ByteArrayInputStream(token.GetIdentifier());
            DataInputStream           @in = new DataInputStream(buf);
            DelegationTokenIdentifier id  = new DelegationTokenIdentifier();

            id.ReadFields(@in);
            if (context != null)
            {
                NameNode nn = NameNodeHttpServer.GetNameNodeFromContext(context);
                if (nn != null)
                {
                    // Verify the token.
                    nn.GetNamesystem().VerifyToken(id, token.GetPassword());
                }
            }
            UserGroupInformation ugi = id.GetUser();

            ugi.AddToken(token);
            return(ugi);
        }
コード例 #2
0
        private static IPEndPoint GetNNServiceAddress(ServletContext context, HttpServletRequest
                                                      request)
        {
            string     namenodeAddressInUrl = request.GetParameter(NamenodeAddress);
            IPEndPoint namenodeAddress      = null;

            if (namenodeAddressInUrl != null)
            {
                namenodeAddress = NetUtils.CreateSocketAddr(namenodeAddressInUrl);
            }
            else
            {
                if (context != null)
                {
                    namenodeAddress = NameNodeHttpServer.GetNameNodeAddressFromContext(context);
                }
            }
            if (namenodeAddress != null)
            {
                return(namenodeAddress);
            }
            return(null);
        }