Pessoal, seguinte… eu comecei uma discussão em uma thread (anexo I) mas pensava que a preocupação que eu precisaria ter era apenas com a solicitação… mas só agora percebi que o meu caso requer uma preocupação também na resposta da URL.
Nunca trabalhei com WebServices (se o fiz foi sem saber que era, sem usar nenhum framework específico e tal rs), mas acho que meu problema seria melhor solucionado com a idéia de WebServices.
Vejam, na íntegra (mas ainda abstraindo alguns detalhes irrelevantes), qual é o meu problema:
- Tenho uma aplicação rodando em Java Web.
- Para um pequeno subconjunto de operações é necessário fazer uma autenticação que, por alguns motivos, precisa ser feita em um programa (uma única página) escrito em ASP.
- Para evitar que algum usuário sobrecarregue o servidor (enviando muitas solicitações) e para que ele não tenha acesso aos dados de segurança que o programa em ASP retorna, o programa em ASP só pode responder a solicitações feitas pela minha aplicação Java.
- Para as operações que requerem esse tipo de autenticação serem realizadas tenho que garantir que o código ASP tenha autenticado o usuário, ou seja, tenho que garantir que as solicitações a tais operações tenham passado pelo programa ASP.
Assim sendo, o que estou precisando é que a aplicação em ASP só possa ser chamada a partir da minha aplicação Java e a aplicação Java só possa operar após a autenticação em ASP. O flxuo seria mais ou menos assim:
- Cliente solicita operação restrita na aplicação Java
- Aplicação Java solicita autenticação na aplicação ASP (o uso dessa segunda aplicação deve ser transparente para o cliente… ele deve pensar que está usando apenas a aplicação Java)
- Aplicação ASP confirma autenticação
- Aplicação Java só continua a operação se o passo 3 foi realizado.
A comunicação de Java para ASP pode ser feita como foi discutido entre mim e o peron na thread. Mas tudo foi implementado sem ajuda de nada de segurança. Porém, ainda ficaria faltando fazer a comunicação ASP para Java.
Como está havendo essa necessidade de abrir-se uma transação que envolve comunicação entre dois programas, cada um escrito em linguagens diferentes e rodando em ambientes diferentes, pelo super básico que entendo de WebServices acho que a solução sairia por aí.
Mas antes de começar a pesquisar sobre WebServices, gostaria da opinião de vocês para dizerem se é a única solução ou se tem alguma coisa mais simples de fazer sem a necessidade de alguma “gambiarra”.
anexo I: Caso alguém queira acompanhar a discussão desde o início, segue a thread: http://www.guj.com.br/posts/list/67792.java
