public void SetUp()
            {
                var algo = new RijndaelAlgorithm();
                var encryptionKeyIvFactory = new EncryptionKeyIvFactory(algo);

                var keyIv = encryptionKeyIvFactory.Create(Password, Salt.GetBytes());

                _sut = CreateSut(algo, keyIv);
            }
    /// <summary>
    /// Resend the authentication call to the SSO service
    /// </summary>
    private void RetryAuth()
    {
        var uName       = Convert.ToString(Session["uname"]);
        var pwd         = Convert.ToString(Session["pwd"]);
        var vendorToken = RijndaelAlgorithm.GetVendorToken(Request.Url.AbsoluteUri.Split('&')[0], _personifySsoVendorPassword, _personifySsoVendorBlock, uName, pwd, true);
        var url         = string.Format("{0}?vi={1}&vt={2}", PersonifyAutoLoginUrl, PersonifyVendorID, vendorToken);

        Response.Redirect(url);
    }
예제 #3
0
        public async Task MyTestMethod()
        {
            var rgbIV     = RijndaelAlgorithm.CreateRgbIV();
            var algorithm = new RijndaelAlgorithm("12345678".ToBytes(), rgbIV);

            var foo = "foo".ToBytes();

            var encrypted = await algorithm.EncryptAsync(foo, "bar");

            var decrypted = await algorithm.DecryptAsync(encrypted, "bar");

            Assert.AreEqual("foo", decrypted.GetString());
        }
예제 #4
0
    protected void Page_InIt(object sender, EventArgs e)
    {
        var vendorPassword = ConfigurationManager.AppSettings["PersonifySSO_Password"].ToString();
        var vendorBlock    = ConfigurationManager.AppSettings["PersonifySSO_Block"].ToString();
        var vendorId       = ConfigurationManager.AppSettings["PersonifySSO_VendorID"];

        var encryptedVendorToken = RijndaelAlgorithm.GetVendorToken(Request.Url.AbsoluteUri, vendorPassword,
                                                                    vendorBlock, "Username", "Password", true);
        PersonifyControlBase objbase = new PersonifyControlBase();
        // var ctrl = new Personify.WebControls.ShoppingCart.UI.CartPreviewControl();
        var ctrl = new Personify.WebControls.Profile.UI.PurchaseHistory();

        PersonifyControlBase obbase = new PersonifyControlBase();

        objbase.InitPersonifyWebControl(ctrl);
        phPersonifyControl.Controls.Add(ctrl);
    }
예제 #5
0
        //Използва се когато binding model-а е weakly-typed за да се намапне от view -то към параметрите на метода
        //public ActionResult DoLogin([Bind(Prefix="user")]UserDetails userDetails)
        public ActionResult DoLogin(UserDetails userDetails)
        {
            if (ModelState.IsValid)
            {
                UserDetailsBusinessLayer bol = new UserDetailsBusinessLayer();
                //New Code Start
                UserStatus status  = bol.GetUserValidity(userDetails);
                bool       IsAdmin = false;
                if (status == UserStatus.AuthenticatedAdmin)
                {
                    IsAdmin = true;
                }
                else if (status == UserStatus.AuthentucatedUser)
                {
                    IsAdmin = false;
                }
                else
                {
                    ModelState.AddModelError("CredentialError", "Invalid Username or Password");
                    return(View("Login"));
                }
                //FormsAuthentication.SetAuthCookie(userDetails.UserName, true);

                string sessionID = Guid.NewGuid().ToString();

                Session.Add(sessionID, IsAdmin);
                CreatingFormsAuthentication(userDetails, sessionID);

                RijndaelAlgorithm crypter = new RijndaelAlgorithm(userDetails);
                crypter.EncryptData();

                return(RedirectToAction("Index", "Employee"));
                //New Code End
            }
            else
            {
                return(View("Login"));
            }
        }
예제 #6
0
 public AuthRepository(TodoContext context)
 {
     this._context     = context;
     this._objSecurity = new RijndaelAlgorithm();
     this._objConf     = new ConfiguracionRepository(this._context);
 }
