private void RefreshTokenExpirations(ShadyAuthenticationToken token)
        {
            var validPeriod = token.ExpiresUtc - token.IssuedUtc;

            token.IssuedUtc  = DateTime.UtcNow;
            token.ExpiresUtc = DateTime.UtcNow + validPeriod;
        }
 private void SetTokenHeaders(ShadyAuthenticationToken token)
 {
     Response.Headers.Add("access-token", Options.ShadyAuthenticationTokenDataFormat.Protect(token));
     Response.Headers.Add("token-type", ShadyAuthenticationDefaults.AuthenticationScheme);
     Response.Headers.Add("persist-login", token.IsPersistent.ToString());
     Response.Headers.Add("user-id", token.Principal.FindFirstValue(ClaimTypes.NameIdentifier));
 }
Ejemplo n.º 3
0
            public MiddleToken(ShadyAuthenticationToken token)
            {
                MemoryStream outputStream = new MemoryStream();
                var          writer       = new BinaryWriter(outputStream);

                token.Principal.WriteTo(writer);
                PrincipalBytes = outputStream.ToArray();

                IssuedUtc           = token.IssuedUtc;
                ExpriesUtc          = token.ExpiresUtc;
                PrincipalIssuedUtc  = token.PrincipalIssuedUtc;
                PrincipalExpiresUtc = token.PrincipalExpiresUtc;
                IsPersistent        = token.IsPersistent;
            }
        private async Task RebuildPrincipleAsync(ShadyAuthenticationToken token)
        {
            var tokenUserId = token.Principal.FindFirstValue(ClaimTypes.NameIdentifier);
            var user        = await _userManager.FindByIdAsync(tokenUserId);

            if (user is null)
            {
                throw new Exception("User in principal could not be found");
            }

            var principalSecurityStamp = token.Principal.FindFirstValue("AspNet.Identity.SecurityStamp");

            if (principalSecurityStamp != user.SecurityStamp)
            {
                throw new Exception("User's security stamp has changed since principal was created");
            }

            token.Principal = await _principalFactory.CreateAsync(user);

            var validPeriod = token.PrincipalExpiresUtc - token.PrincipalIssuedUtc;

            token.PrincipalIssuedUtc  = DateTime.UtcNow;
            token.PrincipalExpiresUtc = DateTime.UtcNow + validPeriod;
        }
        private async Task <AuthenticationTicket> BuildTicketAsync(ClaimsPrincipal principal, ShadyAuthenticationToken token)
        {
            var properties = new AuthenticationProperties
            {
                IsPersistent = token.IsPersistent,
                IssuedUtc    = token.IssuedUtc,
                AllowRefresh = Options.SlidingExpiration
            };

            return(new AuthenticationTicket(principal, properties, ShadyAuthenticationDefaults.AuthenticationScheme));
        }