Autenticação de usuários com IBM MobileFirst

Este artigo apresenta conceitos sobre a implementação de autenticação de usuários feita na plataforma IBM MobileFirst. Essa implementação será exposta em dois tipos, implementação via Adapters escritos em JavaScript e via adapters escritos em Java. A implementação de autenticação de usuários é algo essencial para a maioria dos aplicativos. Enfrentar as questões cruciais de segurança e identificação de usuários é algo que pode ser muito complexo e, se não for, ao menos será trabalhoso e exigirá muito cuidado. Felizmente, a plataforma IBM MobileFirst já tem boa parte do caminho traçado, restando ao desenvolvedor apenas a implementação referente a sua própria regra de negócio.

O módulo de autenticação de usuários presente nos sistemas é, certamente, um assunto recorrente nas discussões sobre segurança da informação. É recomendado que seja definida e planejada toda a parte de autenticação e identificação de usuários logo no início de um projeto, ou até mesmo antes de ele ser iniciado, já que, com certeza, ele poderá influenciar de modo geral o projeto. A implementação tardia dessa etapa crucial da maioria dos aplicativos pode trazer muito impacto ao desenvolvimento já existente.

A autenticação de usuários pode ser realizada de diferentes modos, mas este artigo contemplará os conceitos básicos da autenticação e apenas dois tipos: baseada em Adapters JavaScript e baseada em Adapters Java. Os outros tipos de autenticação, não muito comuns, são: Form-based, Header-based, LDAP e LTPA. O desenvolvimento de um sistema de autenticação requer implementação do lado do servidor, mais especificamente em Adapters escritos em JavaScript ou em Java. Além disso, é necessária a implementação do lado cliente, que seria responsável pelo envio das credenciais e eventos da autenticação.

Os Adapters baseados em JavaScript somam a facilidade e flexibilidade de se desenvolver em JavaScript com os recursos poderosos da API Java. Esse recurso usa a engine chamada Rhino (veja a sessão de Links) para rodar os adapters escritos como scripts JavaScript em um servidor Java, como WebSphere ou Tomcat.

Os Adapters baseados em Java são um dos recursos adicionados à versão 7.0 do IBM MobileFirst Platform. E não estamos falando apenas de chamadas a código Java, como já era possível desde as primeiras versões da plataforma, estamos falando de adapters escritos totalmente em Java, seguindo a especificação Java EE para serviços RESTful, JAX-RS (veja a seção Links).

É recomendável ter um conhecimento básico dos dois tipos de implementação, Adapters escritos em JavaScript e Adapters escritos em Java, para decidir qual das duas vias atende melhor aos requisitos da implementação da autenticação de usuários no projeto. Nesse sentido, é importante também conhecer os conceitos centrais da autenticação e identificação de usuários no IBM MobileFirst, uma vez que eles podem impactar na escolha da tecnologia a ser usada.

Os termos chave usados pela plataforma IBM MobileFirst para essa etapa no desenvolvimento de aplicativos, e que poderiam ajudar na busca de maiores informações e detalhes técnicos, são (ver Figura 1): Realm, Security Test, Authenticator, Login Module, User Identity e Challenge Handler. Esse último faz parte da implementação client-side. Ao longo do artigo, cada um desses termos, seus objetivos e usos, serão esclarecidos.

Estrutura
do IBM MobileFirst
Figura 1. Estrutura do IBM MobileFirst.

Security-test

Do lado do servidor, o security-test age como o porteiro da entrada das requisições. Através dele, definimos que determinada procedure ou resource só será acessado caso passe no teste de autenticação, ou seja, caso o usuário que realize a requisição já esteja autenticado no aplicativo. Nele identificamos o Realm, que irá fornecer a resposta para as perguntas: "Esse usuário tem acesso a esse recurso? Esse usuário está autenticado no Realm em questão?".

Para proteger procedures de Adapters JavaScript, basta adicionar o atributo "securityTest" na procedure a ser protegida no XML de configuração do Adapter:

<procedure name="procedureQueApenasUsuariosLogadosTemAcesso" 
securityTest="RevendedorLoginRealm-securityTest"/>

O securityTe ...

Quer ler esse conteúdo completo? Tenha acesso completo