示例#1
0
        public TicketResponse GetTicket(TicketRequest request, TicketConfiguration config)
        {
            if (String.IsNullOrEmpty(request.UserId))
            {
                ErrorMessage = "No userid defined";
                return(this);
            }

            string groups = request.Groups != null && request.Groups.Length > 0 ? GetGroups(request.Groups) : "";

            string webTicketXml = string.Format("<Global method=\"GetWebTicket\"><UserId>{0}</UserId>{1}</Global>", request.UserId, groups);

            var ticket = Execute(config, webTicketXml);

            if (ticket != null && ticket.Contains("Invalid call"))
            {
                ErrorMessage = ticket;
            }

            if (!String.IsNullOrEmpty(ErrorMessage))
            {
                return(this);
            }

            Ticket = ticket;

            var backUrl = config.BackUrl != null?config.BackUrl.ToString() : "";

            if (String.IsNullOrEmpty(config.Document))
            {
                RedirectUri = string.Format("{0}QvAJAXZfc/Authenticate.aspx?type=html&webticket={1}&try={2}&back={3}", config.AccessPointUri, Ticket, Uri.EscapeUriString(config.TryUri.ToString()), Uri.EscapeUriString(backUrl));
            }
            else
            {
                if (String.IsNullOrEmpty(config.QvsHost))
                {
                    ErrorMessage = "QvsHost parameter is required";
                    return(this);
                }

                var selections = "";
                if (config.Select != null && config.Select.Count > 0)
                {
                    selections = GetSelections(config.Select);
                }

                RedirectUri = string.Format("{0}QvAJAXZfc/Authenticate.aspx?type=html&webticket={1}&try={2}&back={3}", config.AccessPointUri, Ticket, Uri.EscapeDataString(config.AccessPointUri + "QvAJAXZfc/AccessPoint.aspx?open=&id=" + config.QvsHost + "%7C" + config.Document) + selections + "&client=Ajax", backUrl);
            }

            return(this);
        }
示例#2
0
        private string Execute(TicketConfiguration config, string data = "")
        {
            try
            {
                ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(config.GetWebTicketUri);
                if (config.WindowsAuthentication)
                {
                    if (config.Credentials != null)
                    {
                        request.Credentials = config.Credentials;
                    }
                    else
                    {
                        request.UseDefaultCredentials = true;
                    }

                    request.PreAuthenticate = true;
                }
                request.KeepAlive              = false;
                request.ProtocolVersion        = HttpVersion.Version10;
                request.Method                 = "POST";
                request.Timeout                = 50000;
                request.ContentType            = "text/xml";
                request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

                var buffer = Encoding.UTF8.GetBytes(data);
                request.ContentLength = buffer.Length;
                var dataStream = request.GetRequestStream();
                dataStream.Write(buffer, 0, buffer.Length);
                dataStream.Close();

                var response       = (HttpWebResponse)request.GetResponse();
                var responseStream = response.GetResponseStream();
                var reader         = new StreamReader(responseStream, Encoding.UTF8);
                var result         = reader.ReadToEnd();

                reader.Close();
                dataStream.Close();
                response.Close();

                XDocument doc = XDocument.Parse(result);
                return(doc.Root.Element("_retval_").Value);
            }
            catch (Exception ex)
            {
                ErrorMessage = ex.Message;
                return(null);
            }
        }
示例#3
0
        private string Execute(TicketConfiguration config, string data = "")
        {
            try
            {
                ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(config.GetWebTicketUri);
                if (config.WindowsAuthentication)
                {
                    if (config.Credentials != null)
                        request.Credentials = config.Credentials;
                    else
                        request.UseDefaultCredentials = true;

                    request.PreAuthenticate = true;
                }
                request.KeepAlive = false;
                request.ProtocolVersion = HttpVersion.Version10;
                request.Method = "POST";
                request.Timeout = 50000;
                request.ContentType = "text/xml";
                request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

                var buffer = Encoding.UTF8.GetBytes(data);
                request.ContentLength = buffer.Length;
                var dataStream = request.GetRequestStream();
                dataStream.Write(buffer, 0, buffer.Length);
                dataStream.Close();

                var response = (HttpWebResponse)request.GetResponse();
                var responseStream = response.GetResponseStream();
                var reader = new StreamReader(responseStream, Encoding.UTF8);
                var result = reader.ReadToEnd();

                reader.Close();
                dataStream.Close();
                response.Close();

                XDocument doc = XDocument.Parse(result);
                return doc.Root.Element("_retval_").Value;
            }
            catch (Exception ex)
            {
                ErrorMessage = ex.Message;
                return null;
            }
        }
示例#4
0
        public TicketResponse GetTicket(TicketRequest request, TicketConfiguration config)
        {
            if (String.IsNullOrEmpty(request.UserId))
            {
                ErrorMessage = "No userid defined";
                return this;
            }

            string groups = request.Groups != null && request.Groups.Length > 0 ? GetGroups(request.Groups) : "";

            string webTicketXml = string.Format("<Global method=\"GetWebTicket\"><UserId>{0}</UserId>{1}</Global>", request.UserId, groups);

            var ticket = Execute(config, webTicketXml);

            if (ticket != null && ticket.Contains("Invalid call"))
                ErrorMessage = ticket;

            if (!String.IsNullOrEmpty(ErrorMessage))
                return this;

            Ticket = ticket;

            var backUrl = config.BackUrl != null ? config.BackUrl.ToString() : "";

            if (String.IsNullOrEmpty(config.Document))
                RedirectUri = string.Format("{0}QvAJAXZfc/Authenticate.aspx?type=html&webticket={1}&try={2}&back={3}", config.AccessPointUri, Ticket, Uri.EscapeUriString(config.TryUri.ToString()), Uri.EscapeUriString(backUrl));
            else
            {
                if (String.IsNullOrEmpty(config.QvsHost))
                {
                    ErrorMessage = "QvsHost parameter is required";
                    return this;
                }

                var selections = "";
                if (config.Select != null && config.Select.Count > 0)
                    selections = GetSelections(config.Select);

                RedirectUri = string.Format("{0}QvAJAXZfc/Authenticate.aspx?type=html&webticket={1}&try={2}&back={3}", config.AccessPointUri, Ticket, Uri.EscapeDataString(config.AccessPointUri + "QvAJAXZfc/AccessPoint.aspx?open=&id=" + config.QvsHost + "%7C" + config.Document) + selections + "&client=Ajax", backUrl);
            }

            return this;
        }
示例#5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            // Define some configuration options for the QlikView Server
            TicketConfiguration config = new TicketConfiguration()
            {
                GetWebTicketUri = new Uri("http://localhost/QvAJAXZfc/GetWebTicket.aspx")
            };

            // Create a ticket request with userid and groups (semicolon separated)
            TicketRequest request = new TicketRequest()
            {
                UserId = "rikard",
                Groups = new string[] { "PreSales", "Stockholm" }
            };
            
            // The response will contain the generated ticket, a redirect uri and possible error message
            TicketResponse response = new TicketResponse().GetTicket(request, config);

            if (response.ErrorMessage == null)
                Response.Redirect(response.RedirectUri, true);
            else
                Response.Write("Error: " + response.ErrorMessage);
        }