2011-01-06 16 views
7

¿Puedo hacer una llamada JQuery al servicio WCF usando SOAP y WSHttpBinding?¿Puede hacer una llamada jQuery al servicio WCF utilizando SOAP y WSHttpBinding?

Si es así, ¿cómo? (¿algún ejemplo en la web?) Si no, ¿por qué no?

Como puede ver en this post, no puedo hacer que funcione.

Necesito poder usar WSHttpBinding para que pueda admitir SAML y WS-Security. Entiendo que el enlace básico HTTP no es compatible con ws-Security.

Todos los demás ejemplos en SO utilizan json (que puedo poner en práctica fácilmente) o basicHttpBinding.

Estoy obligado a utilizar SOAP y ws-Security para cumplir con los estándares OGC 07-118r8.

+1

creo jQuery había vuelto tan popular que la gente está tratando de hacer demasiadas cosas del lado del servidor en el lado JS. Debe definir los límites e identificar las líneas que separan claramente ambos mundos. –

+0

¿Cómo llamarías al servicio web y luego usarías javascript? – capdragon

Respuesta

3

Con algo como WS- * y la complejidad de WCF, ¿no sería más fácil crear una devolución de llamada jQuery async simple a otra página en su sitio que pueda aprovechar las bibliotecas de WS-Security integradas de .NET? Desde allí, puede iniciar una llamada al punto final WCF, procesar el resultado y devolverlo a la función jQuery como una respuesta fácil de leer.

Encontré algunos artículos que mencionan lo que estás tratando de hacer. Parece que esencialmente tendría que escribir su propia biblioteca jQuery WS-Security antes de que esto funcione directamente desde JavaScript (y me imagino que probablemente no sea práctico):

"Un servicio expuesto con" wsHttpBinding "implementos de enlace WS- Seguridad de la familia WS- * de especificaciones de servicios web. Como el enlace utiliza seguridad, la solicitud será rechazada. No se puede llamar al servicio sin implementar WS-Security en JQuery. Por lo tanto, para llamar al método de servicio, tenemos que compromiso con la seguridad ".

http://www.codeproject.com/Articles/311908/Calling-WCF-service-exposed-with-different-binding

"... wsHttpBinding, que es una unión que no funciona con AJAX SOAP."

http://www.west-wind.com/presentations/jquery/jquerypart2.aspx

1

¡De ninguna manera puede implementar WS * en JavaScript!

La mejor opción es crear otro enlace en el servidor y exponerlo como HTTP básico o incluso mejor que WCF REST.

+0

No es una opción ... los clientes necesitan comunicarse conmigo a través de WS- *, no descansar. Estamos obligados a seguir un estándar mencionado en mi pregunta. – capdragon

+0

¿Quiere implementar todo ese cifrado en JavaScript? Bueno, si puedes, probablemente seas rico, ya que abrirás muchas posibilidades, pero no sé si se ha hecho algo así. – Aliostad

+0

Veo su punto ... por lo que su cliente diciendo Javascript debería llamar a un servicio web REST WCF local (sin cifrar, ¿a quién le importa porque es local?) Que a su vez realiza la autenticación SAML al servidor remoto mediante SAML/WCF SOAP. – capdragon

0

Debería ser posible en teoría. Supongo que por el momento has descubierto cómo obtener tu token SAML y lidiar con WS-Security. WSHttpBinding se establece por defecto en soap 1.2, por lo tanto, mire la especificación de enlace http para averiguar cómo construir la solicitud usando jquery: http://www.w3.org/TR/soap12-part2/#soapinhttp o configure EnvelopeVersion.Soap11 en WSHttpBinding. ¡buena suerte!

+0

NO he descubierto la parte del token SAML. Pensé que sería mejor caminar antes de correr. Así que quería obtener un servicio básico de comunicación. Soy nuevo en WCF, así que no he configurado ningún EnvelopeVersion.Soap11, pero voy a investigar cómo hacerlo. Gracias. – capdragon

+0

Descubriré la parte de SAML/WS-Security primero porque es el mayor riesgo para el enfoque. No estoy seguro de que sea factible. Un enfoque mucho más fácil sería exponer otro punto final de WCF específico para el consumo de js y usarlo en su lugar, como otros han sugerido. – alexdej

Cuestiones relacionadas