Por que eu devo ler este artigo:

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.

...
Quer ler esse conteúdo completo? Tenha acesso completo