cancel
Showing results for 
Search instead for 
Did you mean: 

Utilizar la api login REST para obtener un ticket

magarcia_sm
Star Contributor
Star Contributor

Buenas tardes a todos

   Estamos intentando crear un archivo JS para que desde una web podamos obtener un ticket de autenticación en nuestro Alfresco 4.2. Estamos intentando utilizar la api de REST mediante un script realizando esta llamada

function getTicket(login,password, numDoc, clave)
{


        var urlTicket="http://urlAlfresco/service/api/login?u="+login+"&pw="+password;
        
        
          var xmlHttp = new XMLHttpRequest();
          
          xmlHttp.open( "GET", urlTicket, false ); // false for synchronous request
          xmlHttp.setRequestHeader('Access-Control-Allow-Headers', '*');
          xmlHttp.setRequestHeader('Access-Control-Allow-Origin', '*');
          xmlHttp.onload = function()  {
            var requestData = xmlHttp.responseText;
            var ticket = "";
            if ((requestData!=='')&&(requestData!==NULL)){ticket = requestData.toString().substring(47,94);}
            if (ticket!=="")
                {
                    window.location.href = "http://urlAlfresco/service/showContent?nFact="+numFact+"&cPro="+CIF+"&alf_ticket="+ticket;
                }    
          }
          
          
         xmlHttp.onerror=function(){alert("No funciona");};
         xmlHttp.send(null);
       

}

El problema es que la llamada para hacer el request (GET) de la función http://urlAlfresco/service/api/login nos falla y no nos da respuesta. (Hemos intentado el método POST) pero nos da el mismo fallo.

Hemos leido por ahí que parece ser que hay un problema con la configuración CORS y la versión de Alfresco 4.2 que estamos utilizando.  Pero aunque hemos aplicado los filtros en el fichero web.xml que hemos encontrado en otros foros, sigue sin funcionarnos.

Nosotros lo que pretendemos es que un tercer sistema independiente pueda enviar una llamada a una URL desde JavaScript introduciendo como parámetros el login y password del usuario, y los metadatos del archivo almacenado en Alfresco y que este se descargue o muestre en el navegador (son todos PDF's).

Si no podemos utilizar el método http://urlAlfresco/service/api/login, ¿Qué opciones nos quedan para poder obtener esto que pretendemos conseguir?.

¿Es posible conseguir esto en Alfresco 4.2?

12 REPLIES 12

angelborroy
Community Manager Community Manager
Community Manager

Hagamos una recopilación a ver si encontramos una solución:

  • En vuestro Tomcat / Alfresco existe una restricción para CORS. Yo no tengo esta restricción en mi instalación local de 4.2.f, de hecho creo que el "CORS filter" (com.thetransactioncompany.cors.CORSFilter) fue introducido por Alfresco en la 5.0
  • Las invocaciones mediante JSONP a la API REST de Alfresco no funcionan porque la API REST de Alfresco no soporta este tipo de peticiones
  • Las invocaciones mediante JSONP a la API CMIS funcionan, pero no solucionan vuestro problema porque estáis intentando acceder a un webscript propio

Bajo mi punto de vista la solución más sencilla sería montar un Apache delante del Tomcat de Alfresco y establecer en ese Apache de manera genérica la cabecera que os permitirá saltaros la restricción:

Header set Access-Control-Allow-Origin "*"
Hyland Developer Evangelist

angelborroy
Community Manager Community Manager
Community Manager

Por cierto, ahora he recordado el mecanismo que se usaba en 4.2.

Quizá esto te sirva de ayuda: Introducing the CSRFPolicy in Alfresco Share | Erik Winlöf's blog  

Hyland Developer Evangelist

magarcia_sm
Star Contributor
Star Contributor

Gracias por la ayuda, 

Al final después de probar mil y una cosa diferente hemos tenido que improvisar. Utilizando los WebService de Alfresco recuperamos el ticket y una vez lo tenemos llamamos al WebScript para mostrar el documento. No es la manera más idónea ni cómoda de trabajar pero nos soluciona el problema de momento.

Un saludo.

Getting started

Tags


Find what you came for

We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.