A crise das infinitas identidades

Day 303: My Identity

Existe uma crise de identidade no mundo digital. Imagino que todos experimentam dessa crise diariamente nos diversos serviços e sites da Internet, onde a grande maioria gerencia o seu usuário e senha de forma única. Entretanto, quando pensamos nas empresas, imaginamos que por compartilharem da mesma infraestrutura de comunicação os sistemas internos utilizariam um mesmo usuário e senha. Infelizmente essa não é a realidade de muitas organizações.

As aplicações que detém a sua própria base de usuários são as que mais existem nos ambientes corporativos. Um dos principais motivos desse tipo de abordagem ser mais popular entre os desenvolvedores é que é mais facil e rápido fazer um mecanismo de autenticação próprio, eliminando muitas vezes opções para gerenciar a autorização na aplicação. Uma abordagem, como se diz no ditado: bonitinha, mas ordinária.

Essas aplicações são potencialmente inseguras. Não existe uma política de senha adequada, o desenvolvedor tem controle total sobre as contas e na maioria das vezes cria um problema operacional em relação ao gerenciamento das contas dos usuários daquela aplicação.

A utilização de um banco de dados de usuários centralizado, como é o Active Directory, integrada na aplicação é um modelo bem mais maduro e que provê automaticamente um método de autorização baseado nos atributos do Active Directory, como o grupo que o usuário pertence. O desafio neste caso é como fazer com que usuários de outros domínios possam utilizar o seu sistema, adicionando é claro a complexidade para o acesso pela Internet.

Para ilustrar melhor aonde quero chegar, vamos imaginar que o governo (por ser uma entidade com diversos órgãos) vai desenvolver um sistema unificado, ou seja, qualquer órgão terá que acessar esse sistema com seus usuários para a emissão de passagem áreas e concessão de diárias. Cada órgão tem sua própria base de usuários e o trabalho de gerenciamento e manutenção de cada uma delas permanece como está. Os desenvolvedores do sistema tem que se preocupar em montar a lógica de autorização baseadas em campos comuns que cada usuário tem, por exemplo, cargo, função, órgão, etc, e cada órgão é responsável por manter esses campos atualizados e fidedignos para que não ocorram problemas de acesso.

O usuário é autenticado pelo orgão que detem os seus dados -  Entendemos por autenticação o processo que o usuário tem que provar quem ele é, tipicamente por meio de um usuário e senha. Uma vez que o usuário foi autenticado, a aplicação recebe um pacote montado, pré-definido pela aplicação, que é utilizado para verificar se o usuário que requisitou o acesso tem permissão para usar aquele recurso.

Esse sistema de emissão de passagem só poderia ser possível com a utilização de Claim Based Identity, que vou detalhar mais nos próximos post, que vão ser dedicados ao ADFS (Active Directory Federation Services).