/// <summary>
        /// OP取得登入資訊
        /// </summary>
        /// <param name="v"></param>
        /// <returns></returns>
        public string QueryByOpMid(string v)
        {
            ApiResult apiResult;
            var       jsonStr = "";
            var       decrypt = AesUtility.Decrypt(v);

            try
            {
                var model = decrypt.FromJson <OpMidModel.Input>();

                var service = new LoveMemberService();

                apiResult = service.Execute(model);

                jsonStr = JsonConvert.SerializeObject(apiResult);
                jsonStr = jsonStr.AesEncrypt();
            }
            catch (Exception ex)
            {
                LogRecord.Create()
                .SetMessage(ex.Message)
                .Error()
                ;
            }

            return(jsonStr);
        }
Exemple #2
0
        public string GetToken(string v)
        {
            ApiResult apiResult;
            var       jsonStr = "";
            var       decrypt = AesUtility.Decrypt(v);

            try
            {
                var model       = decrypt.FromJson <GetTokenModel.Input>();
                var checkResult = model.IsValid <string>();
                if (checkResult.ErrorCode != EnumItem.Get(Ref.ErrorCode._000).FinalValue)
                {
                    jsonStr = ReturnJsonString(checkResult);
                    return(jsonStr);
                }
                var service = new SecurityService();

                apiResult = service.Execute(model);

                jsonStr = ReturnJsonString(apiResult);
            }
            catch (Exception ex)
            {
                LogRecord.Create()
                .SetMessage(ex.Message)
                .Error()
                ;
            }

            return(jsonStr);
        }
Exemple #3
0
        protected bool HandleAuthToken(string token, string empAccount, out ArticleAjaxAuthData authData)
        {
            bool isValidToken = true;

            authData = null;

            if (string.IsNullOrEmpty(token))
            {
                isValidToken = false;
            }

            // decrypt token
            if (isValidToken)
            {
                try
                {
                    string aesKeyOfBP = ConfigurationManager.AppSettings["AesKeyOfBP"];
                    string basicIV    = ConfigurationManager.AppSettings["AesIV"];
                    string authJson   = AesUtility.Decrypt(token, aesKeyOfBP, basicIV);
                    authData = JsonConvert.DeserializeObject <ArticleAjaxAuthData>(authJson);
                }
                catch (Exception ex)
                {
                    logger.Error("", ex);
                    isValidToken = false;
                }
            }

            // check account
            if (isValidToken)
            {
                if (empAccount != authData.EmpAccount)
                {
                    isValidToken = false;
                }
            }

            // check postDate
            if (isValidToken)
            {
                if ((DateTime.Now - authData.PostDate).TotalHours >= 24)
                {
                    isValidToken = false;
                }
            }

            return(isValidToken);
        }
        public void EncryptAndDecrypt()
        {
            var inputList = new List <string>();

            inputList.Add("test123456789");
            inputList.Add("abcdefg");
            inputList.Add(Guid.NewGuid().ToString("N") + DateTime.Now.ToString("yyyyMMddhhmmss"));
            inputList.Add(Guid.NewGuid().ToString("N") + DateTime.Now.ToString("yyyyMMddhhmmss"));


            foreach (var item in inputList)
            {
                var encrypt  = AesUtility.Encrypt(item);
                var decrypt  = AesUtility.Decrypt(encrypt);
                var actual   = item;
                var expected = decrypt;
                Assert.AreEqual(expected, actual);
            }
        }
        protected bool HandlePreviewToken()
        {
            bool result = false;

            if (qsPreview == null)
            {
                return(false);
            }

            if (qsPreview == "1")
            {
                // redirect to back-stage to get authorization
                string websiteUrl = ConfigurationManager.AppSettings["WebsiteUrl"];
                string backendSsoAuthenticatorUrl = ConfigurationManager.AppSettings["BackendSsoAuthenticatorUrl"];

                if (string.IsNullOrEmpty(backendSsoAuthenticatorUrl))
                {
                    logger.Error("Invalid AppSettings/BackendSsoAuthenticatorUrl");
                    return(false);
                }

                string valueInToken = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                string token        = AesUtility.Encrypt(valueInToken, aesKeyOfFP, basicIV);
                string location     = websiteUrl + "/" + Request.AppRelativeCurrentExecutionFilePath.Replace("~/", "");
                string url          = StringUtility.SetParaValueInUrl(backendSsoAuthenticatorUrl, "token", Server.UrlEncode(token));
                url = StringUtility.SetParaValueInUrl(url, "location", Server.UrlEncode(location));
                url = AppendCurrentQueryString(url);
                Response.Redirect(url);
            }
            else
            {
                try
                {
                    // decrypt token
                    string         valueInToken   = AesUtility.Decrypt(qsPreview, aesKeyOfBP, basicIV);
                    PreviewArticle previewArticle = JsonConvert.DeserializeObject <PreviewArticle>(valueInToken);

                    if (!string.IsNullOrEmpty(previewArticle.EmpAccount))
                    {
                        if (DateTime.Now <= previewArticle.ValidTime)
                        {
                            articleData.ArticleId = new Guid(previewArticle.ArticleId);
                            result        = true;
                            isPreviewMode = true;

                            logger.DebugFormat("{0} previews {1} (id:[{2}])(lang:{3}).",
                                               previewArticle.EmpAccount,
                                               Request.AppRelativeCurrentExecutionFilePath,
                                               previewArticle.ArticleId,
                                               qsLangNo);
                        }
                        else
                        {
                            logger.InfoFormat("{0} previews {1} but exceed valid time.", previewArticle.EmpAccount, Request.AppRelativeCurrentExecutionFilePath);
                        }
                    }
                    else
                    {
                        logger.InfoFormat("user previews {0} but not logged in.", Request.AppRelativeCurrentExecutionFilePath);
                    }
                }
                catch (Exception ex)
                {
                    logger.Error("", ex);
                }
            }

            return(result);
        }