Serviço de Identificação

Como o processo de identificação de usuários se tornou mais flexível e robusto

Introdução

Identificar quem está acessando algum recurso é uma parte muito importante no desenvolvimento de sistemas. Este trabalho é chamado de autenticação e normalmente acontece assim que você informa o nome do seu usuário e a sua senha. Essas duas informações combinadas são chamadas de credenciais.

Depois que o usuário é identificado, é preciso saber a quais recursos ele tem acesso. Este trabalho se chama autorização.

Autenticação e autorização são partes de um serviço chamado de identificação, que é muito importante para proteger qualquer recurso de sua aplicação ou sistema e de quebra registrar as ações de determinado usuário.

Observação: Aqui nos referimos aos termos “aplicação”, “sistema” e “software” de forma intercambiável, podendo referir-se a um aplicativo mobile, um sistema web, um sistema desktop, uma API ou qualquer variação ou combinação deles. O próprio serviço de identificação é uma aplicação dependendo da forma que for implementado.

Como funciona

Para verificar se as credenciais de um usuário estão corretas, ele envia seu nome e senha para o serviço de identificação.

Este por sua vez, tendo a lista de usuários e senhas, procura primeiro o nome de usuário e se ele existir, verifica se ele informou a senha correta. Se tudo estiver ok, o usuário estará autenticado. Agora o acesso a cada recurso depende da autorização.

Aspectos da implementação

Alguns aspectos de implementação devem ser considerados no uso de um sistema de identificação, principalmente com relação à integração com o sistema, armazenamento e segurança.

Integração

Com relação à integração do serviço de identificação na aplicação, ela pode ser implementada de forma embutida ou compartilhada.

Embutida: O serviço de identificação está mesclado ao restante do código do sistema. Indicado para aplicações pequenas, onde o número de usuários não passa de cinquenta.

Compartilhada: Diversas aplicações usam o mesmo serviço de identificação. Ideal para sistemas onde o número de usuários passa de cinquenta.

Armazenamento e segurança

A listagem de credenciais, que será consultada quando um usuário tentar se autenticar, pode ser armazenada no próprio código, em um arquivo de texto ou em um banco de dados.

Com relação à segurança, a senha do usuário pode ser armazenada de forma pura ou criptografada.

Autorização

Depois que um desafio de autenticação é vencido, ou seja, depois que as credenciais estão ok, ele ganha uma chave. Com essa chave o serviço de identificação é capaz de autorizar o acesso a determinado recurso do sistema para este usuário. Em alguns casos a autorização é implementada manualmente, em outros ela é feita automaticamente.

Evolução da implementação

Quando existiam somente aplicações desktop e console, era comum armazenar as credenciais no próprio código ou em bancos de dados. Isso era feito porque dificilmente um usuário comum teria acesso a essas credenciais. Elas só eram acessadas através da aplicação, no momento em que o usuário faz login no sistema.

Com o surgimento dos sistemas web, as credenciais puderam ainda serem armazenadas em arquivos texto no servidor web, ainda sendo acessadas somente através da aplicação, quando se tentava autenticar, ou seja, o usuário continuaria não tendo acesso direto à listagem de credenciais.

Quando surgiram as aplicações mobile e as APIs, alguns desafios surgiram. No início usou-se a mesma abordagem dos sistemas desktop. As credenciais eram armazenadas no código ou em bancos de dados, porém, a própria natureza mobile dos dispositivos obrigou o surgimento de novos padrões. E qual era o problema?

Com essas mudanças, tornou-se necessária uma abordagem mais robusta e flexível para o serviço de identificação. Uma abordagem que permitisse a autenticação em qualquer plataforma e de qualquer lugar.

Padrões Identity

A partir dessa necessidade, a partir de 2007 foram criados padrões de autenticação e autorização.

Deve-se exaltar a importância destes padrões, pois antes dele, qualquer desenvolvedor deveria implementar o serviço de identificação da sua maneira, mesmo sabendo da fragilidade desta abordagem.

Outra característica importante é que administradores de sistema, mesmo podendo ver a senha do usuário, não a entendem, pois estão criptografadas.

Funcionalidades

Algumas funcionalidades importantes também passaram a fazer parte do serviço de identificação:

Não faça de jeito nenhum

Por questões de segurança, algumas atividades não devem ser feitas por usuários e desenvolvedores

Operis Identity

Operis oferece uma solução de identificação que segue todos os padrões e pode ser acoplada a sistemas existentes e novos.

Resumo