public async Task CreateAsync(AuthenticationTokenCreateContext context)
        {
            var clientid = context.Ticket.Properties.Dictionary["as:client_id"];

            if (string.IsNullOrEmpty(clientid))
            {
                return;
            }

            var refreshTokenId = Guid.NewGuid().ToString("n");
            var refreshTokenLifeTime = context.OwinContext.Get<string>("as:clientRefreshTokenLifeTime");

            var token = new RefreshToken()
            {
                Id = Helper.GetHash(refreshTokenId),
                ClientId = clientid,
                Subject = context.Ticket.Identity.Name,
                IssuedUtc = DateTime.UtcNow,
                ExpiresUtc = DateTime.UtcNow.AddMinutes(Convert.ToDouble(refreshTokenLifeTime))
            };

            context.Ticket.Properties.IssuedUtc = token.IssuedUtc;
            context.Ticket.Properties.ExpiresUtc = token.ExpiresUtc;

            token.ProtectedTicket = context.SerializeTicket();

            var result = await _authService.AddRefreshToken(token);

            if (result)
            {
                context.SetToken(refreshTokenId);
            }
        }
Ejemplo n.º 2
0
 public async Task<bool> AddRefreshToken(RefreshToken token)
 {
     var existingToken = RepositoryFactory.Context.RefreshTokens.SingleOrDefault(r => r.Subject == token.Subject && r.ClientId == token.ClientId);
     if (existingToken != null)
     {
         var result = await RemoveRefreshToken(ModelMapper.Map<RefreshToken,RefreshTokenDao>(existingToken));
     }
     RepositoryFactory.Context.RefreshTokens.Add(ModelMapper.Map<RefreshTokenDao,RefreshToken>(token));
     return await RepositoryFactory.Context.SaveChangesAsync() > 0;
 }
Ejemplo n.º 3
0
 public async Task<bool> RemoveRefreshToken(RefreshToken refreshToken)
 {
     RepositoryFactory.Context.RefreshTokens.Remove(ModelMapper.Map<RefreshTokenDao,RefreshToken>(refreshToken));
     return await RepositoryFactory.Context.SaveChangesAsync() > 0;
 }