Este artigo apresenta mecanismos de segurança para o desenvolvimento de sistemas corporativos, incluindo a criação de usuários e grupos no servidor de aplicação, desenvolvimento de login, configuração de roles e a manipulação de EJBs em relação à segurança dos componentes. Vamos entender a relação usuário, grupo, papéis e aprender a criar cada um destes recursos e onde utilizá-los de forma correta e assertiva.
Em que situação o tema é útil
Este artigo será útil para os desenvolvedores que desejam conhecer mecanismos de segurança para sistemas que são executados no lado do servidor. Aprender boas práticas para desenvolver um login com autenticação no servidor de aplicação e construir lógicas de negocio em componentes EJB de acordo com o perfil do usuário logado.
Nos dias de hoje, todas as nossas informações pessoais estão de algum modo disponíveis na grande rede, seja nas redes sociais, em e-mails, blogs ou até mesmo em sistemas do governo, como o da receita federal, por exemplo. Isso acontece porque no dia a dia somos convidados a realizar cadastros em diversos sites, sempre que desejamos usufruir dos serviços por eles prestados. Para criar uma conta de e-mail, por exemplo, temos que preencher um formulário composto basicamente por informações pessoais. Com a conta criada, trafegamos e-mails contendo todos os tipos de informações, documentos e fotos da nossa vida pessoal e profissional.
Outro cenário clássico são as informações fornecidas em sites de compras online, os e-commerces, tais como números de documentos e de telefones, endereço para entrega de mercadorias e principalmente dados de cartões de crédito e senhas.
Com tantas informações pessoais e sigilosas sendo trafegadas no sistema, implementar mecanismos de segurança torna-se fundamental para evitar problemas que certamente ocorrerão se o desenvolvimento não for feito levando em consideração os principais conceitos de segurança de sistemas corporativos.
Com este pensamento, vamos aprender de forma prática e objetiva os principais conceitos que compõem a construção de mecanismos de segurança em sistemas corporativo e em componentes EJB, tais como: criação de login com autenticação feita pelo servidor de aplicação; criação de usuários, grupos e papéis; restrição de acesso direto à URL por usuários não autorizados; e restrição ao acesso de componentes EJB baseada nos perfis do usuário logado.
Segurança
Segundo o dicionário Aurélio, Segurança significa ato ou efeito de segurar, qualidade do que é ou está seguro, conjunto das ações e dos recursos utilizados para proteger algo ou alguém.
A grande maioria dos sistemas corporativos envolve informações sigilosas e de grande valia para as empresas que os utilizam. Por isso é muito importante implementar mecanismos de segurança na aplicação de modo a permitir acessos específicos a usuários previamente autorizados.
Se isto não acontecer, informações sigilosas estarão desprotegidas e o sistema, comprometido. Por exemplo, em um sistema acadêmico um aluno deve ter acesso à consulta de notas e ao acervo da biblioteca, mas obviamente nunca pode alterar sua própria nota. Esta ação deve ser permitida somente ao perfil de professores.
Ao falar de segurança existem sempre duas palavras que resumem bem os processos que envolvem esta importante área do desenvolvimento de software. Estas palavras são autenticação e autorização. Vamos entender o que significa e qual o papel de cada uma no nosso dia a dia e no desenvolvimento de sistemas corporativos.
Autenticação
Segundo o dicionário Aurélio, Autenticar significa Declarar autêntico, tornar autêntico, certificar, legalizar.
Diariamente precisamos nos autenticar, ou seja, comprovamos que nós somos quem dizemos ser. Ao chegar ao trabalho, por exemplo, o funcionário apresenta o crachá para entrar na empresa. No caixa eletrônico o correntista insere o cartão e digita uma senha. Em uma locadora, para locar um filme, o cliente diz o nome e apresenta um documento pessoal. Ao parar em uma blitz policial, o motorista deve apresentar a carteira nacional de habilitação. No vestibular, para entrar na sala de provas, também é necessário apresentar um documento com foto. Para abrir uma conta no banco, é necessário apresentar diversos documentos para comprovar a identidade. Para votar é necessário apresentar o título de eleitor e um documento com foto.
Todos estes cenários são processos de autenticação, onde devemos provar que somos de fato, quem dizemos ser. Como podemos perceber, no nosso cotidiano somos convidados a nos autenticar diversas vezes e isto se tornou tão natural que, na maioria das vezes, nem percebemos este processo.
Em sistemas corporativos a autenticação é feita principalmente com a entrada de um usuário e senha, o sistema valida os dados e, se forem verdadeiros, o usuário estará autenticado e terá acesso ao sistema em questão.
Autorização
Segundo o dicionário Aurélio, Autorizar significa conceder licença para algo, conferir autoridade.
A autorização ocorre sempre depois da autenticação. Uma vez autenticado temos uma espécie de pré-acesso a diversas situações, porém mesmo autenticado podemos não ter acesso a um determinado grupo de informações. Por exemplo, no caixa eletrônico, após digitar a senha correta, o correntista tenta realizar um empréstimo e uma mensagem dizendo que não é possível realizar o empréstimo é exibida. Isto quer dizer que o correntista está autenticado no sistema bancário, porém não tem autorização para realizar um empréstimo. Ao tentar realizar uma compra em uma loja, o cliente diz o nome e apresenta um documento. Com isso o processo de autenticação será concretizado, mas durante o cadastro o funcionário da loja descobre que o nome do cliente se encontra no serviço de proteção ao crédito, o SPC, e não autoriza a compra. Logo, o cliente está autenticado, porém não tem autorização para realizar compras devido a uma pendência financeira.
Como pode ser notado, após a autenticação ainda existe a necessidade de autorizar uma determinada ação, o que torna o processo muito mais seguro e eficaz. Uma vez logado o usuário pode ter restrições em determinados módulos do sistema, ou seja, ele tem autorização para acessar somente os módulos que seu perfil tem acesso. Isto ficará mais claro na seção sobre Usuários, Grupos e Papeis.
Usuários, grupos e papeis
Antes de entrarmos de cabeça na segurança web, e posteriormente nos EJBs, vamos entender o que são e qual a função dos usuários, grupos e papéis dentro do conceito de segurança de sistemas corporativos. Compreender estas três peças é fundamental para um bom entendimento de todo o conceito que envolve segurança.
Os usuários são as pessoas que terão acesso ao sistema, geralmente através de um login e de uma senha. Em qualquer sistema corporativo, cada usuário terá acessos e restrições a determinados módulos do sistema. Para facilitar este controle de acesso, cada usuário é associado a um ou mais grupos. Cada Grupo, por sua vez, reúne um conjunto de usuários que tem o mesmo perfil de acesso ao sistema.
Para ficar mais claro, vamos imaginar um sistema acadêmico com dois módulos: o primeiro de cadastro de notas, e o segundo de consulta de notas. Todos os usuários que são professores são associados ao grupo chamado 'professor' e os usuários alunos, ao grupo 'aluno'. Assim a aplicação que tem uma média de 500 alunos cadastrados não precisa restringir ou liberar o acesso para cada aluno específico, mas sim para o grupo ‘aluno’ de forma geral. Com isso, se um novo cadastro de aluno for incluído, basta associá-lo ao grupo ‘aluno’ e nenhuma alteração a mais será necessária. O grupo ‘professor’ tem as mesmas características. Deste modo, o sistema não precisa verificar se cada usuário tem acesso para cadastrar as notas, e sim verificar se ele possui o grupo ‘professor’ em seu perfil.
A aplicação não tem acesso direto aos grupos por motivos de segurança. É neste ponto que entra em ação os papeis. Cada grupo é associado a um papel. Desta forma a aplicação só trabalha com os papeis criados, e não com os seus respectivos grupos. A ligação entre os grupos criados no servidor de aplicação e os papeis criados na aplicação é realizada através de arquivos de configuração, dentro da aplicação, como veremos no decorrer do artigo.
...Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.