web-services - services - web service con java y mysql
Glassfish JAX-WS lado a lado SSL/servicio web EJB inseguro (3)
¿Por qué simplemente no proxy el servidor de aplicaciones con Apache HTTP Server o similar? Normalmente lo hago de esta manera y dejo HTTP handshaking / conexión de texto abierto a HTTP en frente de él.
¿Es posible ejecutar un solo bean @WebService como seguro e inseguro al mismo tiempo, preferentemente utilizando la misma URL excepto la diferencia del protocolo http / https?
Puedo ejecutar el servicio de forma segura o insegura usando:
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
o
<transport-guarantee>NONE</transport-guarantee>
dentro de sun-ejb-jar.xml
ES DECIR.
<ejb>
<ejb-name>MyEJB</ejb-name>
<webservice-endpoint>
<port-component-name>MyWebService</port-component-name>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</webservice-endpoint>
</ejb>
Sugerencias?
Soy consciente de que esta es una pregunta bastante antigua. Sin embargo, tengo ganas de proporcionar esta respuesta ya que recientemente me encontré con el mismo problema.
De acuerdo con la documentación de Oracle:
- Especifique CONFIDENCIAL cuando la aplicación requiera que se transmitan datos para evitar que otras entidades observen el contenido de la transmisión.
- Especifique NINGUNO para indicar que el contenedor debe aceptar las solicitudes restringidas en cualquier conexión, incluida una desprotegida.
Como esto no es más que una garantía de transporte, un valor NINGUNO debe proporcionarle la característica que desea, es decir, un Servicio Web EJB que responda tanto a las solicitudes http como a https.
El problema aquí es un error en Glassfish que aparentemente lo restringe a aceptar solicitudes HTTP o https a su servicio web EJB:
- Error en Glassfish 2.x: https://java.net/jira/browse/GLASSFISH-5621
- Error en Glassfish 3.x: https://java.net/jira/browse/GLASSFISH-19293
De acuerdo con la última tarea de jira, el problema debería solucionarse y funcionar desde Glassfish 4.0_b75.
simplemente elimine la <transport-guarantee>CONFIDENTIAL</transport-guarantee>
, sus beans estarán disponibles en http y https también. <transport-guarantee>CONFIDENTIAL</transport-guarantee>
significa seguridad estricta, cualquier solicitud http que viene se redirige a https (ssl).
Al eliminar esta <transport-guarantee>CONFIDENTIAL</transport-guarantee>
obtendrás una gran flexibilidad.