none
Cómo pasar las credenciales a un Web Service externo (con Windows Authentication) desde un JavaScript ??? RRS feed

  • Pregunta

  • Tengo un problema de autenticación con un web service externo al CRM que consumo desde JavaScript en el CRM.
    El CRM y el Web Service se encuentran en el mismo dominio, pero en diferentes servidores físicos.
    Me funciona correctamente la invocación y el retorno, pero me solicita las credenciales cuando hago la invocación. Supongo que me falta configurar algo en el IIS donde tengo el Web Service instalado o quizás agregar algo en el IIS del CRM.
    Actualmente tengo como sitio de confianza la URL del Web Service en el servidor donde tengo el CRM.
    Espero que puedan ayudarme, es un problema que molesta al usuario final, ya que le solicita las credenciales.
    Saludos!


    Desarrollador
    martes, 1 de diciembre de 2009 14:46

Respuestas

  • Hay diferentes errores cuando se llama a un webservices externo del CRM mediante js, bueno yo lo llamo de esta forma asi resolví un problema de autentico

    var authenticationHeader = GenerateAuthenticationHeader();
    					
    
    var xmlCheck = "<?xml version='1.0' encoding='utf-8'?>"+ 
    		"<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'"+
    		" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'"+
    		" xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"+ 
    		authenticationHeader+ 
    		"<soap:Body>"+
    	  "<compruebaPaq xmlns='http://tempuri.org/'>" +
    	  "<idRegistro>"+objectID+"</idRegistro>"+
    	  "<nombreEntidad>"+objectTypeName+"</nombreEntidad>"+
    	  "</compruebaPaq>" +
    	"</soap:Body>"+ 
    	"</soap:Envelope>";			
    					
    	var xHReqCheck = new ActiveXObject("Msxml2.XMLHTTP");
    	xHReqCheck.Open("POST", "/ISV/Ws/Service1.asmx", false);
    	xHReqCheck.setRequestHeader("SOAPAction","http://tempuri.org/compruebaPaq");
    	xHReqCheck.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    	xHReqCheck.setRequestHeader("Content-Length", xmlCheck.length);
    	xHReqCheck.send(xmlCheck);
    Hay otro error que puede salir que es algo (no recuerdo bien el error) como que no encuentra el web service o que no se encuentra el servidor remoto. pues si sale esto lo que tienes que ver es la ruta del webservice por ejemplo yo tengo 

    /ISV/Ws/Service1.asmx
    Pero la forma correcta debería de ser 

    var f = prependOrgName("/ISV/Ws/Service1.asmx");


    Espero haber ayudado.

    Salu2

    Atilio
    • Marcado como respuesta Javier Ramos lunes, 16 de agosto de 2010 18:24
    martes, 1 de diciembre de 2009 15:47