Propagação de Identidade em Web Service  XML
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Autor Mensagem
Talles Santana
Entusiasta Java
[Avatar]

Membro desde: 17/12/2008 22:40:03
Mensagens: 21
Offline

Pessoal,
estou com o seguinte cenário:
Uma aplicação java já faz autenticação dos usuários e precisa repassar(propagar a identidade) o id do usuário quando realizar a invocação de um web service(java).
Preciso fazer isso da forma menos intrusiva e mais simples para causar o mínimo de impacto e alteração nas aplicações e/ou web services.

Tive uma idéia para solucionar o problema:
Uma invocação de web service no final das contas é uma mensagem HTTP que tem uma mensagem SOAP no payload.
Assim, a aplicação consumidora do serviço coloca o id do usuário dentro da mensagem SOAP.
O serviço passaria a lidar com a questão de 'ler' o id do usuário dentro da mensagem SOAP.

Ambiente de desenvolvimento: Oracle Workshop for WebLogic.
Servidor: Oracle Weblogic Server

Infelizmente, não encontrei recursos no ambiente que me permitam alterar a mensagem de invocação do serviço.

Podem me ajudar com essa tarefa?

Grato,
Talles Santana
amhfilho
JavaTeenager

Membro desde: 26/01/2005 08:23:41
Mensagens: 167
Localização: São José dos Campos - SP
Offline

Você quer desenvolver um serviço? Ou um cliente para um serviço existente? Nâo deu pra entender muito o seu pronblema
Talles Santana
Entusiasta Java
[Avatar]

Membro desde: 17/12/2008 22:40:03
Mensagens: 21
Offline

Já tenho o serviço e já tenho o cliente do serviço.

O cliente do serviço é uma aplicação que, para desempenhar seu papel, pode realizar uma chamada ao serviço.
Eu quero apenas passar o ID do usuário, que o cliente sabe qual é, para o serviço no momento de sua invocação/chamada.
Gostaria de fazer isso sem alterar a assinatura do serviço.
amhfilho
JavaTeenager

Membro desde: 26/01/2005 08:23:41
Mensagens: 167
Localização: São José dos Campos - SP
Offline

Se este ID não está na assinatura, você tem que alterar. A não ser que você passe isto dentro de algum outro elemento existente e trate isso na implementação do serviço
Talles Santana
Entusiasta Java
[Avatar]

Membro desde: 17/12/2008 22:40:03
Mensagens: 21
Offline

Não dá para 'incluir' um elemento na requisição SOAP e o serviço tratar(ler) isso?
Talles Santana
Entusiasta Java
[Avatar]

Membro desde: 17/12/2008 22:40:03
Mensagens: 21
Offline

Então pessoal, seguindo o livro Professional Oracle Weblogic Server criei um serviço(classe) seguindo o modelo code-frist. O código do método do serviço é bem simples, seu funcionamento não é relevante.
Em seguida, criei uma aplicação consumidora do serviço. Ok, tudo funcionando.
Ao introduzir uma política no método do servico(getPoco(int id)), seguindo os moldes do livro, minha classe cliente não funciona mais e ao invocar o serviço é lançada a exceção indicando que a requisição não atende a política. Ok, isso era esperado já que incluí a política.

Então, realizei a alteração necessária na aplicação cliente para incluir o token na mensagem de requisição de modo que atenda a política.
Contudo, ao fazer o downcast (Map<String, Object> rc = ((BindingProvider) port).getRequestContext() dos stubs para obter o contexto da mensagem recebo
uma class cast exception. Já pesquisei na internet, mas até agora não vi nada que pudesse me ajudar. Alguém tem idéia do que seja? Foram os stubs gerados de forma incorreta ou tenho que adicionar algo no código?

Exception in thread "Main Thread" java.lang.ClassCastException: br.propid.clientepoco.wsclient.BuscaPocoService_PortType_Stub
at br.propid.cliente.Consumidor.main(Consumidor.java:35)

Ordem:
criei a classe do serviço, criei o build.xml do serviço e executei.
criei o build.xml do cliente, creiei a classe consumidora do serviço.
Para incluir a politica:
criei o UserTokenPolicy.xml e inclui a anotação na classe do serviço
adicionei, na classe cliente, o código que deveria inserir o token que atende a política

Abaixo, as fontes.


Classe Consumidora do Serviço


BUILD XML DO CLIENTE



Classe que representa o Serviço


BUILD XML DO SERVICO


UsernameTokenPolicy.xml

 
Índice dos Fóruns » Java Enterprise Edition (Java EE)
Ir para:   
Powered by JForum 2.1.8 © JForum Team