PHP e Java

oi galera

eu tenho uma aplicação php rodando, e um serviço web java. O serviço Java é chamado pelo PHP (transparente ao usuário). Nem da pra perceber que mudou a linguagem.

Só que por questão de segurança, quero passar o usuário que está logado no PHP para o Java…para confirmar que ele tem acesso a aplicação.
Alguem pode me dar uma luz, dizendo como o php passa informações para o Java?

thank´s

[quote=javaCBA]oi galera

eu tenho uma aplicação php rodando, e um serviço web java. O serviço Java é chamado pelo PHP (transparente ao usuário). Nem da pra perceber que mudou a linguagem.

Só que por questão de segurança, quero passar o usuário que está logado no PHP para o Java…para confirmar que ele tem acesso a aplicação.
Alguem pode me dar uma luz, dizendo como o php passa informações para o Java?

thank´s[/quote]
1 - Querystring (uma chamada na url com parâmetros)
2 - Um arquivo texto onde um grava e o outro lê ( :-/// )
3 - webservices ( :-))) )

Voce pode fazer com um form, mas tera que criptografar os dados do usuario


<form action="meuServlet" method="post" id="form">
    <input type="text" value="aqui vai os dados que o php deve escrever criptografado" name="login">
    <input type="text" value="aqui vai os dados que o php deve escrever criptografado" name="senha">
</form>

faz tambem uma funcao javascript que deve ser chamada no onload da pagina html que pega o form e faz o submit

se eu entendi bem, você possui uma aplicação PHP e uma aplicação Java que precisam compartilhar a mesma sessão.
Se for realmente isso você pode se autenticar em um terceiro lugar, comum as 2 aplicações, por exemplo guardar a autenticação no banco de dados e gerenciar a partir do cookie de sessão (se o servidor for o mesmo), ou senão terá de passar seu token próprio.
criar um token próprio baseado em algumas variaveis como por exemplo endereço de ip e gerenciar a autenticação a partir do banco de dados costuma ser o caminho mais facil…

mas confesso que não entendi muito bem a sua pergunta…

jmmenezes, eh isso mesmo que vc disse.

nao compartilha o mesmo servidor, um eh tomcat outro eh jboss. Porem acessamos o mesmo banco.
Pensei em fazer uma tabela de acesso pra controlar isso, mas como eu apagaria essa tabela quando o usuario desconectasse?

jaboot

passar parametro, jamais. Ficará disponivel o login do usuario? Não tem como…meu login eh cpf…fica complicado exibir isso.
Arquivo texto também nao eh uma boa coisa. Ja pensou 1000 usuarios acessando simultaneamente a aplicação, e toda hora eu alterar um arquivo texto só para fazer essa comunicação?
web service me atende, mas queria algo mais simples só para tornar disponivel

Cristian

sem chance, minha aplicação java não tem que ter tela de login…a autenticação já é feita pelo php. Só quero aproveitar os dados. E não uso jsp/servlet. Uso jsf.

javaCBA… Use WS.

Não vejo nada mais simples para a situação. Troca de informações que você pode criptografar e pegar do outro lado e descriptografar.

Abs []

OK.

Vamos lá:

  1. Se for fazer por banco de dados
    Gere um ID de autenticação e amarre ao endereço IP. Você pode usar o mesmo ID de sessão do PHP já que é ele quem faz a autenticação.
    Grave no banco e veja se a tabela continua valida.
    Você precisará de algum processo para limpar esta tabela. Ai depende muito de como funciona sua aplicação, se já tem algum robô que faz alguma tarefa agendada pode acrescentar isso. Senão terá de fazer algo desse tipo. Um simples job no banco de dados resolve isso facil. Dependendo do volume de informações pode fazer até mesmo durante a criação de uma nova sessão, limpar as sessões expiradas… baseando-se em alguma data de controle… mas seria uma POGizinha para evitar um robô ou job mesmo.

  2. Se for via webservice (você não precisa necessariamente usar soap).
    Você deve pegar esse ID, atrelado ao endereço ip e mandar para alguma url do php a partir do Java que veja se a sessão é valida ou não.
    Pode até mesmo ser uma simples chamada por GET que responde S ou N baseando-se no id de sessão e endereço ip.
    O problema é que desta forma você não tem como usar o ip da chamada em si, portanto esta chamada precisa ter algum tipo de segurança para ser chamada somente pelo servidor.

Em ambos os casos acho que funcionaria bem… mas quem taria gerenciando a autenticação seria o PHP…
O ideal mesmo seria centralizar a autenticação em outro lugar… mas talvez não precise disso.

Abs