Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/07/2011, 23:31
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 9 meses
Puntos: 260
Sonrisa Respuesta: ¿Cual es la mejor manera de enviar datos entre aplicacion escritorio a Web

Hola,

Cita:
Iniciado por Ronruby Ver Mensaje
¿De que manera ustedes pasan datos digamos entre una aplicación de escritorio y un WebService?
Lo que me preocupa es el tema de la autorización y la autenticación. ¿Tal vez con OAuth?
Los WebServices como sabes con simples Servlets que corren sobre un servidor web, en este caso un contenedor de aplicaciones Java. Por lo tanto dependen de los servicios y prestaciones que te ofrezca dicho servidor, casi todos los servidores web permiten colocar certificados para conexiones seguras basadas en SSL, y todo lo que esto conlleva, túneles, encriptación, etc.

Para la autenticación por usuario es lo mismo, depende primordialmente de las características del servidor web, así como por ejemplo Tomcat permite crear un recurso adicional para conectarse a una fuente de seguridad, ya sea base de datos, archivos de texto, creo que la seguridad integrada del OS, etc.; esta autenticación la provee el protocolo HTTP por defecto, con un desafío de pregunta y respuesta de contraseñas.

Adicionalmente puedes crear un filtro en Servlets que te provea una tercera capa de seguridad, implementada por headers, cookies o inclusiva en el mismo request/response del webservice como una etiqueta adicional en el XML.

A mi parecer, más encriptación y contraseñas sería paranoia, aunque definitivamente, si no está bien implementado simplemente va a ser una falsa sensación de seguridad.

Cita:
Iniciado por Ronruby Ver Mensaje
... El WebService, que se le envia y devuelve un XML, seria algo sencillo pero no todo el mundo debería estar autorizado a acceder a este. Tampoco quiero que la información que envío desde la aplicación de escritorio pueda ser vista por un tercero (crear una conexión segura). ...
Adicionalmente puedes crear un filter que desencripte el XML antes que llegue al Servlet del WebService.

Cita:
Iniciado por Ronruby Ver Mensaje
... El WebService podría no estar implementado en Java, aunque no se descarta la posibilidad. Es mas probable de todas maneras que se use PHP. Y la aplicación tal vez no solo sea una aplicación de escritorio sino también una aplicación para Blackberry y/o Android. ...
No importa que no esté implementado en Java, en Internet Information Server, si ese fuera el caso, se puede implementar exactamente igual con el SSL, la autenticación integrada del OS o contraseñas que la provee el protocolo HTTP, aunque me queda la duda de los filtros en .NET pero seguramente ha de ser posible, usando ISAPI.

Ahora el posible problema es la aplicación de escritorio, en Java con las librerías de java.net y NIO, y ahora más con la venida de JDK7, puedes crear un consumidor de servicios que use certificados digitales SSL, que siga el protocolo HTTP en la autenticación integrada, y que te permita encriptar el flujo de datos por el socket antes de salir al internet sin problemas.

Bueno, no sin antes leerte unos cuantos manuales o libros que expliquen todos estos procedimientos. Solo con NIO 2 tienes para un buen rato. Pero aún así, con tiempo y dedicación hasta lo podrías implementar tu mismo en lenguage C con un par de librerías, principalmente de encriptación y eso.

Cita:
Iniciado por Ronruby Ver Mensaje
... ¿Como lo hacen ustedes? ...
Nunca he implementado todo lo que mencioné junto, normalmente he implementado SSL y contraseñas por formulario en texto plano, o autenticación HTTP con encriptación, u otros, pero por suerte nunca he necesitado todo junto.

Cita:
Iniciado por Ronruby Ver Mensaje
... PD: Sé que la pregunta no necesariamente va relacionada con Java (sino que es algo mas general). Pero de haber alguna forma que Java me permita hacerlo sin recurrir a otras librerias, mejor aun.
Según mis conocimientos, que pueden fallar en algunas cosas, todo lo puedes hacer con el JDK 5 y Apache 6, pero por supuesto que te aconsejaría usar siempre las mejores herramientas.

Saludos,