Mozilla BrowserID: More one way to sign in

Você pode ver este post em português também.

Recently I have tested the authentication mechanism offered by Mozilla at July/2011.

At first sight, the idea is excelent and simple. It offers an easy alternative to be built, more secure, portable and decentralized. More one alternative for the OpenID and oAuth, with the advantage of almost everyone have an e-mail account, thus being able to deal with these much more naturally.

In your proposal, the Mozilla Labs suggests the authentication be done with first factor, using any e-mail address of the user as your identity. Say also that the authentication be decentralized and server based, instead of domain and website based. This method free the applicaton of saving the login and password attributes of the user, and the users of saving the same for each service they use on the web.

The implementation

Implementation
  • The specification can be read here;
  • Based on a public/private keys system;
  • The user browser manages the authentication artifacts locally (all of them accessible via DOM with [window|session].localStorage). So you won’t see anything related to certificates and security devices;
  • The authentication pop-up is built in HTML5.

Pros

Pros
  • Ease of implementation;
  • Short lifetime for the public / private key (only few hours);
  • Data exchange via JSON.

Cons

Cons
  • Stills on first factor;
  • Shows the e-mail user to the website that is authenticating it. There is not a side effect or something unexpected, to inform the e-mail towards the website is an architectural decision made ​​by the staff of Mozilla Labs and explained by Ben Adida. OpenID takes an advantage here because it does not reveals the e-mail user for the application;
  • There is not a way to logout, it must be done on the application side invalidating the session data;
  • The usability of the feature bothers me at some points, for example triggering a pop-up and the procedure adopted at the first time of the user on the feature;
  • Another annoyance is about the decentralization. If there is more than one authentication point, how the whole stuff works when the user navigates within different points of authentication?

Conclusion

The idea is great, my first feeling was, “Is that all?” so simple that is. Despite having more cons than pros I feel I would make available this login way if I had the chance. I’m hoping that there are more authentication providers to enforce the effect of decentralization.

We must remember that this mechanism is only a part of the process: is the authentication. The work of identification and authorization of the user must be accomplished by the application yet.

Do you wanna test it?

I tested the engine in my virtual garage (it is also its inauguration, a place where my code could be tested “@live”). Besides my garage, the Mozilla website offers the MyFavoriteBeer, a place where the login process is working with this feature.

Mozilla BrowserID: Mais um mecanismo de login

You can see this post in english too.

Recentemente testei o mecanismo de autenticação lançado pela Mozilla em Julho/2011.

À primeira vista, a idéia é excelente e simples. Oferece uma alternativa fácil de ser implementada, segura, portável e descentralizada. É mais uma alternativa para o OpenID e ao oAuth, com a vantagem de que praticamente todos possuem uma conta de e-mail e por isso lidam com estas de forma muito mais natural.

Em sua proposta, a Mozilla Labs sugere que a autenticação seja de primeiro fator utilizando quaisquer endereço de e-mail do usuário como sua identidade. Reza também que a autenticação seja descentralizada e baseada em servidores de e-mail, ao invés de domínios e websites. Este método libera as aplicações de guardar os atributos de login e senha dos usuários, e os usuários de guardar o usuário/senha para cada serviço na web que utilizem.

A implementação

Implementação
  • A especificação pode ser lida aqui;
  • Utiliza sistema de chaves pública/privada;
  • O navegador do usuário gerencia os artefatos de autenticação localmente (todos acessíveis via DOM com [window|session].localStorage), ou seja, nada relacionado a certificados ou dispositivos de segurança;
  • O pop-up de autententicação é implementado em HTML5.

Prós

Prós
  • Facilidade de implementação;
  • Tempo de vida curta para as chaves pública/privada (são apenas algumas horas);
  • Troca de dados via JSON.

Contras

Contras
  • Ainda é de primeiro fator;
  • Revela o endereço de e-mail do usuário para o website que está autenticando-o. Não é um efeito colateral ou algo não esperado, informar o endereço de e-mail para o website é uma decisão de arquitetura tomada pelo pessoal da Mozilla Labs e explicada por Ben Adida. O OpenID aqui leva vantagem pois não revela os endereços de e-mail do usuário;
  • Não existe uma forma de realizar logout, ele deve ser feito do lado da aplicação invalidando os dados de sessão;
  • A usabilidade do recurso me incomoda em alguns pontos, como disparar um janela pop-up e o processo adotado quando trata-se da primeira vez do usuário.
  • Outro ponto incômodo é sobre a descentralização. Se há mais de um ponto autenticador, como a autenticação funcionará quando o usuário navegar em duas aplicações com pontos autenticadores diferentes?

Conclusão

A idéia é excelente, a minha primeira sensação foi de “É só isso?” de tão simples que é. Apesar de ter apresentado mais contras do que prós sinto que disponibilizaria mais esta forma de login se tivesse a chance. Torço para que existam mais autenticadores para fazer valer o efeito da descentralização.

Só é preciso lembrar que este mecanismo é apenas uma parte do processo: a autenticação. O trabalho de identificação e autorização do usuário ainda deve ser realizado pela aplicação.

Quer testar?

Testei o mecanismo na minha garagem virtual (é sua inauguração também, meus testes poderão ser testados “ao vivo” neste local). Além de minha garagem, a Mozilla oferece o website MyFavoriteBeer onde o login já utiliza este recurso.