Segurança em Aplicações J2EE no Ambiente JBoss

Tamanho: px
Começar a partir da página:

Download "Segurança em Aplicações J2EE no Ambiente JBoss"

Transcrição

1 Segurança em Aplicações J2EE no Ambiente JBoss Juliano Kuhn Soares Orientador: Vinicius Gadis Ribeiro Informática Centro Universitário Ritter dos Reis (Uniritter) Rua Orfanotrófio, 555 Alto Teresópolis Porto Alegre RS Brazil Abstract. Developing secure applications is a great challenge in a corporate environment. In a context of applications in "n" layers, the implementation of security requirements become more complex and important in the organization of the architecture of this system. By using the J2EE platform in some of these layers, the security control should be properly designed primarily for physical and logical independence between the layers. Each J2EE application server provides different ways in which this control is carried out. Thus, these methods have their advantages and disadvantages when considering the level of security required and provided to the operational systems. In this study, will be tested and demonstrated a way to get to program security using the JBoss server, both in the treatment of authentication and authorization. Resumo. Desenvolver aplicações seguras é um grande desafio em um ambiente corporativo. Em um contexto de aplicações em n camadas, a implementação de requisitos de segurança torna-se muito mais complexa e importante na organização da arquitetura deste sistema. Com a utilização da plataforma J2EE em algumas destas camadas, o controle de segurança deve ser projetado corretamente, principalmente, pela independência física e lógica entre as camadas. Cada servidor de aplicação J2EE disponibiliza diferentes formas para que este controle seja realizado. Assim, estes meios têm as suas vantagens e desvantagens, quando considerado o grau de segurança necessária, bem como a operacionalidade proporcionada aos sistemas. Neste estudo, será testado e demonstrado um meio de se programar a segurança utilizando o servidor JBOSS, tanto no tratamento da autenticação quanto na autorização. 1. Introdução Aplicações críticas cada vez mais são desenvolvidas empregando a linguagem Java. Dentre essas aplicações, destacam-se: Sistemas Hospitalares, ERPs(Enterprise Resource Planning), Financeiros e Bancários. Nestes sistemas, normalmente, a arquitetura proposta é baseada na utilização de recursos J2EE (Java 2 Platform, Enterprise Edition) em camadas o mais independente possível uma da outra. Quando se faz referência a J2EE, freqüentemente é lembrado o desenvolvimento de aplicações corporativas Web ou serviços executados em um servidor J2EE. Normalmente, uma das camadas, a de apresentação, pode ser WEB. Contudo, como se

2 busca sempre ter camadas independentes, pode-se usar como Frontend telas Swing, Flex, Mobile, WebService, entre outras. Nas aplicações J2EE, o requisito de desempenho, facilidade de manutenção e escalabilidade têm recebido os maiores esforços de arquitetos e analistas, sem maiores preocupações com a segurança, principalmente, quando o acesso está ocorrendo através de diferentes camadas e interfaces. Uma arquitetura comum é onde o Frontend irá invocar um serviço remoto EJB (Enterprise Java Beans) que executa as funções ou regras de negócio, sendo a única interface do Frontend com o servidor J2EE. Neste cenário, parte de uma mesma aplicação é executada em diferentes locais (Frontend, servidor, banco de dados). Isto dificulta o controle de segurança, abrindo muitas possibilidades de ocorrerem acessos indevidos. No servidor de aplicação JBoss (jboss ga), onde este trabalho tem o seu foco, existem várias maneiras de estar organizando a arquitetura, visando atender aos requisitos de segurança de determina aplicação. Além das estruturas prontas, é possível estender determinadas funcionalidades a fim de personalizar para uma aplicação específica, como o padrão proposto pelo JAAS (Java Authentication and Authorization Service). No presente trabalho, a camada de Frontend que será focada é desenvolvida com o framework Swing (J2SE Java 2 Platform, Standard Edition), por ser a que apresenta grande carência de definições de modelos de segurança. Nada impede que uma camada de apresentação WEB possa ser desenvolvida acessando aos mesmos serviços utilizados pelo Swing, sendo que os requisitos de segurança são exatamente os mesmos. O objetivo principal do presente trabalho é identificar as falhas de segurança, que determinadas arquiteturas, com a utilização de J2EE podem apresentar e, posteriormente, propor um modelo que ofereça desempenho e alguns dos serviços de segurança. Para tanto, é proposta uma arquitetura que tente mitigar as falhas apontadas, apresentando os resultados comparativos com relação a um modelo tradicional sem as devidas preocupações com segurança. Neste trabalho, inicialmente, serão elencadas as questões referente à como, normalmente, é tratado à segurança com J2EE elencando as principais falhas nas arquiteturas. Em seguida será apresentada uma solução para os problemas encontrados, bem como, a análise de desempenho e viabilidade da solução proposta. 2. Segurança J2EE Segundo Guerra (2008), na falta de tempo para a implementação de sistemas com o objetivo de atender o mais rápido possível às necessidades dos usuários, muitas vezes as funcionalidades de segurança são deixadas de lado. Os usuários dos sistemas não têm uma percepção real da segurança do sistema e, normalmente, só descobrirão a existência de uma falha quando o dano já tiver ocorrido. Este problema começa cedo no ciclo de desenvolvimento, pela má especificação dos requisitos de segurança, onde não são previstas possíveis situações de tentativas de uso não legítimo, com intenções maliciosas. Conforme contexto exposto neste trabalho existe um universo de diferentes aplicativos e serviços em ambientes distribuídos utilizando J2EE. Muitas vezes, esta distribuição é transparente ao usuário do sistema. Ter diferentes serviços colaborativos para uma solução de negócio é uma grande vantagem para atender requisitos de negócio

3 de grandes sistemas. Neste cenário, o que é necessário ser controlado como requisito de segurança? A resposta vai depender do tipo de informação que esta sendo tratada, dos elementos envolvidos, do ambiente de execução do sistema. Neste trabalho, os requisitos de segurança foram definidos conforme listados abaixo: - O aplicativo não pode ser acessado por usuários não autenticados; - Os usuários podem executar somente serviços para os quais foram autorizados; - O acesso dos usuários a determinados serviços devem ser gravados a fim de permitir a rastreabilidade do acesso; - O acesso deve ser controlado entre o Frontend e o servidor; - No Frontend não pode existir implementação que trate de regras de acesso e de operações dos serviços, somente as interfaces de acesso devem estar disponíveis. Segundo PANDA (2003), segurança para uma aplicação envolve duas funções primárias: autenticação e autorização. A autenticação é responsável por verificar a identidade do usuário. Ao se autenticar, o usuário prova para o sistema quem realmente é utilizando recursos de senhas, biometria e/ou certificado digital. Já a autorização é responsável por determinar, após o usuário ter sido autenticado, as permissões de acesso a um recurso particular ou tarefa. Nos sistemas abertos, um usuário autenticado poderia executar qualquer tarefa, mas isso não faz sentido em um ambiente onde é necessário controlar que operações determinadas pessoas podem realizar. Conforme PANDA (2003), embora existam alguns recursos em um sistema que é acessível a todos, a maioria dos recursos deveria ser acessada somente por um grupo limitado de pessoas. A autenticação e autorização são muito ligadas a outros conceitos de segurança como usuários, grupos e papéis. O modelo de segurança J2EE mais conhecido é RBAC (Role Based Access Control), onde as permissões são atribuídas para papéis, os quais são atribuídos para os usuários. Um usuário pode possuir um ou mais papéis, que podem possuir uma ou mais permissões. Os papéis são mantidos na sessão do usuário junto ao servidor, criada no momento do processo de autenticação. Algumas variações do RBAC permitem controlar hierarquia de papéis onde um papel pode ser criado a partir de outro. As Figuras 1 e 2 ilustram a integração entre os diferentes conceitos de segurança. Figura 1 - RBAC Padrão Figura 2 - RBAC com contexto O modelo ABAC (Attribute Based Access Control) serve para situações nas quais os requisitos de controle de acesso são mais complexos utilizando regras de negócio específicas. Exemplo de uso do modelo ABAC é permitir que somente o titular da conta bancária possa consultar o seu saldo. Em uma aplicação que utiliza EJB, o controle de acesso por padrão é feito através da permissão ou negação para invocação de determinados métodos de serviços a determinados grupos de usuários ou papéis.