예제 #7
0
        public void SSOWebServiceTestHarness2()
        {
            try
            {
                var username = "******";
                var password = "******";

                var service = new com.personifycloud.smemitst.service();

                var vendorToken = RijndaelAlgorithm.GetVendorToken("http://testpage.com/", PersonifyVendorPassword, PersonifyVendorBlock, username, password, true);

                var url = string.Format("{0}?vi={1}&vt={2}", PersonifyAutoLoginUrl, PersonifyVendorID, vendorToken);

                System.Net.HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                request.AutomaticDecompression = DecompressionMethods.GZip;
                var html = string.Empty;

                var querystringDictionary = new Dictionary <string, string>();
                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                    using (Stream stream = response.GetResponseStream())
                        using (StreamReader reader = new StreamReader(stream))
                        {
                            html = reader.ReadToEnd();
                            var queryString = response.ResponseUri.Query;

                            if (queryString.StartsWith("?"))
                            {
                                queryString = queryString.Substring(1);

                                foreach (var pair in queryString.Split(new char[] { '&' }))
                                {
                                    var items = pair.Split(new char[] { '=' });

                                    if (items != null && items.Length == 2)
                                    {
                                        querystringDictionary.Add(items.First(), items.Last());
                                    }
                                }
                            }
                        }

                if (querystringDictionary.ContainsKey("ct"))
                {
                    var encryptedCT = querystringDictionary["ct"];

                    var r = service.CustomerTokenDecrypt(PersonifyVendorName, PersonifyVendorPassword, PersonifyVendorBlock, encryptedCT);

                    ///this should decrypt into a guid looking thing.  Sometimes the webservice returns a corrupt string.  When that happens, should we just retry?
                    var customerToken = r.CustomerToken;

                    var tokenIsValidResult = service.SSOCustomerTokenIsValid(PersonifyVendorName, PersonifyVendorPassword, customerToken);

                    if (tokenIsValidResult.Valid)
                    {
                        customerToken = tokenIsValidResult.NewCustomerToken;

                        var result = service.SSOCustomerGetByCustomerToken(PersonifyVendorName, PersonifyVendorPassword, customerToken);

                        if (result != null && result.UserExists)
                        {
                            var userExists = result.UserExists;
                            var userName   = result.UserName;
                            var email      = result.Email;
                            var flag       = result.DisableAccountFlag;

                            //for giggles
                            var ciResult = service.TIMSSCustomerIdentifierGet(PersonifyVendorName, PersonifyVendorPassword, customerToken);

                            if (ciResult == null || String.IsNullOrEmpty(ciResult.CustomerIdentifier))
                            {
                                var identifier = "0517438|0";

                                var identifierSetResult = service.TIMSSCustomerIdentifierSet(PersonifyVendorName, PersonifyVendorPassword, userName, identifier);

                                if (identifierSetResult.CustomerIdentifier == identifier)
                                {
                                    System.Console.WriteLine(identifierSetResult.CustomerIdentifier);
                                }
                            }
                            var imsService = new com.personifycloud.smemitst1.IMService();

                            var allRolesResult = imsService.IMSVendorRolesGet(PersonifyVendorName, PersonifyVendorPassword);

                            var groupResult = imsService.IMSCustomerRoleGet(PersonifyVendorName, PersonifyVendorPassword, customerToken);

                            if (groupResult != null && groupResult.CustomerRoles != null)
                            {
                                foreach (var customerRole in groupResult.CustomerRoles)
                                {
                                    if (customerRole != null && !String.IsNullOrEmpty(customerRole.Value))
                                    {
                                        var aRole = customerRole.Value;
                                        aRole.Equals(aRole);
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                System.Console.WriteLine(ex.ToString());
            }
        }
예제 #8
0
    /// <summary>
    /// Logic to handle SSO sign in/out and user reauthorization
    /// </summary>
    protected void Page_Load(object sender, EventArgs e)
    {
        // Did user log out?
        CheckForLogout();

        // Do we need to reauthorize user?
        ReAuthorizeCheck();

        Session[PersonifySessionKey] = null;

        // Check for empty session values
        if (Session[UserNameSessionKey] == null || (string)Session[PasswordSessionKey] == null)
        {
            ReAuthorizeFail();
        }

        var username = (string)Session[UserNameSessionKey];
        var password = (string)Session[PasswordSessionKey];

        // Logic to handle retry
        if (Session[RetryCountSessionKey] == null)
        {
            Session[RetryCountSessionKey] = 0;
        }
        else if ((int)Session[RetryCountSessionKey] == 5)
        {
            Session[RetryCountSessionKey] = null;
            EventLogProvider.LogException("SSOHandler", "Retry", new Exception("Cannot resolve username and password with autologin.  Exceeded retry limit."), SiteContext.CurrentSiteID);
            URLHelper.Redirect(_loginErrorUrl);
        }
        else
        {
            var current = (int)Session[RetryCountSessionKey] + 1;

            Session[RetryCountSessionKey] = current;
        }

        // Get customer from Personify
        var ssoCustomer = ssoClient.SSOCustomerGetByUsername(_personifySsoVendorName, _personifySsoVendorPassword, username);

        // Check if Customer exists in Personify
        if (ssoCustomer == null)
        {
            EventLogProvider.LogException("SSOHandler", "LookupCustomer", new Exception("ssoCustomer does not exist for given username."), SiteContext.CurrentSiteID);
            URLHelper.Redirect(_loginErrorUrl);
            //throw new Exception("ssoCustomer does not exist for given username.");
        }

        // Get Token from Personify Request
        var customerToken  = Request.QueryString["ct"];
        var decryptedToken = String.Empty;

        var rememberMe = Session[RememberMeSessionKey] != null ? (bool)Session[RememberMeSessionKey] : false;

        // If decrypted token is not empty and valid, then proceed to log in
        if (!string.IsNullOrEmpty(customerToken) && isValidToken(decryptedToken = DecryptCustomerToken(customerToken)))
        {
            Session[PersonifySessionKey] = decryptedToken;

            // Verify Kentico User
            VerifyKenticoUser(decryptedToken, username);

            // Log in to Kentico
            AuthenticationHelper.AuthenticateUser(username, rememberMe);

            // Set SSO Token cookie
            var ssoToken = new HttpCookie(SSOTokenCookie, decryptedToken);
            ssoToken.Expires = DateTime.Now.AddDays(90);
            Response.Cookies.Add(ssoToken);

            SessionHelper.Remove("VendorToken");

            RedirectToDesiredURL();
        }
        else
        {
            //we don't have a valid token, initiate Retry
            String returnURL = HttpContext.Current.Request.Url.AbsoluteUri;

            if (!String.IsNullOrEmpty(HttpContext.Current.Request.Url.Query))
            {
                returnURL = returnURL.Replace(HttpContext.Current.Request.Url.Query, "");
            }

            var encryptedVendorToken = RijndaelAlgorithm.GetVendorToken(returnURL, _personifySsoVendorPassword, _personifySsoVendorBlock, username, password, rememberMe);
            SessionHelper.SetValue("VendorToken", encryptedVendorToken);
            var url = string.Format("{0}?vi={1}&vt={2}", _personifyAutoLoginUrl, _personifyVendorID, encryptedVendorToken);
            Response.Redirect(url);
        }
    }
예제 #9
0
    private void LoginMember(string Username, string Password, bool RememberMember)
    {
        try
        {
            var    vendorPassword = ConfigurationManager.AppSettings["PersonifySSO_Password"].ToString();
            var    vendorBlock    = ConfigurationManager.AppSettings["PersonifySSO_Block"].ToString();
            var    vendorId       = ConfigurationManager.AppSettings["PersonifySSO_VendorID"];
            string returnURl      = Request.Url.AbsoluteUri;
            string fullUrl        = Request.RawUrl;
            if (Request.QueryString["ReturnUrl"] != null)
            {
                //  string url = Request.Url.ToString();
                //  Uri originalUrl = new Uri(url); // Request.Url
                //  string domainUrl = String.Concat(originalUrl.Scheme, Uri.SchemeDelimiter, originalUrl.Host); // http://www.mydomain.com
                ////  UrlParameterHelper.ConstructURLWithExistingQueryString(Step2Url, Request.QueryString, QueryStringParametersToPreserve);
                //  returnURl = domainUrl + "/CMSPages/PortalTemplate.aspx?aliaspath=" + Request.QueryString["ReturnUrl"].ToString();
                string Rurl = fullUrl.Replace("?site=sme&", "?");
                Rurl = Rurl.ToLower().Replace("/memberredirect/default.aspx?returnurl=", "");
                Rurl = Rurl.Replace("&site=sme", "");
                if (Request.QueryString["ReturnUrl"].ToString().ToLower().Contains("personifyebusiness"))
                {
                    if ((Request.QueryString["ReturnUrl"].ToString().ToLower().Contains("http://")))///check if user is redirected from Personify Pages
                    {
                        string urlRed = Server.UrlDecode(Request.QueryString["ReturnUrl"].ToString().ToLower());
                        string login  = "******";
                        urlRed.Replace("http://smemi.personifycloud.com/", "");

                        Session["redirectUrl"] = login + (urlRed);
                        // Session["redirectUrl"] =   Request.QueryString["ReturnUrl"].ToString();//Server.UrlEncode(Rurl) ;//Request.QueryString["ReturnUrl"].ToString();
                    }
                    else
                    {
                        Session["redirectUrl"] = Server.UrlEncode(Rurl);//Request.QueryString["ReturnUrl"].ToString();
                    }
                }
                else
                {
                    Session["redirectUrl"] = Request.QueryString["ReturnUrl"].ToString();//Server.UrlDecode(Rurl);
                }
            }

            else if (Request.QueryString["rurl"] != null)
            {
                string Rurl = fullUrl.Replace("?site=sme&", "?");
                Rurl = Rurl.Replace("/memberredirect/default.aspx?rurl=", "");
                Rurl = Rurl.Replace("&site=sme", "");
                string login = "******";
                Session["redirectUrl"] = login + (Session["rurlValues"]);
                //Response.Write(Request.QueryString["rurl"] +" <br/>") ;
            }
            else if (Request.QueryString["loginurl"] != null)
            {
                Session["redirectUrl"] = Request.QueryString["loginurl"];
            }
            else
            {
                Session["redirectUrl"] = null;
            }
            var encryptedVendorToken = RijndaelAlgorithm.GetVendorToken(returnURl, vendorPassword,
                                                                        vendorBlock, Username, Password, RememberMember);


            string URL = string.Format("{0}?vi={1}&vt={2}", PersonifyAutoLoginUrl, vendorId, encryptedVendorToken);
            //  var ssoRedirect = "http://smemitst.personifycloud.com/SSO/autologin.aspx" + "?vi=" + vendorId + "&vt=" + encryptedVendorToken;
            LoginUsertokentico.WriteError("URL which is sent via Autologin  --->", URL);
            Response.Redirect(URL);
        }
        catch (Exception exception)
        {
            // ApplicationEngine.HandleException(exception);
            Response.Write(exception.ToString());
            // LoginUsertokentico.WriteError("LoginMember", exception.ToString());

            EventLogProvider.LogException("LoginMember", "Get", exception);
        }
    }
예제 #10
0
 private static SecureString SecurePassword(string hashedPassword)
 {
     return(RijndaelAlgorithm.Decrypt(hashedPassword, passPhrease, salt, hashAlgorithm, passwordIterations, initVector, keySize)
            .Encrypt());
 }
예제 #11
0
 private static string EncryptPassword(string password)
 {
     return(RijndaelAlgorithm.Encrypt(password, passPhrease, salt, hashAlgorithm, passwordIterations, initVector, keySize));
 }