public object Post(
            [FromBody] Usuario usuario,
            [FromServices] IAutenticacaoService autenticacaoService,
            [FromServices] SigningConfigurations signingConfigurations,
            [FromServices] TokenConfigurations tokenConfigurations)
        {
            Usuario usuarioBase = null;

            if (usuario != null && !string.IsNullOrWhiteSpace(usuario.Email))
            {
                try
                {
                    usuarioBase = autenticacaoService.AutenticarUsuario(usuario.Email, usuario.Senha);

                    if (usuarioBase != null)
                    {
                        if (Session.IsUsuarioLogado(usuario.Email))
                        {
                            return(new
                            {
                                authenticated = false,
                                message = "Usuário logado"
                            });
                        }

                        ClaimsIdentity identity = new ClaimsIdentity(
                            new GenericIdentity(usuario.Email, "Email"),
                            new[] {
                            new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString("N")),
                            new Claim(JwtRegisteredClaimNames.UniqueName, usuario.Email)
                        }
                            );

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

                        JwtSecurityTokenHandler handler       = new JwtSecurityTokenHandler();
                        SecurityToken           securityToken = handler.CreateToken(new SecurityTokenDescriptor
                        {
                            Issuer             = tokenConfigurations.Issuer,
                            Audience           = tokenConfigurations.Audience,
                            SigningCredentials = signingConfigurations.SigningCredentials,
                            Subject            = identity,
                            NotBefore          = dataCriacao,
                            Expires            = dataExpiracao
                        });
                        string token = handler.WriteToken(securityToken);

                        return(new
                        {
                            authenticated = true,
                            created = dataCriacao.ToString("yyyy-MM-dd HH:mm:ss"),
                            expiration = dataExpiracao.ToString("yyyy-MM-dd HH:mm:ss"),
                            token = token,
                            message = "OK",
                            usuario = usuarioBase
                        });
                    }
                    else
                    {
                        return(new
                        {
                            authenticated = false,
                            message = "Email ou senha inválidos"
                        });
                    }
                }
                catch (Exception)
                {
                    return(new { message = "Não foi possível validar o login" });
                }
            }
            return(new { message = "Email inválido" });
        }