4 Quanto menor a quantidade de processamento desnecessário ou não focado a atender aos requisitos de negócio, mais otimizada é a aplicação. Quando se programam requisitos de segurança, é importante estar consciente de que irá ocorrer processamento auxiliar para fazer todas as verificações deste requisito. É importante identificar, através de testes e simulações, qual é o impacto no desempenho deste processamento, verificando se isso inviabiliza a utilização da aplicação com estes requisitos de segurança. O processamento adicional deve ser justificado, conforme os requisitos de segurança para o sistema. Muitas vezes, ocorre perda de processamento, mas se ganha em integridade e segurança da informação que pode ser primordial para o processo. Outro impacto no desempenho está vinculado ao aumento do tráfego na rede com processos de criptografia. Atualmente, bons algoritmos já conseguem minimizar tal situação compactando a informação a ser trafegada, mas é importante, sempre levar em consideração que uma perda no desempenho pode acontecer. Os principais problemas de segurança encontrados nas arquiteturas J2EE estão relacionados à arquitetura utilizada. Muitos arquitetos e analistas de sistema adotam a segurança baseada na obscuridade, assumindo que caso um recurso estiver escondido, não poderá ser acessado. Tanto em aplicações Web quanto Desktop, é escondidos elementos da interface como botões ou links, exibindo os mesmos somente a pessoas autorizadas. Nada impede que o usuário acesse o link ou o método desenvolvido e não mostrado no caso da web, digitando o endereço no Browser e, no caso de Desktop, criando uma aplicação que importe o método implantado no programa original e efetue a chamada indevida. É importante lembrar que um bytecode Java pode ser facilmente decompilado e se verificar, no código fonte, a forma de estar chamando o serviço remoto. Tratar o controle de acesso como uma característica simplesmente funcional deixando, por exemplo, um EJB ou serviço desprotegido, é outro problema verificado em muitas aplicações. Da mesma forma como o problema anterior, é tratado na aplicação (normalmente no lado cliente) o que pode ou não ser feito. Tendo acesso à interface do EJB, que sempre é distribuído junto com o cliente, é simples desenvolver uma aplicação que faça uso do serviço e execute o que se quiser, através de uma chamada remota. Esta característica também é encontrada em aplicações Web, onde a segurança é tratada na camada de apresentação. Alguns desenvolvedores criam um EJB de entrada protegido para efetuar o Login, mas não restringe o acesso aos demais. Como explicado anteriormente, o controle de acesso é feito para os métodos públicos, onde são controladas as regras de permissão para que possam ou não ser chamados pelos usuários clientes. Com base neste recurso, outro grande problema é colocar em um único método diferentes operações, como por exemplo, operações de CRUD (Create Retrieve Update Delete), onde a ação a ser realizada é um parâmetro do método. Neste caso, não se tem como restringir uma determinada ação do método, visto que esta permissão é feita de forma global para todo o método. Exemplo: gravarcliente(tipooperacao, Cliente), onde o TipoOperacao é C Criar, R Ler, U Atualizar, D Deletar. Neste caso não será possível restringir algumas das operações. Outro grande problema é a autenticação ser realizada pela aplicação e não pelo usuário. Neste caso, o serviço (EJB) está protegido, mas quem irá se autenticar será um usuário do sistema único para todos os serviços. Normalmente, a referência a este usuário está em um arquivo texto ou em um arquivo.jar. Muito facilmente, caso se tenha acesso ao arquivo, identificar o usuário, ou se pode utilizar o.jar (lib) para acessar

5 os EJBs, tendo toda a segurança comprometida. Além de que os papéis deverão ser todos autorizados para este usuário, o que permite a irrestrita execução de qualquer serviço. Quando se fica muito preso nos mecanismos propostos pelo J2EE, pode-se esquecer de que é necessário levar em consideração os dados dos parâmetros que estão sendo enviados causando problemas nas regras de negócio. Por exemplo, em uma página WEB são passados os parâmetros referentes à determinada consulta: facilmente algum usuário pode alterar estes parâmetros para buscar informações indevidas. Classes de negócio (implementação do EJB) distribuídas junto com as interfaces são também um grande problema, principalmente, para a integridade das informações. Como um bytecode Java pode ser decompilado, o usuário poderá ter acesso a regras de negócio e, de posse destas informações, tentarem executar algum ataque. Os problemas de segurança em aplicações J2EE estão muito relacionados à falta de conhecimento e a falha na arquitetura dos sistemas. A aplicação somente será segura, na medida em que todos os serviços externos tenham o acesso controlado de forma a evitar vulnerabilidades para um possível uso indevido. Não estão aqui descritos problemas de segurança com a rede, alta disponibilidade e infra-estrutura. É importante que estes requisitos já estejam devidamente implantados a fim de garantir a segurança da arquitetura a ser proposta, visto que de nada adianta implantar no sistema mecanismos de segurança se algum usuário tem acesso à configuração do servidor. É considerado, para o presente trabalho, que a rede do ambiente onde a aplicação J2EE é utilizada é segura e mantém mecanismos de criptografia padrões de mercado, bem como problemas de disponibilidade do servidor estejam devidamente tratados não fazendo parte do escopo do trabalho. Com o servidor de aplicação JBoss é possível implementar requisitos de segurança utilizando o JAAS que é um dos padrões J2EE para tratamento de segurança. O uso do JAAS pode atender a maioria dos requisitos de segurança que foram elencados, com exceção de alterações de permissão para determinado serviço sem alteração de código fonte, xml e reiniciar o serviço. No quadro que segue são apresentados os requisitos atendidos pelo JAAS. Requisitos Atende Observações Autenticação do Usuário Sim Possibilita consultar o usuário em arquivo, banco de dados, LDAP e interação com outros sistemas Definição de permissão para determinado usuário executar método Verificar alteração de perfil de usuário Controle da sessão da autenticação junto ao servidor Facilidade de Manutenção de regras para acesso aos serviços e perfis de Parcial Parcial Possibilita definir no código ou através de xml quais são os perfis que podem executar determinado método. Se a regra deve ser alterado o serviço deve ser parado o código ou xml deve ser alterado. Ao efetuar a autenticação os dados do perfil podem ser carregados. Caso o perfil sofra alteração para um usuário, o mesmo terá que ser autenticado novamente para que sejam utilizados os novos parâmetros. Pode ser configurado para que o perfil possa ser atualizado através de intervalos de tempo o que pode onerar bastante o serviço. Sim Mantém os dados do usuário autenticado e disponibiliza para o uso a qualquer tempo Não A maioria das alterações não será refletida no sistema sem o reinicio do serviço ou nova autenticação do

6 usuários usuário. Quadro 1 - Atendimento de Requisitos pelo JAAS 3. Metodologia A solução para atender aos requisitos de segurança elencados é baseada na utilização dos componentes conforme a Figura 3 ilustra. Figura 3 - Modelo de Arquitetura Proposta Na arquitetura de alto nível acima, a função de cada componente é a seguinte: 1 Usuário da Aplicação é o sujeito que operacionaliza as funções no sistema e que tem o conhecimento das credenciais de autenticação; 2 Estação de trabalho é a máquina utilizada pelo usuário para acessar os recursos do servidor. Na máquina estão os arquivos binários do Frontend da aplicação bem como a chave privada de criptografia da senha do usuário; 3 Servidor da Aplicação é o servidor onde esta sendo executado o Jboss 4.2.3GA; 4 Jboss EJB é o serviço no servidor onde estão sendo executadas as rotinas de negócio e de tratamento de segurança. Os serviços EJB utilizam, para o processo de autenticação e autorização a Meta Aplicação; 5 Dados é o banco de dados responsável por persistir os dados relativos aos serviços de negócio; 6 Estação de trabalho Administrador é a máquina de uso exclusivo do administrador de segurança; 7 Meta Aplicação é uma aplicação com funcionalidades exclusivas para administrar os requisitos de segurança. Esta aplicação somente deve ser acessada pelo administrador do sistema; 8 Dados é o banco de dados auxiliar e de uso exclusivo da Meta Aplicação responsável por persistir dados relativos à segurança. Para os requisitos em que o JAAS não atende ou atende parcialmente foi desenvolvido uma aplicação de administração denominada Meta Aplicação. Esta aplicação tem a função exclusiva de permitir a manutenção de parâmetros de usuários, perfis, permissões que será utilizado pela aplicação de negócio. As alterações efetuadas nesta aplicação deverão ser refletidas de forma automática na aplicação. Para isso foi definido o banco de dados com a estrutura conforme ilustrado na Figura 4 :

7 Figura 4 - Modelo de Dados da Meta Aplicação usuario tabela onde são cadastrados os usuários que podem utilizar o sistema. Nesta tabela são gravados também os dados referentes à chave RSA pública do usuário; perfil tabela onde são gravados os diferentes perfis definidos para a aplicação; servico tabela onde são definidos os serviços do sistema; perfil_servico tabela onde são relacionados para um determinado serviço quais são os perfis autorizados para execução; perfil_usuario tabela onde são definidos para um determinado usuário quais são os perfis que o mesmo pertence; registro registro dos Logs de acesso aos serviços. A Meta Aplicação acessa este banco de dados, onde é possível efetuar a manutenção e consultar todas as tabelas. Abaixo seguem ilustradas nas telas do sistema (Figura 5, Figura 6, Figura 7 e Figura 8):

8 Figura 5 - Cadastro de Usuário Figura 6 - Cadastro de Perfis Na Figura 5 é ilustrada a tela que possibilita as manutenções e operações necessárias para o usuário do sistema bem como as relações com o Perfil. Na Figura 6 é ilustrada tela onde é possível efetuar todas as operações necessárias na manutenção do perfil bem como as suas relações com Usuários e Serviços. Figura 7 - Cadastro de Serviços Figura 8 - Consulta de Log Na Figura 7 é ilustrada a tela onde é possível estar efetuando as manutenções nos serviços, bem como a sua relação com o cadastro de Perfil. Quando um serviço não está cadastrado, não é autorizado o seu acesso, sendo que nesta situação ele é cadastrado automaticamente na Meta Aplicação sendo responsabilidade do administrador relacionar os perfis que são autorizados. Na Figura 8 é ilustrada a tela onde as consultas de Logs de acesso a aplicação podem ser consultados. Na Meta Aplicação, somente o usuário admin tem acesso. Caso o usuário admin não esteja cadastrado a senha inicial a ser utilizada é a1d2m3i4n5. O usuário e a senha são informados ao iniciar a Meta Aplicação. A Meta Aplicação é desenvolvida em Java utilizando o Framework Swing acessando os dados utilizando JPA com Hibernate. Visando facilitar a integração com outros sistemas foram separados em diferentes projetos os seguintes grupos de fontes: app-meta-dominio projeto que contém as fontes de entity, que são as classes Java que representam os domínios da aplicação. Para cada tabela existente no banco de dados existe uma classe correspondente;

