Os dejo aquí unas notas sobre como casificar Alfresco Share, para la
version 4.x de Alfresco. Por defecto, Alfresco Share no es una
aplicación que esta casificada y que necesita algunos cambios
"out of the box" para que se autentique contra un servidor centralizado de
autenticación CAS.
La arquitectura planteada en este artículo sería algo así:

En el repositorio, debemos definir una cadena de autenticación
externa en el alfresco-global.properties
authentication.chain=external1:external,alfrescoNtlm1:alfrescoNtlm # IMPORTANTE! Sin esta propiedad Alfresco Share no se autenticará correctamente external.authentication.proxyUserName=
Estamos en la aproximación de que Alfresco Share y Alfresco
Repository conforman dos capas (máquinas) separadas.
En Alfresco Share, debemos añadir en primer lugar las algunas
librerías en $TOMCAT_HOME/webapps/share/WEB-INF/lib
- cas-client-core-3.1.12.jar
- opensaml-1.0.1.jar
- zk-cas-filter.jar
Además es necesario modificar el web.xml de share.war para configurar
los filtros de CAS, así como compilar un filtro a medida
(zk-cas-filter.jar). El código java se puede obtener
de este wiki, que es de donde he partido para la integración de
Alfresco Share y CAS:
http://ifaq.wikispaces.com/CAS+-+CASificando+Alfresco+Share
Los filtros en el web.xml son:
<filter>
<filter-name>Authentication Filter</filter-name>
<filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
<init-param>
<param-name>casServerLoginUrl</param-name>
<param-value> https://services.zylk.net/cas</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value> https://share.zylk.net</param-value>
</init-param>
</filter>
<filter>
<filter-name>Ticket Validation Filter</filter-name>
<filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
<init-param>
<param-name>casServerUrlPrefix</param-name>
<param-value> https://services.zylk.net</param-value>
</init-param>
<init-param>
<param-name>serverName</param-name>
<param-value> https://share.zylk.net</param-value>
</init-param>
</filter>
<filter>
<filter-name>Alfresco Share Filter</filter-name>
<filter-class>net.zylk.alfresco.cas.filter.AlfrescoShareFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Authentication Filter</filter-name>
<url-pattern>/page/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Authentication Filter</filter-name>
<url-pattern>/p/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Authentication Filter</filter-name>
<url-pattern>/proxy/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Ticket Validation Filter</filter-name>
<url-pattern>/page/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Ticket Validation Filter</filter-name>
<url-pattern>/p/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Ticket Validation Filter</filter-name>
<url-pattern>/proxy/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Alfresco Share Filter</filter-name>
<url-pattern>/page/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Alfresco Share Filter</filter-name>
<url-pattern>/p/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>Alfresco Share Filter</filter-name>
<url-pattern>/proxy/*</url-pattern>
</filter-mapping>
Notad que las propiedades principales definidas en el web.xml
atienden a la url del servicio de autenticación centralizado (CAS) por
un lado, y por otro a la redirección que hará este junto con el ticket
de autenticación, al servidor donde está desplegado Alfresco Share.
Por último, en el archivo de configuración principal de
Alfresco Share share-config-custom.xml definimos la
sección remote y el endpoint del repositorio, es decir la url del
repositorio de Alfresco, poniendo a true el parámetro external auth.
<config evaluator="string-compare" condition="Remote">
<remote>
<keystore>
<path>alfresco/web-extension/alfresco-system.p12</path>
<type>pkcs12</type>
<password>alfresco-system</password>
</keystore>
<connector>
<id>alfrescoCookie</id>
<name>Alfresco Connector</name>
<description>Connects to an Alfresco instance using cookie-based authentication</description>
<class>org.springframework.extensions.webscripts.connector.AlfrescoConnector</class>
</connector>
<endpoint>
<id>alfresco</id>
<name>Alfresco - user access</name>
<description>Access to Alfresco Repository WebScripts that require user authentication</description>
<connector-id>alfrescoCookie</connector-id>
<endpoint-url> http://alf.zylk.net:8080/alfresco/wcs</endpoint-url>
<identity>user</identity>
<external-auth>true</external-auth>
</endpoint>
</remote>
</config>
En el ejemplo de arriba no se ha securizado nada más que la
capa web de acceso a través del frontal Apache.
Enlaces útiles:






