public DateTime Get(bool hasLongTimeToLive)
        {
            var now = _nowProvider.Now();

            if (hasLongTimeToLive)
            {
                return(now.AddDays(_options.ExpireDaysLongToken));
            }
            return(now.AddMinutes(_options.ExpireMinutesShortToken));
        }
Пример #2
0
        public async Task AcceptAsync(Guid securityUserId)
        {
            using (var context = _contextFactory())
                using (var _securityUserProvider = _securityUserProviderFactory(context))
                {
                    var securityUser = await _securityUserProvider.GetByIdAsync(securityUserId);

                    securityUser.ToSAcceptedDate = _nowProvider.Now();

                    context.Update(securityUser);

                    await context.SaveChangesAsync();
                }
        }
Пример #3
0
        public async Task <bool> IsValidAsync(string validationToken)
        {
            if (string.IsNullOrEmpty(validationToken))
            {
                return(false);
            }

            var uri         = _options.ValidatorUrl;
            var ip          = _contextAccessor.HttpContext.Connection.RemoteIpAddress.ToString();
            var formContent = new FormUrlEncodedContent(new[]
            {
                new KeyValuePair <string, string>("secret", _options.Secret),
                new KeyValuePair <string, string>("response", validationToken),
                new KeyValuePair <string, string>("remoteip", ip)
            });

            using (var client = _httpClientProviderFactory())
                using (var res = await client.PostAsync(uri, formContent))
                    using (var content = res.Content)
                    {
                        var data = await content.ReadAsStringAsync();

                        if (data != null)
                        {
                            var response  = (JObject)JsonConvert.DeserializeObject(data);
                            var timestamp = response["challenge_ts"];
                            if (timestamp == null)
                            {
                                return(false);
                            }

                            var dateTime = timestamp.Value <DateTime>();
                            if ((_nowProvider.Now().ToUniversalTime() - dateTime.ToUniversalTime()).TotalMinutes > _tokenLifespan)
                            {
                                return(false);
                            }

                            var success = response["success"];
                            return(success != null && success.Value <bool>());
                        }
                    }

            return(false);
        }