9 app-meta-app projeto que contém as rotinas de acesso ao banco de dados, bem como as telas e rotinas operacionais do sistema. Este projeto deve utilizar o projeto app-meta-dominio através da utilização de seu jar. Para utilizar os dados mantidos através da Meta Aplicação e fazer com que os serviços possam estar verificando de forma correta foi implementado um framework chamado de app-j2ee-util-servidor. Neste projeto estão definidas as rotinas para validação de Autenticação e de Autorização. Além das classes de acesso aos dados que foram implementadas utilizando os conceitos de JPA (Java Persistence API) as classes Autenticacao.java e a classe ValidaAutorizacao.java são as classes responsáveis por estarem fazendo o processo de Autenticação de Autorização respectivamente. A classe Autenticacao.java utiliza o padrão JAAS estendendo a classe do JBoss AbstractServerLoginModule.java onde os principais métodos foram sobrescritos a fim de o processo pudesse ser executado de acordo com a necessidade. Quando um usuário é cadastrado na Meta Aplicação ou a sua senha é alterada é gerado uma chave RSA (RSA Data Security, Inc.) privada e outra pública. A chave pública é mantida na Meta Aplicação e a chave privada é gravada em um arquivo binário que é disponibilizado ao usuário. Ao acessar a aplicação, o usuário informa seu login e sua senha. A aplicação cliente, com o uso da chave privada, criptografa a senha e tenta acessar o serviço do servidor. Como o usuário ainda não está autenticado, a classe Autenticacao.java é chamada pelo servidor que delega a mesma o processo de autorização. Esta classe consulta na Meta Aplicação os dados de senha do usuário e os dados da chave pública. Com a chave pública, a senha enviada pelo cliente é descriptografada. Como no banco de dados a senha é gravada utilizando MD5 implementado na API Java, o mesmo algoritmo é aplicado à senha descriptografada. O resultado é verificado com o que veio do banco de dados, caso sejam iguais o usuário é autorizado. A classe ValidaAutorizacao.java é uma classe que implementa um interceptor que é configurado na implementação dos serviços. Esta classe é responsável de a cada chamada a um determinado serviço, efetuar a autorização e registrar o Log do acesso ao serviço. No processo de autorização é verificado qual foi o método chamado, bem como o usuário do sistema que esta solicitando a execução. Com esta informação, é buscado, na Meta Aplicação, o cadastro do serviço. Caso o serviço ainda não esteja cadastrado, o mesmo é cadastrado na Meta Aplicação e a execução do mesmo é negada. Quando o serviço já está cadastrado, são verificados quais perfis têm autorização para a sua execução e se o usuário faz parte de algum destes perfis. Em caso afirmativo, faz a liberação da execução do método. Se o usuário não tem permissão para a execução do serviço é gerado um erro de LoginException negando a sua execução retornando ao cliente a mensagem Usuário sem permissão para executar esta tarefa.. Para a utilização da implementação no controle de segurança da aplicação, no EJB devem ser efetuadas as Quadro 2 - Anotações para Serviço Seguro A define qual é a política de segurança que o servidor utilizará para a classe. No servidor deve ser criado no arquivo login-config.xml na pasta conf a política a ser utilizada. Nesta configuração é definida qual é a classe que o servidor irá delegar para estar realizando o processo de autenticação.

