A algum tempo procuro por uma especificação “ideal” de SSO, nos últimos 7 dias só penso, procuro na web e desenvolvo isso, e isso pela terceira vez. Como tudo que fazemos há momentos de euforia e eureca e momentos de total frustração. Desde o começo eu gostaria de ter o nosso produto o mais independente possível, mas pelo que vejo a saída mais viável é a mesma utilizada por outros inúmeros produtos, aí vem aquele pensamento de não “reinventar a roda”, então ao invés de criar tudo do zero preciso compreender o funcionamento e a arquitetura desses produtos para decidir qual a melhor para nós.
O candidato mais forte até agora é o JOSSO, que é um sistema open-source de SSO para Java, direcionado a JEE e Spring, parece ser um produto bem maduro, plugável, aceito pela comunidade e o mais importante, é bem integrado a várias tecnologias, dentre elas o Jboss Seam que estou utilizando.
Os outros candidatos são o Jboss-SSO e o OpenSSO.
A boa notícia de tudo isso foi a descoberta de que todos os sistemas de SSO do mercado utilizam alguns padrões e protocolos.
O grande “gargalo” das aplicações web em Java é o fato de que, de acordo com o a especificação, não existe um ponto comum entre sessões e contextos dos sites. Então a única coisa que pode guardar alguma informação, no lado do cliente, é o cookie. Esse foi um dos maiores desafios porque é se o browser do cliente não aceita cookie, então com isso em mente eu iniciei uma verdadeira cruzada em busca da arquitetura perfeita. Mas infelizmente concluí que dentro das nossas possibilidades atuais a única solução que temos além do cookie é utilizando algum proxy de rede ao qual o cliente já esta conectado como por exemplo o AD da Microsoft.
Isso tudo teve um lado bom, descobri o SAML que é um protocolo de arquitetura, estudei mais a fundo o uso de Valve e Realm no Tomcat e me interei mais sobre o conceito de serviços do servidor de aplicações utilizando MBean e JMX.
Estou batalhando nisso ainda, nos próximos dias quero manter esse blog atualizado com as próximas aventuras.
Até lá…