public Token Autenticar(string usuario, string senha, ConfiguracoesToken configsToken, AssinaturaToken assinatura)
        {
            var usuarioBanco = ValidarUsuario(usuario, senha);

            if (usuarioBanco == null)
            {
                throw new RegraNegocioException(MensagensErro.UsuarioNaoLocalizado);
            }

            var dominio = new UsuarioDm(
                usuarioBanco.Id,
                usuarioBanco.Usuario,
                string.Empty,
                usuarioBanco.DataCriacao,
                usuarioBanco.Ativo,
                usuarioBanco.DataCadastroSenha,
                usuarioBanco.DiasRenovacao,
                null,
                null
                );

            if (dominio.PossuiSenhaExpirada())
            {
                throw new RegraNegocioException(MensagensErro.UsuarioSenhaExpirada);
            }

            if (!dominio.Ativo)
            {
                throw new RegraNegocioException(MensagensErro.UsuarioBloqueado);
            }

            ClaimsIdentity identity = new ClaimsIdentity(
                new[] {
                new Claim("Usuario", usuarioBanco.Id.ToString()),
                new Claim("Pessoa", usuarioBanco.Pessoa.Id.ToString()),
                new Claim("Grupo", usuarioBanco.Grupo.Id.ToString()),
            }
                );

            DateTime dataCriacao   = DateTime.Now;
            DateTime dataExpiracao = dataCriacao + TimeSpan.FromMinutes(configsToken.DuracaoMinutos);

            var handler    = new JwtSecurityTokenHandler();
            var dadosToken = handler.CreateToken(new SecurityTokenDescriptor
            {
                Issuer             = configsToken.Originador,
                SigningCredentials = assinatura.credenciais,
                Subject            = identity,
                NotBefore          = dataCriacao,
                Expires            = dataExpiracao
            });
            var token = handler.WriteToken(dadosToken);

            return(new Token(token, dataCriacao, dataExpiracao));
        }
 public RespostaApi <Token> Autenticar(string Usuario, string Senha, [FromServices] ConfiguracoesToken configsToken, [FromServices] AssinaturaToken assinatura) =>
 RespostaPadrao(_servico.Autenticar(Usuario, Senha, configsToken, assinatura));