10 application-policy name="acessoj2eeseguro"> <authentication> <login-module code="br.com.juliano.app.seguranca.autenticacao" flag="required"/> </authentication> </application-policy> Quadro 3 - Definição de Politica de Segurança no JBoss A é utilizada para informar ao servidor que a implementação do serviço EJB deve utilizar a classe ValidaAutorizacao como interceptor e que fará o correto processo de autorização. Todo bytecode Java pode ser decompilado o que pode ser um fator importante para a manutenção da segurança, visto que, qualquer usuário poderia de posse dos códigos de negócio e de validação de segurança tentar algum ataque. Para evitar isso, a implementação da aplicação deve seguir algumas segregações, onde são separados tipos de códigos que poderão ser utilizados pelos clientes, servidor ou ambos. O Quadro 2 exemplifica as dependências entre os artefatos desenvolvidos em diferentes projetos: Componente Cliente Servidor Conteúdo app-meta-dominio Não Sim Classes de domínio da meta aplicação app-meta-app Não Não Aplicação de administração de segurança app-j2ee-util-servidor Não Sim Implementação de validação de autenticação e autorização app-j2ee-dominio Sim Sim Classes de domínio da aplicação de validação app-j2ee-iface Sim Sim Classes que definem as interfaces dos métodos que poderão ser chamados pelos Clientes e que estão implementados no servidor app-j2ee-seguro-ejb Não Sim Implementação das interfaces que foram definidas no pacote app-j2ee-iface. Neste pacote estão definidas as regras de negócio bem como as chamadas ao banco de dados para os requisitos de negócio do sistema app-j2ee-util-cliente Sim Não Funções utilitárias para a aplicação cliente. Neste pacote também são implementadas as classes responsáveis por fazer o processo de chamada dos métodos remotos (locate); app-cliente Sim Não Implementação das telas da aplicação cliente Quadro 4 - Dependências de Projetos Com as dependências expostas acima, em nenhum momento, o cliente terá acesso aos códigos de negócio e de validação de segurança, bem como o servidor não precisa conhecer os códigos que são utilizados para chamar os seus serviços. A classe do sistema responsável por estar efetuando a autenticação é Autenticacao.java que é extensão da classe AbstractServerLoginModule.java já implementada no JBoss. O método login é chamado para ser efetuado o processo de validação do usuário: public boolean login() throws LoginException { /*Caso o login já exista*/ if (super.login() == true) { Object username = sharedstate.get("javax.security.auth.login.name"); if (username instanceof Principal) { principal = (Principal) username; else { String name = username.tostring(); principal = new SimplePrincipal(name);

11 Object password = sharedstate.get("javax.security.auth.login.password"); if (password instanceof char[]) { credential = (char[]) password; else if (password!= null) { String tmp = password.tostring(); credential = tmp.tochararray(); return true; super.loginok = false; /*Metodo que busca o usuário e a senha*/ List<byte[]> info = getusuariosenha(); String username = new String(info.get(0)); byte[] password = info.get(1); if (username == null && password == null) { return false; if (principal == null) { principal = new SimplePrincipal(username); /**Buscar o cadastro do usuario*/ Usuario usuario = null; try { String sql = " select * from usuario u where u.nm_login =? "; List<Object> p = new ArrayList<Object>(); p.add(username); List<Map> rs = dao.sqlquery(sql, p); if (rs.size()!= 1) { return false; usuario = dao.carrega((integer) rs.get(0).get("cd_usuario"), Usuario.class); catch (ExceptionDao ex) { Logger.getLogger(Autenticacao.class.getName()).log(Level.SEVERE, null, ex); return false; /**Descriptografa a senha utilizando a chave público do usuario*/ try { PublicKey pk = montarchavepublica( new BigInteger(usuario.getPubModus()), new BigInteger(usuario.getPubExpo())); Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); cipher.init(cipher.decrypt_mode, pk); byte[] senhadecrip = cipher.dofinal(password); password = senhadecrip; catch (Exception ex) { Logger.getLogger(Autenticacao.class.getName()).log(Level.SEVERE, null, ex); /**A senha descriptografa é aplicad MD5 para validar com o banco*/ String pass = null; try { pass = CriptoPassword.criptografaSenha(new String(password)); catch (NoSuchAlgorithmException ex) { Logger.getLogger(Autenticacao.class.getName()).log(Level.SEVERE, null, ex); String senhaesperada = usuario.getdssenha(); if (validasenha(pass, senhaesperada) == false) { throw new FailedLoginException("Password Incorrect/Password Required");

12 /** * Adiciona a autenticação ao contexto */ if (getusefirstpass() == true) { sharedstate.put("javax.security.auth.login.name", username); sharedstate.put("javax.security.auth.login.password", credential); super.loginok = true; return true; Quadro 5 - Processo de Autenticação O método que compara as senhas é o validasenha: protected boolean validasenha(string senhainformada, String senhaesperada) { if (senhainformada == null senhaesperada == null) { return false; return senhainformada.equals(senhaesperada); Quadro 6 - Processo de Comparação da Senha Após a recuperação dos dados da chave pública RSA do usuário é necessário transformar para um objeto Java do tipo PublicKey, sendo para isso utilizado o método montarchavepublica conforme abaixo: /** * Função que monta, a partir dos dados a chave pública RSA * m = modulus * e = publicexponent */ private PublicKey montarchavepublica(biginteger m, BigInteger e) throws Exception { RSAPublicKeySpec keyspec = new RSAPublicKeySpec(m, e); KeyFactory fact = KeyFactory.getInstance("RSA"); PublicKey pubkey = fact.generatepublic(keyspec); return pubkey; Quadro 7 - Processo de Montage da Chave Pública Outros métodos são utilizados para o processo de Autenticação, mas, os elencados acima são os essenciais. A classe ValidaAutorizacao.java é a responsável por estar realizando a cada chamada de serviço a validação da autorização do mesmo conforme regras cadastradas na Meta Aplicação. Nesta classe, inicialmente é necessário fazer as referências aos recursos utilizados conforme código private javax.ejb.sessioncontext ctxejb; private DaoGenerico dao = new DaoGenericoImpl(TipoEMF.Meta); private static Boolean autoriza = null; private static Boolean log = null; Quadro 8 - Utilização dos Recursos do Servidor O método valida é chamado a cada execução de método público dos public Object valida(invocationcontext ctx) throws Exception { String servico = ctx.getmethod().getname(); String usuario = ctxejb.getcallerprincipal().getname();

13 carregaparametro(servico, usuario); if (autoriza.booleanvalue() == true) { Servico s = getservico(servico); if (s == null) { gravarlog(servico, usuario, "SERVIÇO NÃO CADASTRADO", 0); s = vernovoservico(servico); gravarlog(servico, usuario, "CHAMADA", 0); if (verpermissao(usuario, servico) == false) { gravarlog(servico, usuario, "TENTATIVA DE USO SEM PERMISSÃO", 1); throw new LoginException("Usuário sem permissão para executar esta tarefa."); return ctx.proceed(); Quadro 9 - Método que Valida a Autorização do Serviço O método verpermissao verifica se o usuário tem permissão para executar determinado serviço consultando a Meta Aplicação. private boolean verpermissao(string usuario, String metodo) { if (autoriza.booleanvalue() == true) { try { String sql = " select count(*) as qt " + " from usuario u, perfil_usuario pu, servico s, perfil_servico pf " + " where u.nm_login =? " + " and pu.cd_usuario = u.cd_usuario " + " and s.ds_metodo =? " + " and pf.cd_servico = s.cd_servico " + " and pf.cd_perfil = pu.cd_perfil "; List<Object> p = new ArrayList<Object>(); p.add(usuario); p.add(metodo); List<Map> rs = this.dao.sqlquery(sql, p); if (rs.size() == 0) { return false; BigInteger qt = (BigInteger) rs.get(0).get("qt"); if (qt.intvalue() > 0) { return true; else { return false; catch (ExceptionDao ex) { Logger.getLogger(ValidaAutorizacao.class.getName()).log(Level.SEVERE, null, ex); return false; else { return true; Quadro 10 - Verifica as permissões na Meta Aplicação O uso desta classe é exemplificado no código abaixo onde são demostradas as anotações necessárias na implementação de um EJB de nome

14 Quadro 11 - Exemplo de Serviço Seguro Com as anotações acima todos os métodos públicos implementados no EJB, é um serviço devidamente monitorado pela classe ValidaAutorizacao.java. Outra classe de grande importância para este trabalho é a utilizada para fazer o processo de chamada remota do serviço pelo Frontend. A classe ConfigContextoEJB.java é responsável por configurar o contexto para acesso, bem como carregar a chave privada, criptografar a senha. Abaixo parte do código que recupera a chave privada do usuário. private static PrivateKey lerchaveprivadaarquivo(string arquivochave) throws IOException { InputStream in = new FileInputStream(arquivoChave); ObjectInputStream oin = new ObjectInputStream(new BufferedInputStream(in)); try { BigInteger m = (BigInteger) oin.readobject(); BigInteger e = (BigInteger) oin.readobject(); RSAPrivateKeySpec keyspec = new RSAPrivateKeySpec(m, e); KeyFactory fact = KeyFactory.getInstance("RSA"); PrivateKey privkey = fact.generateprivate(keyspec); return privkey; catch (Exception e) { throw new RuntimeException("Erro ao ler a chave privada: ", e); finally { oin.close(); Quadro 12 - Método que Carrega a Chave Privada O método getcontexto() configura as informações necessárias de endereço do servidor, usuário e senha. Neste método é feita a criptografia da senha digitada utilizando a chave privada. public static Context getcontexto() { if (contexto == null) { try { File arquivo = new File("app-cliente.properties"); FileInputStream stream = new FileInputStream(arquivo); Properties properties = new Properties(); properties.load(stream); prefix = properties.getproperty("app-cliente.prefix", "app-j2ee-seguro/"); sufix = properties.getproperty("app-cliente.sufix", "/remote"); Properties propertiesejb = new Properties(); propertiesejb.put("java.naming.factory.initial", properties.getproperty("java.naming.factory.initial")); propertiesejb.put("java.naming.factory.url.pkgs", properties.getproperty("java.naming.factory.url.pkgs")); propertiesejb.put("java.naming.provider.url", properties.getproperty("java.naming.provider.url")); /*Criptografar usuário e senha utilizando a chave privada*/ PrivateKey chaveprivada = lerchaveprivadaarquivo(usuario + "priv.key"); Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); cipher.init(cipher.encrypt_mode, chaveprivada); byte[] senhacrip = cipher.dofinal(senha.getbytes()); propertiesejb.put(context.security_principal, usuario); char[] senhaenviar = new char[senhacrip.length]; for (int i= 0; i < senhacrip.length; i++){ senhaenviar[i] = (char) senhacrip[i];

15 propertiesejb.put(context.security_credentials, senhaenviar); contexto = new InitialContext(propertiesEJB); catch (Exception ex) { System.out.println("Erro ao configurar o contexto para acesso aos serviços remotos.\n" + ex.getmessage()); return contexto; Quadro 13 - Método do Cliente que Envia Usuário e Senha Para validar as diretivas e implementações de segurança, foi implementada uma aplicação que disponibiliza aos usuários funcionalidades básicas de um cadastro de Pessoas. Esta aplicação faz a vez de uma aplicação cliente buscando serviços remotos para a sua utilização. O diagrama abaixo demonstra as relações de dados utilizados por esta aplicação. Figura 9 - Modelo da Aplicação de Validação Nesta aplicação, o usuário inicialmente fará o processo de Autorização, conforme explicados anteriormente e a cada operação nas telas serão chamados os serviços remotos que são validados quanto à autorização pelos processos descritos anteriormente. A Figura 10 ilustra o cadastro de pessoas no mesmo padrão das telas utilizadas pela Meta Aplicação. Na tela do cadastro de pessoas, Figura 11, é apresentada uma pessoa cadastrada. Na tela ilustrada pela Figura 10, é possível consultar as pessoas cadastradas chamando um serviço remoto de consulta, bem como efetuar a manutenção dos dados da Pessoa chamando serviços de alteração, exclusão entre outros. Estes serviços têm a permissão de acesso controlado pelo ValidaAutorizacao, sendo verificado na base da Meta Aplicação a cada execução do serviço.

16 Figura 10 - Tela de Consulta de Pessoas A manutenção dos dados da Pessoa é realizada na tela conforme ilustrado pela Figura 11: Figura 11 - Tela de Manutenção de Pessoas Pode-se ver que nesta tela existe a dependência de dados como Cidade, Grupo, Formação, Profissão que são cadastrados nas outras telas da aplicação que seguem o mesmo padrão e as mesmas validações. 4. Análise dos Resultados Conforme já explicado neste artigo, existe um custo de processamento associado aos controles de segurança. Este custo é relativo à busca de informações na Meta Aplicação, bem como a gravação de logs de erro e acesso. Para analisar qual é o impacto deste custo para um possível processamento, foram propostos quatro cenários, os quais foram executados nas mesmas condições na mesma máquina, um a cada vez. Em todos os cenários o processo de autenticação estava sendo utilizado. Como este processo (autenticação) é executado somente no início do sistema, não existem grandes implicações com relação ao desempenho.

17 No primeiro cenário foram habilitados os recursos de autorização e de log. No segundo cenário foram desabilitados os recursos de autorização e log. No terceiro cenário, foram habilitados somente os recursos de log. E no quarto cenário, foram habilitados os recursos de autorização. Abaixo segue quadro com os resultados com relação ao tempo de cadastro, alteração, consulta e exclusão de cidades: Cenário Autent. Autoriz. Log Tempo (mil seg) Tempo (seg) Tempo (minuto) Ganho em relação ao cenário um em % 1 Sim Sim Sim ,800 15,213-2 Sim Não Não ,159 6,736 55,723 3 Sim Não Sim ,873 8,031 47,209 4 Sim Sim Não ,179 9,570 37,097 Quadro 14 - Análise de Desempenho dos Cenários Tempo (minutos) Tempo Cenário 1 Cenário 2 Cenário 3 Cenário 4 Cenários Figura 12: Comparação de Desempenho dos Cenários 5. Conclusão e Sugestões Após realizar a implementação da solução proposta foi possível concluir que analisar e propor soluções de segurança envolve certa complexidade pelo grande número de variáveis envolvidas. Entender o funcionamento de tecnologias é um dos fatores que mais demandam tempo no processo de analise e desenvolvimento de requisitos de segurança. A baixa qualidade de documentações destas tecnologias é um fator que também dificulta o estudo, levando a necessidade de efetuar testes, simulações para

18 chegar a um denominador aceitável. Este deve ser o fator mais relevante que leva a muitos projetos não se ter a devida preocupação na implementação destes requisitos. Neste trabalho, o foco foi na solução de segurança no que tange as questões de Autenticação e Autorização para a camada de serviços desenvolvida com EJB. Em J2EE existem outras camadas onde também é necessário realizar este tratamento como Banco de Dados, WebService, JMS que não foram tratados e ficam como sugestão para que futuros trabalhos possam ser focados nestes serviços e tecnologias. A otimização do processo de verificação das permissões também poderá ser foco de estudo o que diminuiria o tempo de perda com o processamento do processo de autorização. Utilizar recursos de segurança de forma efetiva como proposta neste trabalho implica utilização de mais recursos de processamento, no caso aproximadamente 55%. Isso vai depender muito do tipo de aplicação e do tipo de processo que se esta executando, pois quanto maior o tempo necessário para o processamento do negócio, menor será a perda de desempenho com as verificações de segurança visto que este processamento sempre será o mesmo. Desta forma, é necessário analisar a real importância destes requisitos na aplicação a fim de não comprometer o negócio com os requisitos de segurança. Referencias COSTA, Luíz. Java Avançado; Rio de Janeiro: Editora Ciência Moderna, DEITEL, Deitel. Java Como Programar 6 ed; São Paulo: Person Prentice Hall, FLEURY, Scott Starck; Norman Richards; JBoss Inc., Marc. JBoss 4.0 Guia Oficial; Rio de Janeiro: Alta Book, OLIVEIRA, Eric. Conhecendo a Plataforma J2EE. Disponível em: <http://www.linhadecodigo.com.br/artigoimpressao.aspx?id=333>. Acesso em 16 mai PANDA, Reza Rahman; Dereck Lane; Debu. EJB3 em Ação; Rio de Janeiro: Alta Book, SOUZA, Eduardo. Os Sete Pecados do Controle de Acesso para Aplicações Java EE. Mundo Java. Curitiba: ano V, n 28, p , SUN. Java. Disponível em: <http://java.sun.com//>. Acesso em 16 maio 2009.

Autenticação e Controle de Acesso

Autenticação e Controle de Acesso J530 - Enterprise JavaBeans Autenticação e Controle de Acesso Helder da Rocha (helder@acm.org) argonavis.com.br 1 Controle de acesso a autenticação A especificação EJB define controle de acesso a métodos

Leia mais

Segurança em Java. João Carlos Pinheiro. jcpinheiro@cefet-ma.br. Versão: 1.1 Última Atualização: Agosto/2005

Segurança em Java. João Carlos Pinheiro. jcpinheiro@cefet-ma.br. Versão: 1.1 Última Atualização: Agosto/2005 Segurança em Java João Carlos Pinheiro jcpinheiro@cefet-ma.br Versão: 1.1 Última Atualização: Agosto/2005 1 Objetivos Apresentar uma introdução ao suporte fornecido pela API Java para a criptografia Utilizar

Leia mais

Lidando de Forma Eficiente com Validações Locais de Objetos

Lidando de Forma Eficiente com Validações Locais de Objetos Lidando de Forma Eficiente com Validações Locais de Objetos Aprenda a construir um mini-framework para validar objetos locais sem afetar a complexidade do código. Autor Paulo César M. N. A. Coutinho (pcmnac@gmail.com):

Leia mais

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse

Como criar um EJB. Criando um projeto EJB com um cliente WEB no Eclipse Como criar um EJB Criando um projeto EJB com um cliente WEB no Eclipse Gabriel Novais Amorim Abril/2014 Este tutorial apresenta o passo a passo para se criar um projeto EJB no Eclipse com um cliente web

Leia mais

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira ENTERPRISE JAVABEANS 3 Msc. Daniele Carvalho Oliveira Apostila Servlets e JSP www.argonavis.com.br/cursos/java/j550/index.html INTRODUÇÃO Introdução Enterprise JavaBeans é um padrão de modelo de componentes

Leia mais

Autenticação e Autorização

Autenticação e Autorização Autenticação e Autorização Introdução A segurança em aplicações corporativas está relacionada a diversos aspectos, tais como: autenticação, autorização e auditoria. A autenticação identifica quem acessa

Leia mais

Aula Prática - Criptografia. MD5 hash de 128 bits = 16 bytes muito utilizado por softwares com protocolo P2P, verificação de integridade e logins.

Aula Prática - Criptografia. MD5 hash de 128 bits = 16 bytes muito utilizado por softwares com protocolo P2P, verificação de integridade e logins. Redes de Computadores Unioeste Prof. Luiz Antonio 1. Algoritmos MD5 e SHA-1 Aula Prática - Criptografia MD5 hash de 128 bits = 16 bytes muito utilizado por softwares com protocolo P2P, verificação de integridade

Leia mais

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas Linguagem de Programação JAVA Professora Michelle Nery Nomeclaturas Conteúdo Programático Nomeclaturas JDK JRE JEE JSE JME JVM Toolkits Swing AWT/SWT JDBC EJB JNI JSP Conteúdo Programático Nomenclatures

Leia mais

Manual do Desenvolvedor Criptografia de Arquivos do WebTA

Manual do Desenvolvedor Criptografia de Arquivos do WebTA Manual do Desenvolvedor Criptografia de Arquivos do WebTA Versão 1.4 Índice 1. Objetivo..3 2. Processo..3 3. API de Criptografia - Biblioteca Java..4 3.1 WEBTACryptoUtil..4 3.1.1 decodekeyfile..4 3.1.2

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 5 Servidores de Aplicação

Leia mais

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA

AULA APLICAÇÕES PARA WEB SESSÕES E LOGIN E SENHA Sumário Construção de sistema Administrativo... 1 Sistema de Login... 2 SQL INJECTION... 2 Técnicas para Evitar Ataques... 2 Formulário de Login e Senha fará parte do DEFAULT... 5 LOGAR... 5 boas... 6

Leia mais

ARQUITETURA SISGRAD. Manual de Utilização. Versão: 2.0. Criação: 05 de julho de 2007 Autor: André Penteado

ARQUITETURA SISGRAD. Manual de Utilização. Versão: 2.0. Criação: 05 de julho de 2007 Autor: André Penteado ARQUITETURA SISGRAD Manual de Utilização Versão: 2.0 Criação: 05 de julho de 2007 Autor: André Penteado Última Revisão: 09 de outubro de 2009 Autor: Alessandro Moraes Controle Acadêmico - Arquitetura SISGRAD

Leia mais

UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS

UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS UM ESTUDO SOBRE ARQUITETURA PARA DESENVOLVIMENTO DE SOFTWARE WEB UTILIZANDO NOVAS TECNOLOGIAS Edi Carlos Siniciato ¹, William Magalhães¹ ¹ Universidade Paranaense (Unipar) Paranavaí PR Brasil edysiniciato@gmail.com,

Leia mais

(UFF) JDBC (I) TEPIS II

(UFF) JDBC (I) TEPIS II Aula 20: JDBC (I) Diego Passos Universidade Federal Fluminense Técnicas de Projeto e Implementação de Sistemas II Diego Passos (UFF) JDBC (I) TEPIS II 1 / 33 JDBC: Introdução Especificação que provê acesso

Leia mais

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition)

Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) Sumário. Java 2 Enterprise Edition. J2EE (Java 2 Enterprise Edition) Sistemas Distribuídos na WEB (Plataformas para Aplicações Distribuídas) J2EE () Sumário Introdução J2EE () APIs J2EE Web Container: Servlets e JSP Padrão XML 2 J2EE é Uma especificação para servidores

Leia mais

Enterprise Java Beans

Enterprise Java Beans Enterprise Java Beans Prof. Pasteur Ottoni de Miranda Junior DCC PUC Minas Disponível em www.pasteurjr.blogspot.com 1-O que é um Enterprise Java Bean? O Entertprise Java Bean (EJB) é um componente server-side

Leia mais

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF)

1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) Sessão Prática II JPA entities e unidades de persistência 1 Criar uma entity a partir de uma web application que usa a Framework JavaServer Faces (JSF) a) Criar um Web Application (JPAsecond) como anteriormente:

Leia mais

Unidade 9: Middleware JDBC para Criação de Beans

Unidade 9: Middleware JDBC para Criação de Beans Programação Servidor para Sistemas Web 1 Unidade 9: Middleware JDBC para Criação de Beans Implementando MVC Nível 1 Prof. Daniel Caetano Objetivo: Preparar o aluno para construir classes de entidade com

Leia mais

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem

Leia mais

Arquitetura de uma Webapp

Arquitetura de uma Webapp Arquitetura de uma Webapp Arquitetura J2EE Containers e componentes MVC: introdução Frederico Costa Guedes Pereira 2006 fredguedespereira@gmail.com Plataforma J2EE World Wide Web e a Economia da Informação

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Especialização em Desenvolvimento de Aplicações Web com Interfaces Ricas EJB 3.0 Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 10 Persistência de Dados

Leia mais

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO.

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO. Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO. Robson Adão Fagundes http://robsonfagundes.blogspot.com/ Mini curso Desenvolvimento de aplicação

Leia mais

Desenvolvimento de Aplicações. Desenvolvimento de Aplicações. Desenvolvimento de Aplicações. Dificuldades no uso de Bancos de Dados

Desenvolvimento de Aplicações. Desenvolvimento de Aplicações. Desenvolvimento de Aplicações. Dificuldades no uso de Bancos de Dados Desenvolvimento de Aplicações Desenvolvimento de Aplicações Dificuldades no uso de Bancos de Dados Um leigo não sabe o que é e como funciona um BD Mesmo um profissional da área de informática pode ter

Leia mais

Java 2 Enterprise Edition Fundamentos básicos de Segurança

Java 2 Enterprise Edition Fundamentos básicos de Segurança Java 2 Enterprise Edition Fundamentos básicos de Segurança Helder da Rocha www.argonavis.com.br 1 Objetivos Este capítulo apresenta Noções básicas de segurança em J2EE Exemplos de aplicações Usos típicos

Leia mais

Java e Banco de Dados: JDBC, Hibernate e JPA

Java e Banco de Dados: JDBC, Hibernate e JPA Java e Banco de Dados: JDBC, Hibernate e JPA 1 Objetivos Apresentar de forma progressiva as diversas alternativas de persistência de dados que foram evoluindo na tecnologia Java, desde o JDBC, passando

Leia mais

BCValidador VALIDAÇÃO DE ARQUIVOS XML RECEBIDOS PELO BANCO CENTRAL DO BRASIL

BCValidador VALIDAÇÃO DE ARQUIVOS XML RECEBIDOS PELO BANCO CENTRAL DO BRASIL BCValidador VALIDAÇÃO DE ARQUIVOS XML RECEBIDOS PELO BANCO CENTRAL DO BRASIL Deinf/Dine4 Versão 1.3 20/05/2013 Histórico de Revisão Data Versão Descrição Autor 06/11/2007 1.0 Elaboração da primeira versão

Leia mais

Manual de Transferência de Arquivos

Manual de Transferência de Arquivos O Manual de Transferência de Arquivos apresenta a ferramenta WebEDI que será utilizada entre FGC/IMS e as Instituições Financeiras para troca de arquivos. Manual de Transferência de Arquivos WebEDI Versão

Leia mais

Prova Específica Cargo Desenvolvimento

Prova Específica Cargo Desenvolvimento UNIVERSIDADE FEDERAL DO PIAUÍ Centro de Educação Aberta e a Distância CEAD/UFPI Rua Olavo Bilac 1148 - Centro CEP 64.280-001 Teresina PI Brasil Fones (86) 3215-4101/ 3221-6227 ; Internet: www.uapi.edu.br

Leia mais

Tutorial Módulo 06 - Segurança

Tutorial Módulo 06 - Segurança LABORATÓRIO 06 Segurança Este laboratório tem por objetivo exercitar o uso do componente de segurança do Framework e uso da especificação JAAS. Objetivos: Uso do Login Module do Componente de Segurança

Leia mais

Arquitetura de BDs Distribuídos. Victor Amorim - vhca Pedro Melo pam2

Arquitetura de BDs Distribuídos. Victor Amorim - vhca Pedro Melo pam2 Victor Amorim - vhca Pedro Melo pam2 Arquitetura de BDs Distribuídos Sistemas de bds distribuídos permitem que aplicações acessem dados de bds locais ou remotos. Podem ser Homogêneos ou Heterogêneos: Homogêneos

Leia mais

Desenvolvimento Web com Framework Demoiselle versão 1.0

Desenvolvimento Web com Framework Demoiselle versão 1.0 Desenvolvimento Web com Framework Demoiselle versão 1.0 Módulo 07: Outros Componentes Autor: Rodrigo Hjort Serpro / Coordenação Estratégica de Tecnologia / Curitiba www.frameworkdemoiselle.org.br Modificado

Leia mais

Sistema de Ordens de Serviço HDA Soluções em Informática

Sistema de Ordens de Serviço HDA Soluções em Informática UNIVERSIDADE CATÓLICA DE PELOTAS CENTRO POLITÉCNICO Curso Superior de Graduação em ANÁLISE E DESENVOLVIMENTO DE SISTEMAS Sistema de Ordens de Serviço HDA Soluções em Informática Por AUGUSTO CARRICONDE

Leia mais

J2EE. J2EE - Surgimento

J2EE. J2EE - Surgimento J2EE Java 2 Enterprise Edition Objetivo: Definir uma plataforma padrão para aplicações distribuídas Simplificar o desenvolvimento de um modelo de aplicações baseadas em componentes J2EE - Surgimento Início:

Leia mais

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva 1. O que são Serviços Web (Web Services)? Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva A ideia central dos Web Services parte da antiga necessidade

Leia mais

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this. Aula 2 Objetivos Encapsulamento na linguagem Java; Utilizando a referência this. Encapsulamento, data hiding é um conceito bastante importante em orientação a objetos. É utilizado para restringir o acesso

Leia mais

SIQ GQF Plugin s WEB (Aplicações WEB) Gestão da Qualidade de Fornecedores

SIQ GQF Plugin s WEB (Aplicações WEB) Gestão da Qualidade de Fornecedores SIQ GQF Plugin s WEB (Aplicações WEB) Gestão da Qualidade de Fornecedores Requerimentos do Software Versão para Microsoft Windows/Unix Dezembro 2006 Bem-Vindo ao to SIQ GQF Plugin s WEB - Gestão da Qualidade

Leia mais

Um Framework MVC para. Aplicações em Java utilizando Swing.

Um Framework MVC para. Aplicações em Java utilizando Swing. Um Framework MVC para Aplicações em Java utilizando Swing. Alessandro Lemser Curso de Ciência da Computação Universidade do Vale do Itajaí Campus São José São José, SC 88115-100, Brasil alemser@brturbo.com

Leia mais

Transaction Scripts: Uma Forma mais Simples de Organizar Lógica de Domínio

Transaction Scripts: Uma Forma mais Simples de Organizar Lógica de Domínio Roberto Perillo (jrcperillo@yahoo.com.br) é bacharel em Ciência da Computação e está atualmente cursando mestrado no ITA, onde já concluiu o curso de especialização em Engenharia de Software. Trabalha

Leia mais

JSF - Controle de Acesso FERNANDO FREITAS COSTA

JSF - Controle de Acesso FERNANDO FREITAS COSTA JSF - Controle de Acesso FERNANDO FREITAS COSTA ESPECIALISTA EM GESTÃO E DOCÊNCIA UNIVERSITÁRIA JSF Controle de Acesso Antes de iniciarmos este assunto, é importante conhecermos a definição de autenticação

Leia mais

Gerador de código JSP baseado em projeto de banco de dados MySQL

Gerador de código JSP baseado em projeto de banco de dados MySQL Gerador de código JSP baseado em projeto de banco de dados MySQL Juliane Menin Orientanda Prof. Alexander Roberto Valdameri Orientador Roteiro Introdução e Objetivos Fundamentação Teórica Especificação

Leia mais

Padrão J2EE Data Access Object (DAO)

Padrão J2EE Data Access Object (DAO) Introdução CRUD DAO Exemplo Padrão J2EE Data Access Object (DAO) Prof. Enzo Seraphim Motivação para usar Componentes precisam acessar e armazenar informações em armazenamento persistente As APIs de armazenamento

Leia mais

Tecnologias Web. Java Enterprise Edition

Tecnologias Web. Java Enterprise Edition Tecnologias Web Java Enterprise Edition Cristiano Lehrer, M.Sc. Introdução Java Enterprise Edition (JEE): Plataforma de tecnologias para o desenvolvimento de aplicações corporativas distribuídas. É uma

Leia mais

PROGRAMANDO ANDROID NA IDE ECLIPSE GABRIEL NUNES, JEAN CARVALHO TURMA TI7

PROGRAMANDO ANDROID NA IDE ECLIPSE GABRIEL NUNES, JEAN CARVALHO TURMA TI7 Serviço Nacional de Aprendizagem Comercial do Rio Grande do Sul Informação e Comunicação: Habilitação Técnica de Nível Médio Técnico em Informática Programação Android na IDE Eclipse PROGRAMANDO ANDROID

Leia mais

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS

DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS DESENVOLVIMENTO WEB UTILIZANDO FRAMEWORK PRIMEFACES E OUTRAS TECNOLOGIAS ATUAIS Emanuel M. Godoy 1, Ricardo Ribeiro Rufino 1 1 Universidade Paranaense (Unipar) Paranavaí PR Brasil godoymanel@gmail.com,

Leia mais

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Tutorial RMI (Remote Method Invocation) por Alabê Duarte Tutorial RMI (Remote Method Invocation) por Alabê Duarte Este tutorial explica basicamente como se implementa a API chamada RMI (Remote Method Invocation). O RMI nada mais é que a Invocação de Métodos

Leia mais

Padrões de Projeto e Persistência com DAO

Padrões de Projeto e Persistência com DAO Curso de Análise de Sistemas Análise de Sistemas II Padrões de Projeto e Persistência com DAO Prof. Giuliano Prado de Morais Giglio, M.Sc. Introdução a Padrões de Projeto Padrões de Projeto foram inicialmente

Leia mais

Web Technologies. Tópicos da apresentação

Web Technologies. Tópicos da apresentação Web Technologies Tecnologias de Middleware 2004/2005 Hugo Simões hsimoes@di.fc.ul.pt 1 A Web Tópicos da apresentação Tecnologias Web para suporte a clientes remotos (Applets,CGI,Servlets) Servidores Aplicacionais

Leia mais

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos

Descrição. Implementação. Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos Departamento de Informática e Estatística Universidade Federal de Santa Catarina LAB 4 Transferência de Arquivos Descrição Implemente nesta atividade de laboratório um programa em Java utilizando threads

Leia mais

ruirossi@ruirossi.pro.br

ruirossi@ruirossi.pro.br Persistência Com JPA & Hibernate Rui Rossi dos Santos ruirossi@ruirossi.pro.br Mediador: Rui Rossi dos Santos Slide 1 Mapeamento Objeto-Relacional Contexto: Linguagem de programação orientada a objetos

Leia mais

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5.

Autor: Ricardo Francisco Minzé Júnior - ricardominze@yahoo.com.br Desenvolvendo aplicações em camadas com PHP 5. Desenvolvendo aplicações em camadas com PHP 5. Talvez a primeira vista você ache estranha a palavra Camada em programação, mas o que vem a ser Camada? Segundo o dicionário: Camada 1 - Qualquer matéria

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ

UNIVERSIDADE FEDERAL DO PARANÁ CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 02 APRESENTAÇÃO: Apresentação; conceitos básicos da linguagem java; estrutura

Leia mais

Forms Authentication em ASP.NET

Forms Authentication em ASP.NET Forms Authentication em ASP.NET Em muitos sites web é necessário restringir selectivamente o acesso a determinadas áreas, ou páginas, enquanto para outras páginas pode permitir-se acesso livre. ASP.NET

Leia mais

Rotina de Discovery e Inventário

Rotina de Discovery e Inventário 16/08/2013 Rotina de Discovery e Inventário Fornece orientações necessárias para testar a rotina de Discovery e Inventário. Versão 1.0 01/12/2014 Visão Resumida Data Criação 01/12/2014 Versão Documento

Leia mais

CURSO DESENVOLVEDOR JAVA Edição 2009

CURSO DESENVOLVEDOR JAVA Edição 2009 CURSO DESENVOLVEDOR JAVA Edição 2009 O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma Orientado a Objetos e com o uso

Leia mais

UNIDADE IV ENTERPRISE JAVABEANS

UNIDADE IV ENTERPRISE JAVABEANS UNIDADE IV ENTERPRISE JAVABEANS MODELO J2EE COMPONENTES DE Camada de Negócios NEGÓCIOS JAVA SERVLET, JSP E EJB Nos capítulos anteriores, foi mostrado como desenvolver e distribuir aplicações servlet e

Leia mais

Persistindo dados com TopLink no NetBeans

Persistindo dados com TopLink no NetBeans Persistindo dados com TopLink no NetBeans O que é TopLink? O TopLink é uma ferramenta de mapeamento objeto/relacional para Java. Ela transforma os dados tabulares de um banco de dados em um grafo de objetos

Leia mais

Projeto SNGPC para Farmácias e Drogarias

Projeto SNGPC para Farmácias e Drogarias Agência Nacional de Vigilância Sanitária Projeto SNGPC para Farmácias e Drogarias Conexão ao Webservice Manual do Desenvolvedor Versão 2.0.0 Brasília, fevereiro de 2013. Copyright 2012. Agência Nacional

Leia mais

Desenvolvendo Aplicações Web com NetBeans

Desenvolvendo Aplicações Web com NetBeans Desenvolvendo Aplicações Web com NetBeans Aula 3 Cap. 4 Trabalhando com Banco de Dados Prof.: Marcelo Ferreira Ortega Introdução O trabalho com banco de dados utilizando o NetBeans se desenvolveu ao longo

Leia mais

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB) Uma Introdução à Arquitetura Francisco C. R. Reverbel 1 Copyright 1998-2006 Francisco Reverbel O Object Request Broker (ORB) Via de comunicação entre objetos (object bus), na arquitetura do OMG Definido

Leia mais

UFG - Instituto de Informática

UFG - Instituto de Informática UFG - Instituto de Informática Curso: Sistemas de Informações Arquitetura de Software Prof.: Fabrízzio A A M N Soares professor.fabrizzio@gmail.com Aula 7 JPA A Persistência com JPA Para configurar o JPA

Leia mais

Plataforma para Agentes

Plataforma para Agentes Plataforma para es JATLite - Java Template, Lite O que é o JATLite? http://java.stanford.edu/ http://www.fe.up.pt/~eol/aiad/jatlite/doc/index.html Pacote de programas em Java permitindo: rápida criação

Leia mais

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44

Etc & Tal. Volume 2 - Número 1 - Abril 2009 SBC HORIZONTES 44 Armazenando Dados em Aplicações Java Parte 2 de 3: Apresentando as opções Hua Lin Chang Costa, hualin@cos.ufrj.br, COPPE/UFRJ. Leonardo Gresta Paulino Murta, leomurta@ic.uff.br, IC/UFF. Vanessa Braganholo,

Leia mais

J820. Testes de interface Web com. HttpUnit. argonavis.com.br. Helder da Rocha (helder@acm.org)

J820. Testes de interface Web com. HttpUnit. argonavis.com.br. Helder da Rocha (helder@acm.org) J820 Testes de interface Web com HttpUnit Helder da Rocha (helder@acm.org) O que é HttpUnit API Java para comunicação com servidores HTTP Permite que programas construam e enviem requisições, e depois

Leia mais

Manual Comunica S_Line

Manual Comunica S_Line 1 Introdução O permite a comunicação de Arquivos padrão texto entre diferentes pontos, com segurança (dados criptografados e com autenticação) e rastreabilidade, isto é, um CLIENTE pode receber e enviar

Leia mais

e-stf WebServices Processo Eletrônico Smart Client Manual de Instalação

e-stf WebServices Processo Eletrônico Smart Client Manual de Instalação SUPREMO TRIBUNAL FEDERAL Secretaria de Tecnologia da Informação e-stf WebServices Processo Eletrônico Smart Client 1 Histórico da Revisão Data Versão Descrição Autor 30/07/2008 1.0 Criação do documento

Leia mais

Manual de Integração SMS

Manual de Integração SMS NG Sistemas Manual de Integração SMS Integração SMS TI 2015 w w w. n g s i s t e m a s. c o m. b r Índice Sumário executivo... 2 Integrações... 3 Desenho da solução.... 6 NG Sistemas 1 Sumário executivo

Leia mais

MÓDULO Programação para Web 2

MÓDULO Programação para Web 2 MÓDULO Programação para Web 2 USANDO O JSF Continuação Interdependência e Injeção Instâncias de Managed Beans podem conversar entre si para dividir o processamento das requisições dos usuários de acordo

Leia mais

Parte I. Demoiselle Vaadin

Parte I. Demoiselle Vaadin Parte I. Demoiselle Vaadin O Vaadin é um framework para construção de interfaces web que aplica ideias inovadoras. Apesar de usar o GWT como mecanismo para a exibição de seus componentes, eles tem características

Leia mais

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS João Gabriel Ganem Barbosa Sumário Motivação História Linha do Tempo Divisão Conceitos Paradigmas Geração Tipos de Dados Operadores Estruturada vs

Leia mais

Criando documentação com javadoc

Criando documentação com javadoc H Criando documentação com javadoc H.1 Introdução Neste apêndice, fornecemos uma introdução a javadoc ferramenta utilizada para criar arquivos HTML que documentam o código Java. Essa ferramenta é usada

Leia mais

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC

Módulo 5 JPATransaction Camadas Turma Turma TurmaBC .business @BusinessController TurmaBC TurmaBC TurmaBC Módulo 5 No módulo anterior adaptamos nosso projeto para persistir as informações no banco de dados utilizando as facilidades da extensão demoiselle-jpa. Experimentamos o controle transacional do Framework

Leia mais

Integrando Eclipse e Websphere Application Server Community Edition

Integrando Eclipse e Websphere Application Server Community Edition 1 Integrando Eclipse e Websphere Application Server Community Edition Sobre o Autor Carlos Eduardo G. Tosin (carlos@tosin.com.br) é formado em Ciência da Computação pela PUC-PR, pós-graduado em Desenvolvimento

Leia mais

6 PLANEJAMENTO DE SI 6.1 Planejamento de Segurança da Informação O planejamento em S.I é algo crucial para que haja o bom funcionamento de uma

6 PLANEJAMENTO DE SI 6.1 Planejamento de Segurança da Informação O planejamento em S.I é algo crucial para que haja o bom funcionamento de uma 6 PLANEJAMENTO DE SI 6.1 Planejamento de Segurança da Informação O planejamento em S.I é algo crucial para que haja o bom funcionamento de uma empresa. Diferente do senso comum o planejamento não se limita

Leia mais

Projeto de Redes de Computadores. Desenvolvimento de Estratégias de Segurança e Gerência

Projeto de Redes de Computadores. Desenvolvimento de Estratégias de Segurança e Gerência Desenvolvimento de Estratégias de Segurança e Gerência Segurança e Gerência são aspectos importantes do projeto lógico de uma rede São freqüentemente esquecidos por projetistas por serem consideradas questões

Leia mais

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Especialização em desenvolvimento para web com interfaces ricas Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Objetivos Conceito de exceções Tratar exceções pelo uso de try, catch e

Leia mais

FBV - Linguagem de Programação II. Um pouco sobre Java

FBV - Linguagem de Programação II. Um pouco sobre Java FBV - Linguagem de Programação II Um pouco sobre Java História 1992: um grupo de engenheiros da Sun Microsystems desenvolve uma linguagem para pequenos dispositivos, batizada de Oak Desenvolvida com base

Leia mais

Manual de Instalação do Facilite e Configuração do Banco de Dados

Manual de Instalação do Facilite e Configuração do Banco de Dados Pagina 1 Titulo do Manual [Parâmetros Gerais] Elaboração [Ricardo Francisco Mizael] Versão 1.1 Data Elaboração 01/08/2011 Paginas 33 Data Revisão 25/11/2011 Pagina 2 Conteúdo do Manual Apresentação...3

Leia mais

JPA: Persistência padronizada em Java

JPA: Persistência padronizada em Java JPA: Persistência padronizada em Java FLÁVIO HENRIQUE CURTE Bacharel em Engenharia de Computação flaviocurte.java@gmail.com Programação Orientada a Objetos X Banco de Dados Relacionais = Paradigmas diferentes

Leia mais

TRABALHO BIBLIOTECA MD5

TRABALHO BIBLIOTECA MD5 FACULDADE DE TECNOLOGIA SENAC PELOTAS TRABALHO BIBLIOTECA MD5 Linguagens de Programação Eduardo Orestes Brum Análise e Desenvolvimento de Sistemas - 2013 Sumário 1 Introdução 31 2 Criptografia MD5 4 2.

Leia mais

Auditoria Avançada de Persistência com Hibernate, JPA e Envers

Auditoria Avançada de Persistência com Hibernate, JPA e Envers a r t i g o José Yoshiriro Ajisaka Ramos (jyoshiriro@gmail.com): bacharel em Sistema de Informação (IESAM). Mestrando em Ciência da Computação (UFPA). Instrutor na Equilibrium Web e na UAB. Engenheiro

Leia mais

Boas Práticas de Desenvolvimento Seguro

Boas Práticas de Desenvolvimento Seguro Boas Práticas de Desenvolvimento Seguro Julho / 2.012 Histórico de Revisões Data Versão Descrição Autor 29/07/2012 1.0 Versão inicial Ricardo Kiyoshi Página 2 de 11 Conteúdo 1. SEGURANÇA DA INFORMAÇÃO

Leia mais

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc. Sintaxe Geral Tipos de Dados Comentários Comentários: De linha: // comentário 1 // comentário 2 De bloco: /* linha 1 linha 2 linha n */ De documentação: /** linha1 * linha2 */ Programa Exemplo: ExemploComentario.java

Leia mais

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Tecnologia Java Daniel Destro do Carmo Softech Network Informática daniel@danieldestro.com.br Origem da Tecnologia Java Projeto inicial: Oak (liderado por James Gosling) Lançada em 1995 (Java) Tecnologia

Leia mais

Essencial ao Desenvolvimento de Software

Essencial ao Desenvolvimento de Software Documento de Requisitos Essencial ao Desenvolvimento de Software De que se trata o artigo? Apresenta o documento de requisitos de software, destacando-o como um dos principais documentos pertinentes ao

Leia mais

Framework utilizando reflexão e aspectos para persistência de objetos em java

Framework utilizando reflexão e aspectos para persistência de objetos em java Framework utilizando reflexão e aspectos para persistência de objetos em java Antonio Carlos Rolloff (UNIPAR) acrolloff@gmail.com Arthur Cattaneo Zavadski (UNIPAR) arthur@datacoper.com.br Maria Aparecida

Leia mais

Universidade Federal de Uberlândia

Universidade Federal de Uberlândia Universidade Federal de Uberlândia Programação Orientada a Objetos I Introdução a Java Sintaxe básica OO Prof. Fabiano Azevedo Dorça Em Java, cada classe dá origem a um arquivo.java contendo o código fonte.

Leia mais

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011 CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011 O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma

Leia mais

Segurança de Acesso a Banco de Dados no MS SQL Server

Segurança de Acesso a Banco de Dados no MS SQL Server Segurança de Acesso a Banco de Dados no MS SQL Server Para efetuar com sucesso os exemplos que serão mostrados a seguir é necessário que exista no SQL Server uma pessoa que se conecte como Administrador,

Leia mais

Prof. Fellipe Araújo Aleixo fellipe.aleixo@ifrn.edu.br

Prof. Fellipe Araújo Aleixo fellipe.aleixo@ifrn.edu.br Prof. Fellipe Araújo Aleixo fellipe.aleixo@ifrn.edu.br A arquitetura Enterprise JavaBeans é uma arquitetura de componentes para o desenvolvimento e a implantação de aplicativos de negócio distribuídos

Leia mais

Aula 2 - Revisão de JPA (Java Persistence API)

Aula 2 - Revisão de JPA (Java Persistence API) Aula 2 - Revisão de JPA (Java Persistence API) Professor: Ricardo Luis dos Santos IFSUL 2015 Tabela para Revisão Assunto (JPA) Interesse? 1 Vantagens e Desvantagens 4 2 Principais Conceitos 7 3 Anotações

Leia mais

Top Ten OWASP. Fausto Levandoski 1. Curso Tecnólogo em Segurança da Informação Av. Unisinos, 950 93.022-000 São Leopoldo RS Brasil. farole@gmail.

Top Ten OWASP. Fausto Levandoski 1. Curso Tecnólogo em Segurança da Informação Av. Unisinos, 950 93.022-000 São Leopoldo RS Brasil. farole@gmail. Top Ten OWASP Fausto Levandoski 1 1 Universidade do Vale do Rios dos Sinos (UNISINOS) Curso Tecnólogo em Segurança da Informação Av. Unisinos, 950 93.022-000 São Leopoldo RS Brasil farole@gmail.com Abstract.

Leia mais

Guia de Atualização PROJURIS WEB 4.5. Manual do Técnico Atualização - ProJuris Web 4.5. Manual do Técnico Atualização - ProJuris Web 4.

Guia de Atualização PROJURIS WEB 4.5. Manual do Técnico Atualização - ProJuris Web 4.5. Manual do Técnico Atualização - ProJuris Web 4. Guia de Atualização PROJURIS WEB 4.5 Por: Fabio Pozzebon Soares Página 1 de 11 Sistema ProJuris é um conjunto de componentes 100% Web, nativamente integrados, e que possuem interface com vários idiomas,

Leia mais

RELACIONAMENTOS ENTRE OS OBJETOS NO FRAMEWORK HIBERNATE Elio Lovisi Filho 1 Ronney Moreira de Castro 2 RESUMO

RELACIONAMENTOS ENTRE OS OBJETOS NO FRAMEWORK HIBERNATE Elio Lovisi Filho 1 Ronney Moreira de Castro 2 RESUMO Revista Eletrônica da Faculdade Metodista Granbery http://re.granbery.edu.br - ISSN 1981 0377 Curso de Sistemas de Informação - N. 10, JAN/JUN 2011 RELACIONAMENTOS ENTRE OS OBJETOS NO FRAMEWORK HIBERNATE

Leia mais

Universidade Federal de Goiás Centro de Recursos Computacionais - CERCOMP Divisão de Sistemas. Criação de uma Serviço de Geração de Relatórios

Universidade Federal de Goiás Centro de Recursos Computacionais - CERCOMP Divisão de Sistemas. Criação de uma Serviço de Geração de Relatórios Universidade Federal de Goiás Centro de Recursos Computacionais - CERCOMP Divisão de Sistemas Criação de uma Serviço de Geração de Relatórios Goiânia 12/2011 Versionamento 12/12/2011 Hugo Marciano... 1.0

Leia mais

CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias

CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias CURSO DESENVOLVEDOR JAVA Edição Intensiva de Férias O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma Orientado a Objetos

Leia mais

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo

Conteúdo. Disciplina: INF 02810 Engenharia de Software. Monalessa Perini Barcellos. Centro Tecnológico. Universidade Federal do Espírito Santo Universidade Federal do Espírito Santo Centro Tecnológico Departamento de Informática Disciplina: INF 02810 Prof.: (monalessa@inf.ufes.br) Conteúdo 1. Introdução 2. Processo de Software 3. Gerência de

Leia mais

JDBC. Prof. Márcio Bueno (poonoite@marciobueno.com)

JDBC. Prof. Márcio Bueno (poonoite@marciobueno.com) JDBC Prof. Márcio Bueno (poonoite@marciobueno.com) JBDC Java Database Connectivity ou JDBC é um conjunto de classes e interfaces (API) escritas em Java que faz o envio de instruções SQL para qualquer banco

Leia mais

CURSO DESENVOLVEDOR JAVA Edição 2010

CURSO DESENVOLVEDOR JAVA Edição 2010 CURSO DESENVOLVEDOR JAVA Edição 2010 O curso foi especialmente planejado para os profissionais que desejam trabalhar com desenvolvimento de sistemas seguindo o paradigma Orientado a Objetos e com o uso

Leia mais

Banco de Dados. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com

Banco de Dados. Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Banco de Dados Sérgio Luiz Ruivace Cerqueira sergioruivace@gmail.com Roteiro Mapeamento de objetos para modelo relacional Estratégias de persistência Persistência JDBC Mapeando Objetos para o Modelo Relacional

Leia mais