private static string InternalGetLogOnName(bool autoRedirect, out ITicket ticket)
        {
            string userID = string.Empty;

            ticket = null;

            if (ImpersonateSettings.GetConfig().EnableTestUser)
            {
                //是否使用测试帐户
                userID = HttpContext.Current.Request.Headers["testUserID"];

                if (userID.IsNotEmpty())
                {
                    HttpContext.Current.Response.AppendHeader("testUserID", userID);
                }
                else
                {
                    userID = ImpersonateSettings.GetConfig().TestUserID;
                }
            }

            if (userID.IsNullOrEmpty())
            {
                userID = GetLogOnName(autoRedirect, out ticket);
            }

            return(userID);
        }
        private static IPrincipal DoAuthentication(bool autoRedirect)
        {
            IPrincipal principal = null;
            ITicket    ticket;

            string logonName = InternalGetLogOnName(autoRedirect, out ticket);

            if (logonName.IsNotEmpty())
            {
                logonName = ImpersonateSettings.GetConfig().Impersonation[logonName];

                LogOnIdentity loi = new LogOnIdentity(logonName);

                if (ticket != null)
                {
                    ticket.SignInInfo.UserID = loi.LogOnNameWithDomain;
                }

                principal = SetPrincipal(loi.LogOnNameWithDomain, ticket);
            }

            return(principal);
        }