public ActionResult SpidRequest(string idP)
        {
            ThreadContext.Properties["Provider"] = idP;

            try
            {
                string spidServiceUrl;

                switch (idP)
                {
                case "poste_id":
                    spidServiceUrl = "https://spidposte.test.poste.it/jod-fs/ssoservicepost";
                    break;

                case "tim_id":
                    spidServiceUrl      = "#";
                    ViewData["Message"] = "Ci dispiace ma il sistema di test non è supportato.";
                    return(View("Error"));


                case "sielte_id":
                    spidServiceUrl      = "#";
                    ViewData["Message"] = "Ci dispiace ma il sistema di test non è supportato.";
                    return(View("Error"));

                case "infocert_id":
                    spidServiceUrl      = "#";
                    ViewData["Message"] = "Ci dispiace ma il sistema di test non è supportato.";
                    return(View("Error"));

                default:
                    ViewData["Message"] = "Ci dispiace ma il sistema di test non è supportato.";
                    return(View("Error"));
                }

                int securityLevelSPID = 1;

                Guid spidIdRequest = Guid.NewGuid();

                HttpCookie requestCookie = new HttpCookie(ConfigurationManager.AppSettings["SPID_COOKIE"].ToString());

                requestCookie.Expires = DateTime.Now.AddMinutes(30);

                requestCookie.Value = spidIdRequest.ToString();

                System.Web.HttpContext.Current.Response.Cookies.Add(requestCookie);

                var spidCryptoRequest = Saml2Helper.BuildPostSamlRequest("_" + spidIdRequest.ToString(),
                                                                         spidServiceUrl,
                                                                         ConfigurationManager.AppSettings["SPID_DOMAIN_VALUE"], securityLevelSPID,
                                                                         null,
                                                                         null,
                                                                         StoreLocation.LocalMachine,
                                                                         StoreName.My,
                                                                         X509FindType.FindBySubjectName,
                                                                         ConfigurationManager.AppSettings["SPID_CERTIFICATE_NAME"],
                                                                         idP,
                                                                         ConfigurationManager.AppSettings["ENVIROMENT"].ToString() == "dev" ? 1 : 0);

                byte[] base64EncodedBytes = Encoding.UTF8.GetBytes(spidCryptoRequest);

                string returnValue = System.Convert.ToBase64String(base64EncodedBytes);

                ViewData["data"] = returnValue;

                ViewData["action"] = spidServiceUrl;

                return(View("PostData"));
            }
            catch (Exception ex)
            {
                Log.Error("Si è verificato un Errore", ex);

                return(View("Error"));
            }
        }
        public ActionResult SpidRequest(string idP)
        {
            HttpContext CurrentContext = _contextAccessor.HttpContext;

            ThreadContext.Properties["Provider"] = idP;

            try
            {
                string serviceUrl = "";

                switch (idP)
                {
                case "poste_id":
                    serviceUrl = "https://spidposte.test.poste.it/jod-fs/ssoservicepost";
                    break;

                case "tim_id":
                    serviceUrl          = "#";
                    ViewData["Message"] = "Ci dispiace ma il sistema di test non è supportato.";
                    return(View("Error"));


                case "sielte_id":
                    serviceUrl          = "#";
                    ViewData["Message"] = "Ci dispiace ma il sistema di test non è supportato.";
                    return(View("Error"));

                case "infocert_id":
                    serviceUrl          = "#";
                    ViewData["Message"] = "Ci dispiace ma il sistema di test non è supportato.";
                    return(View("Error"));

                default:
                    ViewData["Message"] = "Ci dispiace ma il sistema di test non è supportato.";
                    return(View("Error"));
                }

                int securityLevelSPID = 1;

                Guid spidIdRequest = Guid.NewGuid();


                var spidCryptoRequest = Saml2Helper.BuildPostSamlRequest("_" + spidIdRequest.ToString(),
                                                                         serviceUrl,
                                                                         _spidOptions.DomainValue,
                                                                         securityLevelSPID,
                                                                         null,
                                                                         null,
                                                                         StoreLocation.LocalMachine,
                                                                         StoreName.My,
                                                                         X509FindType.FindBySubjectName,
                                                                         _spidOptions.CertificateName,
                                                                         idP,
                                                                         1);

                byte[] base64EncodedBytes = Encoding.UTF8.GetBytes(spidCryptoRequest);

                string returnValue = System.Convert.ToBase64String(base64EncodedBytes);

                ViewData["data"]   = returnValue;
                ViewData["action"] = serviceUrl;

                return(View("PostData"));
            }
            catch (Exception ex)
            {
                Log.Error("Si è verificato un Errore", ex);

                return(View("Error"));
            }
        }