CAS 3.4.6 + alfresco 3.3 + WebServices [RESUELTO]

cancel
Showing results for 
Search instead for 
Did you mean: 
bandolero30
Member II

CAS 3.4.6 + alfresco 3.3 + WebServices [RESUELTO]

Llevo varias semanas dándole vueltas al siguiente problema:

Tras integrar el WCM de alfresco con CAS, el consumo de los servicios web ha cambiado. Cuando antes mediante el SDK estándar (apis php) con pequeños cambios referentes al control de errores me permitía subir, acceder y mostrar contenido de alfresco (mediante startSession(usuario,password)), tras la integración con CAS (que con WCM va perfecto) ahora no funciona este consumo de los servicios web, recibiendo la siguiente excepción:
Repositorio:
Repository Object ( [_connectionUrl:RepositorySmiley Tonguerivate] => http://localhost:8080/alfresco33_wcm/api [_host:RepositorySmiley Tonguerivate] => localhost [_port:RepositorySmiley Tonguerivate] => 8080 )
COMIENZA LA LLAMADA A STARTSESSION.
function_name:
startSession
Array ( [0] => Array ( [username] => daniel.perez@sisse.es [password] => sisse ) ) arguments:
1
Array ( ) options:
1
Array ( ) input_headers:
1
Array ( ) output_headers:
1

SoapFault Object ( [messageSmiley Tonguerotected] => Error finding "uri" property [string:ExceptionSmiley Tonguerivate] => [codeSmiley Tonguerotected] => 0 [fileSmiley Tonguerotected] => C:\workspace\Operaciones\aapi\Alfresco\Service\WebService\AlfrescoWebService.php [lineSmiley Tonguerotected] => 84 [trace:ExceptionSmiley Tonguerivate] => Array ( [0] => Array ( [file] => C:\workspace\Operaciones\aapi\Alfresco\Service\WebService\AlfrescoWebService.php [line] => 84 [function] => __soapCall [class] => SoapClient [type] => -> [args] => Array ( [0] => startSession [1] => Array ( [0] => Array ( [username] => daniel.perez@sisse.es [password] => sisse ) ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) ) ) [1] => Array ( [file] => C:\workspace\Operaciones\aapi\Alfresco\Service\WebService\AlfrescoWebService.php [line] => 53 [function] => __soapCall [class] => AlfrescoWebService [type] => -> [args] => Array ( [0] => startSession [1] => Array ( [0] => Array ( [username] => daniel.perez [password] => sisse ) ) ) ) [2] => Array ( [file] => C:\workspace\Operaciones\aapi\Alfresco\Service\Repository.php [line] => 76 [function] => __call [class] => AlfrescoWebService [type] => -> [args] => Array ( [0] => startSession [1] => Array ( [0] => Array ( [username] => daniel.perez [password] => sisse ) ) ) ) [3] => Array ( [file] => C:\workspace\Operaciones\aapi\Alfresco\Service\Repository.php [line] => 76 [function] => startSession [class] => AlfrescoWebService [type] => -> [args] => Array ( [0] => Array ( [username] => daniel.perez [password] => sisse ) ) ) [4] => Array ( [file] => C:\workspace\Operaciones\aapi\aapi.php [line] => 600 [function] => authenticate [class] => Repository [type] => -> [args] => Array ( [0] => daniel.perez [1] => sisse ) ) [5] => Array ( [file] => C:\workspace\Operaciones\inc\RenderObject.php [line] => 805 [function] => alfws_existe_contenido [args] => Array ( [0] => 194737F.jp* ) ) [6] => Array ( [file] => C:\workspace\Operaciones\index.php [line] => 346 [function] => renderRackObjectS [args] => Array ( [0] => 2761 ) ) ) [previous:ExceptionSmiley Tonguerivate] => [faultstring] => Error finding "uri" property [faultcode] => Client [faultcodens] => http://schemas.xmlsoap.org/soap/envelope/ )

Esto solo se produce si lanzo la autenticación sobre el WCM integrado en CAS. Parece ser que los servicios web no saben como autenticarse sobre el CAS y de algún modo se han "enterado" de esta integración dado que no funciona como antes. El mensaje es "Error finding "uri" property" y parece que está relacionado con la serialización (no se si es dar palos de ciego). La integración con CAS del WCM la he realizado mediante la creación de un filtro personalizado y las clases oportunas asociadas al filtro. Hasta ahí todo perfecto con el WCM (interfaz web de alfresco). El WS deja de funcionar.

Desconozco si tiene que ver con la implementación __doRequest de las apis de Alfresco para PHP..

Alguien ha conseguido integrar los servicios web de alfresco con CAS???

Saludos y muchas gracias por vuestro tiempo.

——————-
Daniel P. Adarve
2 Replies
bandolero30
Member II

Re: CAS 3.4.6 + alfresco 3.3 + WebServices [RESUELTO]

bien, el extraño error uri correspondía a que no se creaba el objeto soapclient correctamente.
Ahora si se crea pero obtengo el siguiente error en CAS derivado de los estilos top.jsp de spring (?¿) en la llamada a los servicios web de alfresco. He quitado los estilos y ya no se produce error en cas pero sí se obtiene la siguiente excepción soap:

Repository Object ( [_connectionUrl:RepositorySmiley Tonguerivate] => http://localhost:8080/alfresco33_wcm/api [_host:RepositorySmiley Tonguerivate] => localhost [_port:RepositorySmiley Tonguerivate] => 8080 )

ERROR: SoapFault Object ( [messageSmiley Tonguerotected] => SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://localhost:8080/alfresco33_wcm/api/AuthenticationService?wsdl' : Attribute alt redefined [string:ExceptionSmiley Tonguerivate] => [codeSmiley Tonguerotected] => 0 [fileSmiley Tonguerotected] => C:\workspace\Operaciones\aapi\Alfresco\Service\WebService\AlfrescoWebService.php [lineSmiley Tonguerotected] => 43 [trace:ExceptionSmiley Tonguerivate] => Array ( [0] => Array ( [file] => C:\workspace\Operaciones\aapi\Alfresco\Service\WebService\AlfrescoWebService.php [line] => 43 [function] => SoapClient [class] => SoapClient [type] => -> [args] => Array ( [0] => http://localhost:8080/alfresco33_wcm/api/AuthenticationService?wsdl [1] => Array ( ) ) ) [1] => Array ( [file] => C:\workspace\Operaciones\aapi\Alfresco\Service\WebService\WebServiceFactory.php [line] => 35 [function] => __construct [class] => AlfrescoWebService [type] => -> [args] => Array ( [0] => http://localhost:8080/alfresco33_wcm/api/AuthenticationService?wsdl [1] => Array ( ) ) ) [2] => Array ( [file] => C:\workspace\Operaciones\aapi\Alfresco\Service\Repository.php [line] => 70 [function] => getAuthenticationService [class] => WebServiceFactory [type] => :: [args] => Array ( [0] => http://localhost:8080/alfresco33_wcm/api ) ) [3] => Array ( [file] => C:\workspace\Operaciones\aapi\aapi.php [line] => 605 [function] => authenticate [class] => Repository [type] => -> [args] => Array ( [0] => daniel.perez [1] => sisse ) ) [4] => Array ( [file] => C:\workspace\Operaciones\inc\RenderObject.php [line] => 805 [function] => alfws_existe_contenido [args] => Array ( [0] => 194737F.jp* ) ) [5] => Array ( [file] => C:\workspace\Operaciones\index.php [line] => 346 [function] => renderRackObjectS [args] => Array ( [0] => 2761 ) ) ) [previous:ExceptionSmiley Tonguerivate] => [faultstring] => SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://localhost:8080/alfresco33_wcm/api/AuthenticationService?wsdl' : Attribute alt redefined [faultcode] => WSDL )
bandolero30
Member II

Re: CAS 3.4.6 + alfresco 3.3 + WebServices [RESUELTO]

bueno, en vistas a que no existe mucho movimiento aquí (menos en agosto) me contesto yo mismo.

El error posiblemente radica en intentar que un servicio web se valide en CAS. Dado que hemos tenido bastantes dificultades para esto, finalmente hemos disgregado la validación. LDAP para WS y CAS para JSF (WCM).

Por tanto lo único que hay que tener en cuenta es cuándo se aplicarán los filtros de CAS. En el web.xml hay que modificar los filtros que se muestran como /* por /faces/* para que solo se empleen en las peticiones del WCM. Cambiando esto se mantienen las 2 autenticaciones; ldap para WS y CAS para la interfaz web.