private ObjectToken GenerateToken(IUserAuthenticate user)
        {
            ClaimsIdentity identity = new ClaimsIdentity(
                new[] {
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString("N")),
                new Claim("AccessLogged", user.Access),
                new Claim("UserProfileLogged", user.UserProfile.GetHashCode().ToString()),
                new Claim("EnterpriseIdLogged", user.EnterpriseId.ToString())
            }
                );

            DateTime dataCriacao   = DateTime.Now;
            DateTime dataExpiracao = dataCriacao +
                                     TimeSpan.FromSeconds(_tokenConfigurations.Seconds);

            // Calcula o tempo máximo de validade do refresh token
            // (o mesmo será invalidado automaticamente pelo Redis)
            TimeSpan finalExpiration =
                TimeSpan.FromSeconds(_tokenConfigurations.FinalExpiration);

            var handler       = new JwtSecurityTokenHandler();
            var securityToken = handler.CreateToken(new SecurityTokenDescriptor
            {
                Issuer             = _tokenConfigurations.Issuer,
                Audience           = _tokenConfigurations.Audience,
                SigningCredentials = _signingConfigurations.SigningCredentials,
                Subject            = identity,
                NotBefore          = dataCriacao,
                Expires            = dataExpiracao
            });
            var token = handler.WriteToken(securityToken);

            var resultado = new ObjectToken()
            {
                authenticated = true,
                created       = dataCriacao.ToString("yyyy-MM-dd HH:mm:ss"),
                expiration    = dataExpiracao.ToString("yyyy-MM-dd HH:mm:ss"),
                accessToken   = token,
                refreshToken  = Guid.NewGuid().ToString().Replace("-", String.Empty),
                message       = "OK"
            };

            // Armazena o refresh token em cache através do Redis
            var refreshTokenData = new RefreshTokenData();

            refreshTokenData.RefreshToken = resultado.refreshToken;
            refreshTokenData.Access       = user.Access;

            DistributedCacheEntryOptions opcoesCache =
                new DistributedCacheEntryOptions();

            opcoesCache.SetAbsoluteExpiration(finalExpiration);
            opcoesCache.AbsoluteExpiration = DateTime.Now.Add(finalExpiration);
            opcoesCache.SlidingExpiration  = finalExpiration;
            _cache.SetString(resultado.refreshToken,
                             JsonConvert.SerializeObject(refreshTokenData),
                             opcoesCache);

            return(resultado);
        }
Exemplo n.º 2
0
 /// <summary>
 /// </summary>
 /// <param name="userAuthenticate"> </param>
 /// <exception cref="ArgumentNullException"></exception>
 public CasClient(IUserAuthenticate userAuthenticate)
 {
     if (userAuthenticate == null)
     {
         throw new ArgumentNullException("userAuthenticate");
     }
     UserAuthenticateManager.Provider = userAuthenticate;
 }
 public BasicAuthenticationHandler(
     IOptionsMonitor <AuthenticationSchemeOptions> options,
     ILoggerFactory logger,
     UrlEncoder encoder,
     ISystemClock clock,
     IUserAuthenticate userAuthenticate)
     : base(options, logger, encoder, clock)
 {
     _userAuthenticate = userAuthenticate;
 }
 public UserService(CashDBContext context,
                    ILogger <BackgroundService> logger,
                    IServiceScopeFactory scopeFactory,
                    IMailService mailService,
                    IUserAuthenticate userAuthenticate)
 {
     _context          = context;
     _logger           = logger;
     _scopeFactory     = scopeFactory;
     _mailService      = mailService;
     _userAuthenticate = userAuthenticate;
 }
Exemplo n.º 5
0
 public AccountController(IUserAuthenticate userAuthenticate)
 {
     _userAuthenticate = userAuthenticate;
 }
Exemplo n.º 6
0
 public AccountController()
 {
     userAuthenticate = new FormUserAuthenticate();
     this.casClient = new CasClient(userAuthenticate);
 }