示例#1
0
        internal VerifyResultModel Verify(string token, bool skipLifetimeValidation)
        {
            var handler = new JwtSecurityTokenHandler();
            TokenValidationParameters parameters = GetParameters(skipLifetimeValidation);

            var result = new VerifyResultModel()
            {
                IsValid = false
            };

            // Catch invalid token
            try
            {
                SecurityToken validatedToken;
                handler.ValidateToken(token, parameters, out validatedToken);
            }
            catch (Exception)
            {
                return(result);
            }

            var jwt = handler.ReadToken(token) as JwtSecurityToken;

            if (jwt != null)
            {
                result.ExpiryDate = jwt.ValidTo;
                result.Email      = GetClaim(jwt, ClaimEmail);
                result.AppId      = Convert.ToInt32(GetClaim(jwt, ClaimAppId));
                result.IsValid    = true;
            }

            return(result);
        }
示例#2
0
        public void Verify_ForExpiredToken_ReturnsError()
        {
            var    parser = new JwtParser();
            string token  = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InJhZmFsLmdyYWR6aWVAZmluZ28ucGwiLCJpc3MiOiJMZWduaWNhSVQiLCJBcHBJZCI6IjEiLCJuYmYiOjE0ODE3MTc0MTcsImV4cCI6MTQ4MTcyMTAxNywiaWF0IjoxNDgxNzE3NDE3fQ.ZPzu-eaoaY7CxyQmJwvfk18vd9sO5guOwbfjsKK1Qcg";

            VerifyResultModel result = parser.Verify(token);

            Assert.Equal(false, result.IsValid);
            Assert.Equal(null, result.ExpiryDate);
        }
示例#3
0
        public void Verify_ForFreshToken_ReturnsOk()
        {
            var parser = new JwtParser();
            AcquireTokenModel tokenModel = parser.AcquireToken("*****@*****.**", 1);

            VerifyResultModel result = parser.Verify(tokenModel.Token);

            Assert.Equal(true, result.IsValid);
            Assert.NotNull(result.ExpiryDate);
        }
示例#4
0
        public void Verify_ForTokenParametersData()
        {
            var    parser = new JwtParser();
            string token  = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6IjEyM0B0ZXN0LnBsIiwiaXNzIjoiTGVnbmljYUlUIiwiYXBwSWQiOiIxIiwicm9sZSI6IlVzZXIiLCJuYmYiOjE0ODQxNDAwMjgsImV4cCI6MTQ4NDE0MDA4OCwiaWF0IjoxNDg0MTQwMDI4fQ.fZXSj3jZIQ8u2aoAzv6fDW0_c7BBb5oVr2oVDytnTek";

            VerifyResultModel result = parser.Verify(token, true);

            var email = result.Email;
            var appId = result.AppId;

            Assert.Equal("*****@*****.**", email);
            Assert.Equal(1, appId);
        }
示例#5
0
        public void Verify_ForFreshToken_ReturnsCorrectExpiryDate()
        {
            var mockedDateTimeProvider = new Mock <IDateTimeProvider>();
            var dateFormat             = "yyyy-MM-dd HH:mm";
            var dateNow = DateTime.UtcNow;

            // we are using mocked IDateTimeProvider to make sure we are refering to same "now"
            mockedDateTimeProvider.Setup(p => p.GetNow()).Returns(dateNow);
            var parser = new JwtParser(mockedDateTimeProvider.Object);
            var dateNowFutureString = dateNow.AddDays(parser.GetExpiredDays()).ToString(dateFormat);

            AcquireTokenModel tokenModel       = parser.AcquireToken("*****@*****.**", 1);
            VerifyResultModel result           = parser.Verify(tokenModel.Token);
            string            expiryDateString = null;

            if (result.ExpiryDate != null)
            {
                expiryDateString = result.ExpiryDate.Value.ToString(dateFormat);
            }

            Assert.Equal(dateNowFutureString, expiryDateString);
        }
示例#6
0
        public JsonResult Verify(string accEmail, string data, string type, string name, string contentType)
        {
            byte[] dataArray = null;
            try
            {
                dataArray = Convert.FromBase64String(data);
            }
            catch (Exception)
            {
                return(Json(new ResponseMessage
                {
                    ResponseCode = 3,
                    ResponseContent = "Chọn tệp cần kiểm tra để tiếp tục"
                }));
            }
            List <string> allowedTypes = new List <string>()
            {
                "xml", "docx", "xlsx", "pptx", "pdf", "p7b", "txt"
            };

            if (string.IsNullOrEmpty(type) || !allowedTypes.Contains(type))
            {
                return(Json(new ResponseMessage
                {
                    ResponseCode = 3,
                    ResponseContent = "Định dạng chưa được hỗ trợ"
                }));
            }

            if (type.Equals("txt") || type.Equals("p7b"))
            {
                dataArray = Encoding.ASCII.GetBytes(data);
            }


            var accessToken = Session["access_token"] as string;

            if (string.IsNullOrEmpty(accessToken))
            {
                return(null);
            }
            try
            {
                var req = new RequestMessage
                {
                    RequestID    = Guid.NewGuid().ToString(),
                    ServiceID    = "SignServer",
                    FunctionName = "Verify",
                    Parameter    = new SignParameter
                    {
                        AccountEmail = accEmail,
                        Type         = type,
                        ContentType  = contentType,
                        FileName     = name,
                        DataBase64   = data
                    }
                };
                var resp = CoreServiceClient.Query(req, accessToken);
                if (resp == null)
                {
                    return(Json(new ResponseMessage
                    {
                        ResponseCode = 2,
                        ResponseContent = "Dịch vụ không phản hồi"
                    }));
                }
                if (resp.ResponseCode != 1)
                {
                    return(Json(resp));
                }

                var res = new VerifyResultModel();
                try
                {
                    res = JsonConvert.DeserializeObject <VerifyResultModel>(JsonConvert.SerializeObject(resp.Content));
                }
                catch (Exception)
                {
                }

                if (res != null && res.status)
                {
                    var parsedList = new List <SignServerVerifyResultModel>();
                    foreach (var sig in res.signatures)
                    {
                        parsedList.Add(ParseSignature(sig));
                    }
                    res.signatures = parsedList;
                    resp.Content   = res;
                    return(Json(resp));
                }
                else
                {
                    return(Json(new ResponseMessage
                    {
                        ResponseCode = 3,
                        ResponseContent = "Dịch vụ không phản hồi"
                    }));
                }
            }
            catch (Exception)
            {
                return(Json(new ResponseMessage
                {
                    ResponseCode = 3,
                    ResponseContent = "Lỗi ngoại lệ"
                }));
            }
        }