Beispiel #1
0
        protected override async Task <AuthenticationTicket> AuthenticateCore()
        {
            _logger.WriteVerbose("AuthenticateCore");

            IDictionary <string, string> cookies = Request.GetCookies();
            string cookie;

            if (!cookies.TryGetValue(Options.CookieName, out cookie))
            {
                _logger.WriteWarning("No cookie found");
                return(null);
            }

            AuthenticationTicket model = Options.TicketDataHandler.Unprotect(cookie);

            if (model == null)
            {
                _logger.WriteWarning("null model");
                return(null);
            }

            DateTimeOffset currentUtc = Options.SystemClock.UtcNow;
            DateTimeOffset?issuedUtc  = model.Extra.IssuedUtc;
            DateTimeOffset?expiresUtc = model.Extra.ExpiresUtc;

            if (expiresUtc != null && expiresUtc.Value < currentUtc)
            {
                return(null);
            }

            if (issuedUtc != null && expiresUtc != null && Options.SlidingExpiration)
            {
                TimeSpan timeElapsed   = currentUtc.Subtract(issuedUtc.Value);
                TimeSpan timeRemaining = expiresUtc.Value.Subtract(currentUtc);

                if (timeRemaining < timeElapsed)
                {
                    _shouldRenew    = true;
                    _renewIssuedUtc = currentUtc;
                    TimeSpan timeSpan = expiresUtc.Value.Subtract(issuedUtc.Value);
                    _renewExpiresUtc = currentUtc.Add(timeSpan);
                }
            }

            var context = new FormsValidateIdentityContext(model);

            await Options.Provider.ValidateIdentity(context);

            return(new AuthenticationTicket(context.Identity, context.Extra));
        }
        protected override async Task <AuthenticationTicket> AuthenticateCore()
        {
            IDictionary <string, string> cookies = Request.GetCookies();
            string cookie;

            if (!cookies.TryGetValue(Options.CookieName, out cookie))
            {
                return(null);
            }

            var model = Options.TicketDataHandler.Unprotect(cookie);

            if (model == null)
            {
                return(null);
            }

            DateTimeOffset currentUtc = DateTimeOffset.UtcNow;
            DateTimeOffset?issuedUtc  = model.Extra.IssuedUtc;
            DateTimeOffset?expiresUtc = model.Extra.ExpiresUtc;

            if (expiresUtc != null && expiresUtc.Value < currentUtc)
            {
                return(null);
            }

            if (issuedUtc != null && expiresUtc != null && Options.SlidingExpiration)
            {
                var timeElapsed   = currentUtc.Subtract(issuedUtc.Value);
                var timeRemaining = expiresUtc.Value.Subtract(currentUtc);

                if (timeRemaining < timeElapsed)
                {
                    _shouldRenew    = true;
                    _renewIssuedUtc = currentUtc;
                    var timeSpan = expiresUtc.Value.Subtract(issuedUtc.Value);
                    _renewExpiresUtc = currentUtc.Add(timeSpan);
                }
            }

            var command = new FormsValidateIdentityContext(model);

            if (Options.Provider != null)
            {
                await Options.Provider.ValidateIdentity(command);
            }

            return(new AuthenticationTicket(command.Identity, command.Extra));
        }
 public Task ValidateIdentity(FormsValidateIdentityContext context)
 {
     return TaskAsyncHelper.Empty;
 }
 public virtual Task ValidateIdentity(FormsValidateIdentityContext context)
 {
     return(OnValidateIdentity.Invoke(context));
 }
 public virtual Task ValidateIdentity(FormsValidateIdentityContext context)
 {
     return OnValidateIdentity.Invoke(context);
 }