Ao surgir a necessidade de auntenticar um e-token no navegador, utilizei o Java. Porém não imaginava como seria difícil manter a sessão do ususário através do plugin.
Pesquisei na documentação e outras fontes, mas estava difícil. Aparentemente se você faz uma chamada detro do Applet, utilizando a classe URLConnection, é uma chamada totalmente diferente.
Mas existe uma solução simples, e que pode evoluir até para algo mais elegante, mas me atenho ao básico que é minha necessidade no momento.
Ao chamar a tag (embed, object ou applet) passe como parametro o nome e o valor do cookie que controla sua sessão. Em PHP fica assim:
<param name="cookie_name" value="nome-do-cookie >
<param name="cookie_value" value="" >
Capture dentro do Applet o valor:
String cookie_name = getParameter('cookie_name');
String cookie_value = getParameter('cookie_value');
E ao realizar a chamada para a url que deseja, passe o cookie:
URLConnection conn = new URLConnection(url);
conn.setRequestProperty('Cookie', cookie_name + "=" + cookie_value);
Pronto.
Existe uma maneira de pegar os sent headers, dentre eles os cookies enviados, automaticamente e em um laço, repassá-los adiante, mas como eu comentei antes, não foi minha necessidade algo tão elegante.
Keep it simple!
quarta-feira, 25 de agosto de 2010
Assinar:
Postar comentários (Atom)
Olá Marco. Estou com problema semelhante ao seu mas sua solução não funcionou... Tenho uma aplicação web (HTTPS) que utiliza certificado digital do usuário para efetuar login. Depois de logado, a página carrega uma applet para fazer download de um arquivo do servidor para edição com BrOffice e ao final salvar este arquivo. Tudo isso usando SSL. Ocorre que antes mesmo de ler o jnlp a JVM solicita certificado do usuário novamente! Alguma dica?
ResponderExcluirVc já reparou se o user-agent é o mesmo? Comigo aconteceu que o que eu utilizava na segunda parte do acesso acabou não sendo o mesmo user-agent e por isto ele criava uma nova sessão. Cheque os sent-headers...
ResponderExcluir