• Nenhum resultado encontrado

Implementação do WebBEMS 1. Autenticação e autorização

WebBEMS: um sistema baseado em componentes para o suporte à colaboração via Web

4. Implementação do WebBEMS 1. Autenticação e autorização

O primeiro elemento presente na interface é um motor para execução de Ashyncronous JavaScript And XML (AJAX), que em linhas gerais é uma tecnologia que permite a execução de requisições HTTP assíncronas controladas programaticamente.

Este recurso torna a interface capaz de enviar e receber informações ao sistema sem a necessidade de atualizar todo o conteúdo das páginas HTML carregadas pelo navegador Web, reduzindo o tempo de espera e enriquecendo a interação dos usuários.

O outro elemento aplicado na interface é um Java Applet, responsável por orquestrar o envio e recebimento de mensagens através da tecnologia Java Message Service (JMS). Este Applet não emprega nenhum tipo de recurso visual baseado em frameworks de janelamento Java, todas as interações entre o usuário e o Applet são feitas por meio de links e controles presentes na própria página HTML, graças ao uso da tecnologia LiveConnect suportada pelos principais navegadores.

Com estes dois elementos combinados, a interface central do WebBEMS é formada por uma única página HTML que embarca dentro de sua estrutura o Applet, formato conhecido como Single Page Application (SPA). Uma SPA é uma aplicação web executada completamente dentro de um navegador web.

Uma vez acessada a página, o que demanda um processo de autenticação, todos os conteúdos referentes aos convites, participantes, enquetes e mensagens de bate-papo são aplicados dinamicamente à página usando o motor AJAX sem a necessidade de mudar para outra página ou atualizar a página atual. A Figura 4 apresenta a representação completa dos principais elementos que compõe a aplicação e a infra-estrutura de comunicação utilizada pelos mesmos.

Figura 4. Arquitetura de comunicação do WebBEMS

4. Implementação do WebBEMS

autenticação e autorização baseada em papéis não foi utilizado porque no WebBEMS o papel de um usuário pode variar indefinidamente entre administrador e participante de uma reunião, o que inviabiliza a atribuição de papéis durante o processo de autenticação.

A autenticação é dividida em duas fases complementares:

na primeira fase é feita a aquisição das credenciais do usuário através de um formulário de login. Estas credenciais são verificadas através de um método de autenticação do sistema, independente do Java Authentication and Authorization Service (JAAS), e, caso sejam válidas, estas são registradas na sessão do usuário que é redirecionado para a área restrita da interface identificada por um URL diferenciado da área não restrita;

dentro da área restrita, um filtro intercepta todas as requisições a fim de recuperar as credenciais do usuário presentes na sua respectiva sessão, para efetuar o processo de autenticação usando JAAS, que se encarrega de propagar as credenciais, já validadas pelo sistema.

A autorização usa as credenciais propagadas pela interface para confrontar as chamadas de um solicitante e verificar se o mesmo pode executar aquela operação. Por exemplo, um convite para uma reunião só pode ser enviado se o solicitante for o administrador da reunião em questão, do mesmo modo que um convite só pode ser confirmado pelo seu destinatário.

4.2. Transferência de mensagens

A transferência de mensagens (quer sejam mensagens de bate-papo ou convites) é outra parte importante do sistema e necessita de confiabilidade. No entanto a propagação de credenciais fornecidas pelo JAAS não funciona no sistema de mensagens J2EE, isto é, não é possível saber qual usuário enviou uma mensagem para o sistema e verificar se este possui autorização para executar a operação solicitada.

Uma das formas encontradas para contornar esta questão foi enviar a identificação do usuário dentro das mensagens. Para isto foi criada uma classe usada exclusivamente para que os usuários possam enviar mensagens para o sistema. Desta forma é possível encapsular os dados da mensagem juntamente com a identificação do usuário que a enviou.

Esta estratégia resolve a troca de mensagens que partem dos clientes para o WebBEMS. Contudo a troca de mensagens no sentido inverso deve ser tratada de outra forma. Além de identificar o destinatário da mensagem é preciso que uma mensagem seja consumida apenas pelo seu destinatário e ninguém mais. Para atender a este requisito cada cliente cria uma fila de mensagens temporária. Esta fila temporária é provida pelo JMS e funciona da mesma forma que uma fila convencional, a diferença é que apenas o criador a fila pode ler as mensagens enviadas para a mesma.

Deste modo sempre que o Applet é iniciado ele cria uma fila temporária e registra a mesma no WebBEMS para que este saiba qual a fila que cada usuário está usando para receber suas mensagens vindas do sistema. Antes de enviar uma mensagem para um usuário o sistema recupera a fila que está sendo usada pelo usuário e envia a mensagem para a mesma.

4.3. Interface web

A interface possui suporte a múltiplos idiomas e é totalmente baseada em HTML. Ela é composta por quadros projetados para se assemelharem com pequenas janelas, através das quais os usuários invocam os serviços do WebBEMS. Ao todo são seis quadros, dispostos simultaneamente na tela, representando as reuniões, os participantes, as enquetes, a sala de bate-papo, os convites recebidos pelo usuário e confirmações de convites enviados pelo usuário. A interface permite que o usuário maximize e minimize o conteúdo de cada quadro, de acordo com sua necessidade. Todos os formulários para cadastro, edição e mensagens são embutidos dentro dos quadros dando-lhes um aspecto de interfaces independentes semelhantes a Portlets.

A Figura 5 apresenta uma janela contendo a interface com todos os quadros maximizados e com os respectivos conteúdos a disposição do usuário, que permitem que este tenha percepção das interações dos demais usuários. Caso o usuário deseje se concentrar em apenas determinados quadros ele pode minimizar os quadros que não são de interesse no momento. Por exemplo, durante o cadastro de uma nova votação é possível manter apenas alguns quadros maximizados evitando com isso possíveis distrações. A Figura 6 ilustra está situação. Nesta figura, os quadros de convites e confirmações estão minimizados.

Figura 5. Interface do WebBEMS

Para acessar o conteúdo dinâmico dos quadros e submeter os dados para o servidor a interface utiliza a tecnologia AJAX. O motor usado na interface, chamado Clean AJAX Engine, simplifica significativamente o processo de construção dos objetos JavaScript necessários para a utilização desta tecnologia em diferentes navegadores.

Alguns quadros utilizam o serviço de mensagens JMS para acessar e enviar dados para o servidor. Estes quadros utilizam a tecnologia LiveConnect para receber e enviar dados ao Applet embarcado na página que possui acesso ao serviço JMS. O Applet possui assinatura via certificado digital para permitir a habilitação de recursos normalmente inacessíveis para Applets executados dentro de navegadores.

As informações acessadas através do motor AJAX trafegam entre o servidor e o cliente já no formato HTML, sem a necessidade de nenhuma transformação no momento da exibição das informações no cliente. Já as informações acessadas pelo Applet trafegam entre o servidor e o cliente na forma de objetos Java. A exibição destas informações utiliza templates HTML disponibilizados com o Applet, onde as informações são inseridas para que possam ser exibidas adequadamente.

Figura 6. Interface para o cadastro de enquete

4.4. Testes

Os testes de unidade concentraram-se nos componentes EJB e foram executados utilizando a prática de testes in-container, a partir do framework Cactus, na qual os testes de unidade são executados dentro do ambiente provido pelo EJB container. Os testes de aceitação foram feitos a partir da simulação de reuniões observando o comportamento e performance da aplicação como um todo, isto é, observando os recursos providos tanto pelo lado servidor quanto pelo lado cliente.