SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
UDA – Utilidades de desarrollo de aplicaciones by EJIE is licensed under a Creative Commons Reconocimiento-
NoComercial-CompartirIgual 3.0 Unported License.
UDA - Utilidades de desarrollo de aplicaciones
Uso de WebDAV en UDA
Fecha: 08/01/2014 Referencia:
EJIE S.A.
Mediterráneo, 14
Tel. 945 01 73 00*
Fax. 945 01 73 01
01010 Vitoria-Gasteiz
Posta-kutxatila / Apartado: 809
01080 Vitoria-Gasteiz
www.ejie.es
Uso de WebDAV en UDA 1/20
Control de documentación
Título de documento: Web Services
Histórico de versiones
Código: Versión: Fecha: Resumen de cambios:
1.0.0 08/01/2014 Primera versión
Cambios producidos desde la última versión
Primera versión
Control de difusión
Responsable: Ander Martínez
Aprobado por:
Firma: Fecha:
Distribución:
Referencias de archivo
Autor:
Nombre archivo:
Localización:
Uso de WebDAV en UDA 2/20
Contenido
Capítulo/sección Página
1 Introducción 1
2 Arquitectura 2
3 Configuración 4
3.1 Obtener dependencias 4
3.2 Configuración de Spring 4
3.3 web.xml 6
4 Implementación del Store 8
5 Script de BBDD 13
6 Edición en línea de un documento mediante Microsoft Office 14
6.1 Componente RUP DAV 15
7 Seguridad 16
7.1 XLNets 16
Uso de WebDAV en UDA 1/20
1 Introducción
El presente documento tiene como objetivo definir y explicar de manera detallada como integrar en una
aplicación el uso de WebDAV para el tratamiento de ficheros almacenados en servidor.
El objetivo es proporcionar una solución común a todas las aplicaciones que requieran el uso de WebDAV
para la gestión de documentos.
La solución propuesta proporciona soporte para WebDAV nivel 2, la cual permite realizar bloqueos de
directorios y ficheros para poder protegerlos y evitar que sean modificados por otros usuarios. Algunos
clientes WebDAV como Microsoft Office o Microsoft Web Folders requieren de un servidor de WebDAV que
implemente el nivel 2.
Uso de WebDAV en UDA 2/20
2 Arquitectura
Este sería el esquema de la arquitectura del componente WebDAV:
El componente WebDav consta de los siguientes módulos:
• Servlet: Es el encargado de recibir y gestionar las peticiones WebDAV. Permite al usuario interactuar
con los recursos accesibles mediante WebDAV.
Como implementación del servlet se proporciona la clase
com.ejie.x38.webdav.WebdavSpringServlet, preparada para ser integrada en Spring.
• Store: Es el encargado de lograr la interacción entre las peticiones WebDAV y los documentos
almacenados.
Implementando diferentes stores se puede extender la capacidad del componente WebDAV para
gestionar recursos almacenados en cualquier sistema de persistencia.
Por defecto se proporciona el store com.ejie.x38.webdav.LocalFileSystemStore que permite
gestionar recursos almacenados en un sistema de ficheros.
Para utilizar un sistema de persistencia diferente para los recursos, se deberá de crear, por parte de
las aplicaciones, una clase que implemente la interface com.ejie.x38.webdav.IWebdavStore.
WebdavServlet
LocalFileSystemStore
DatabaseStore
CustomStore
ResourceLocker
…
Stores
Uso de WebDAV en UDA 3/20
• Locker: Gestiona los bloqueos de los ficheros para evitar las modificaciones por parte de otros
usuarios. El sistema de bloqueos es necesario para determinadas operaciones con WebDAV nivel 2.
El componente permite gestionar los bloqueos mediante persistencia en memoria o uso de base de
datos. Se recomienda el uso de base de datos ya que es la única que garantiza el correcto
funcionamiento en entornos cluster.
La clase que gestiona los bloqueos de los ficheros es
com.ejie.x38.webdav.locking.DataBaseResourceLocks.
Uso de WebDAV en UDA 4/20
3 Configuración
Para utilizar el componente de WebDAV se deben de realizar los siguientes pasos:
3.1 Obtener dependencias
El componente WebDAV se proporciona a través de la librería x38ShLibClasses-dav. Para incorporarla a la
aplicación bastará con añadir la siguiente dependencia en el fichero pom.xml de la aplicación.
<dependency>
<groupId>com.ejie.x38</groupId>
<artifactId>x38ShLibClasses-dav</artifactId>
<version>2.4.0-RELEASE</version>
</dependency>
Se recomienda indicar la versión más reciente que se haya liberado.
3.2 Configuración de Spring
Se deberá de crear un nuevo fichero webdav-config.xml en el que se incluirá toda la configuración relacionada
con el componente.
El contenido del fichero será el siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- Gestión de los locks de recursos de WebDAV mediante base de datos -->
<bean id="webDavDataBaseLockDao"
class="com.ejie.x38.webdav.locking.DataBaseLockDaoImpl">
<property name="lockingDataSource" ref="dataSource" />
<property name="lockingTableName" value="Y64BWEBDAVLOCK" />
</bean>
<bean id="webDavDataBaseLockService"
class="com.ejie.x38.webdav.locking.DataBaseLockServiceImpl">
<property name="dataBaseLockDao" ref="webDavDataBaseLockDao" />
</bean>
Uso de WebDAV en UDA 5/20
<bean id="dataBaseResourceLocks"
class="com.ejie.x38.webdav.locking.DataBaseResourceLocks">
<property name="dataBaseLockService" ref="webDavDataBaseLockService"
/>
</bean>
<!-- Definición del almacén de datos de WebDAV -->
<bean id="webDavStore" class="com.ejie.x38.webdav.LocalFileSystemStore">
<property name="rootPath" value="/datos/xxx/tmp/" />
</bean>
<!-- Servlet que gestiona las peticiones WebDAV -->
<bean id="webdavServlet" class="com.ejie.x38.webdav.WebdavSpringServlet">
<property name="webDavStore" ref="webDavStore" />
<property name="resourceLocks" ref="dataBaseResourceLocks" />
</bean>
</beans>
Los beans que se definen en el fichero son los siguientes:
• webdavServlet: Definición del servlet que se encargará de escuchar las peticiones WebDAV. El
identificador aquí especificado deberá coincidir con el utilizado en el fichero web.xml, tal y como se
comenta más adelante.
La definición del bean requiere informar los siguientes parámetros:
o webDavStore: Bean de tipo com.ejie.x38.webdav.IWebdavStore que implementa la
interacción entre las peticiones WebDav y el almacén de datos.
o resourceLocks: Bean de tipo com.ejie.x38.webdav.IResourceLocks que implementa
la gestión de bloqueos.
• webDavStore: Determina el bean encargado de permitir la interacción entre las peticiones de
WebDAV y el almacén de datos.
En x38 se proporciona una implementación por defecto mediante la clase
com.ejie.x38.webdav.LocalFileSystemStore. Esta clase realiza las operaciones WebDAV
contra un sistema de ficheros local. Mediante la propiedad rootPath se especifica la ruta sobre el
sistema de ficheros local que se tomará como base para el componente WebDAV.
En caso de necesitar interactuar con un sistema de almacenamiento diferente se deberá proporcionar
una implementación que resuelva la interacción entre el propio almacén y las peticiones de WebDAV.
Este punto se detalla en el apartado 3.Implementación del Store.
Las siguientes definiciones de beans son necesarias para la gestión de los bloqueos de los documentos
mediante el uso de base de datos.
• webDavDataBaseLockDao: Bean de tipo
com.ejie.x38.webdav.locking.DataBaseLockDaoImpl que implementa las operaciones
contra la base de datos.
La definición del bean requiere informar los siguientes parámetros:
o lockingDataSource: Datasource utilizado para conectar con la base de datos.
Uso de WebDAV en UDA 6/20
o lockingTableName: Nombre de la tabla existente en la base de datos que será utilizada para
gestionar los bloqueos.
• webDavDataBaseLockService: Bean de tipo
com.ejie.x38.webdav.locking.DataBaseLockServiceImpl implementa los métodos
encargados de gestionar las operaciones del bloqueo.
La definición del bean requiere informar los siguientes parámetros:
o dataBaseLockDao: Dao utilizado para conectar con la base de datos.
• dataBaseResourceLocks: Bean de tipo
com.ejie.x38.webdav.locking.DataBaseResourceLocks implementa el recurso de bloqueos
del componente WebDAV mediante base de datos.
La definición del bean requiere informar los siguientes parámetros:
o dataBaseLockService: Servicio utilizado para realizar las operaciones de bloqueo mediante
base de datos.
A continuación se deberá añadir una entrada en el fichero app-config,xml de WAR de la aplicación para que
se incluya en la carga de configuración de Spring.
<beans xmlns=http://www.springframework.org/schema/beans ...>
<import resource="mvc-config.xml" />
<import resource="log-config.xml"/>
<import resource="validation-config.xml"/>
<import resource="security-core-config.xml"/>
<import resource="security-config.xml"/>
<import resource="webdav-config.xml"/>
</beans>
3.3 web.xml
Para que el componente gestione las peticiones WebDAV se deberá incluir en el fichero web.xml del War de la
aplicación la siguiente definición:
<servlet>
<display-name>WebDAVServlet</display-name>
<servlet-name>webdavServlet</servlet-name>
<servlet-class>
org.springframework.web.context.support.HttpRequestHandlerServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>webdavServlet</servlet-name>
<url-pattern>/webdavServlet/*</url-pattern>
</servlet-mapping>
Uso de WebDAV en UDA 7/20
El valor indicado en la propiedad servlet-name, tanto para la definición del servlet como del servlet-mapping,
se deberá corresponder con el que se ha utilizado como identificador en la definición del bean
com.ejie.x38.webdav.WebdavSpringServlet en el fichero webdav-config.xml
<servlet-name>webdavServlet</servlet-name>
En la propiedad url-pattern se definirá la url a partir de la cual se gestionarán las peticiones webdav.
<url-pattern>/webdavServlet/*</url-pattern>
Uso de WebDAV en UDA 8/20
4 Implementación del Store
Mediante la librería x38 se proporciona un store por defecto que permite al componente WebDAV interactuar
con archivos almacenados en un sistema de ficheros local.
En una aplicación puede ser habitual que los documentos se almacenen mediante un sistema distinto, ya sea
en base de datos o en un gestor documental. En este caso se deberá proveer al componente WebDAV de una
implementación del store que permita la interacción entre las peticiones WebDAV y los archivos almacenados.
Para implementar un store se deberá crear una clase que implemente la interfaz IWebdavStore, p. ej.:
package com.ejie.xxx.webdav;
public class CustomWebdavStore implements IWebdavStore {
}
La clase deberá implementar los siguientes métodos:
• begin: Indica que se ha iniciado una nueva petición o transacción sobre el store implementado.
Parámetros de entrada:
o principal: Representa la identidad que realiza el inicio de la petición. Puede ser nulo en caso
de no estar disponible.
Retorno.
o Objeto identificador de la transacción iniciada.
@Override
public ITransaction begin(Principal principal) {
// TODO Auto-generated method stub
return null;
}
• checkAuthentication: Comprueba que la información de autenticación proporcionada es correcta. En
caso de no serlo se lanza una excepción.
Parámetros de entrada:
o transaction: Objeto identificador de la transacción.
@Override
public void checkAuthentication(ITransaction transaction) {
// TODO Auto-generated method stub
}
Uso de WebDAV en UDA 9/20
• commit: Determina que todos los cambios realizados pueden ser marcados como permanentes y
todas las transacciones, conexiones y recursos temporales pueden ser liberados.
Parámetros de entrada:
o transaction: Objeto identificador de la transacción.
@Override
public void commit(ITransaction transaction) {
// TODO Auto-generated method stub
}
• rollback: Determina que todos los cambios realizados pueden ser deshechos y todas las
transacciones, conexiones y recursos temporales pueden ser liberados.
Parámetros de entrada:
o transaction: Objeto identificador de la transacción.
@Override
public void rollback(ITransaction transaction) {
// TODO Auto-generated method stub
}
• createFolder: Crea un directorio en la ruta especificada por el parámetro folderUri.
Parámetros de entrada:
o transaction: Objeto identificador de la transacción.
o forlderUri: Ruta del directorio.
@Override
public void createFolder(ITransaction transaction, String folderUri) {
// TODO Auto-generated method stub
}
• createResource: Crea un contenedor del recurso en la ruta especificada por el parámetro
resourceUri.
Parámetros de entrada:
o transaction: Objeto identificador de la transacción.
o resourceUri: Ruta del contenedor del recurso.
@Override
public void createResource(ITransaction transaction, String resourceUri) {
// TODO Auto-generated method stub
}
Uso de WebDAV en UDA 10/20
• getResourceContent: Devuelve el contenido del recurso especificado por el parámetro resourceUri.
Parámetros de entrada:
o transaction: Objeto identificador de la transacción.
o resourceUri: Ruta del recurso que se desea recuperar.
Retorno.
o Objeto InputStream a partir del cual se puede leer el contenido del recurso.
@Override
public InputStream getResourceContent(ITransaction transaction,
String resourceUri) {
// TODO Auto-generated method stub
return null;
}
• setResourceContent: Almacena el contenido del recurso especificado por el parámetro resourceUri.
Parámetros de entrada:
o transaction: Objeto identificador de la transacción.
o resourceUri: Ruta del recurso que se desea almacenar.
o content: InputStream a partir del cual se va a leer el recurso.
o contentType: ContentType del recurso que se va a almacenar. Puede ser null en caso de ser
desconocido.
o characterEncoding: CharacterEncoding del recurso que se va a almacenar. Puede ser null en
caso de ser desconocido.
Retorno.
o Tamaño del recurso almacenado en bytes.
@Override
public long setResourceContent(ITransaction transaction,
String resourceUri, InputStream content, String contentType,
String characterEncoding) {
// TODO Auto-generated method stub
return 0;
}
• getChildrenNames: Devuelve los nombres de los hijos del directorio especificado por el parámetro
folderUri.
Parámetros de entrada:
o transaction: Objeto identificador de la transacción.
o folderUri: Ruta del directorio del cual hay que obtener los hijos.
Retorno.
o Array de strings que contiene la lista de hijos del directorio.
@Override
public String[] getChildrenNames(ITransaction transaction,String folderUri){
// TODO Auto-generated method stub
Uso de WebDAV en UDA 11/20
return null;
}
• getResourceLength: Devuelve el tamaño, en bytes del recurso solicitado por el parámetro
resourceUri.
Parámetros de entrada:
o transaction: Objeto identificador de la transacción.
o resourceUri: Ruta del recurso que se desea conocer el tamaño.
Retorno.
o Tamaño en bytes del recurso solicitado.
@Override
public long getResourceLength(ITransaction transaction,String resourceUri) {
// TODO Auto-generated method stub
return 0;
}
• removeObject: Elimina el objeto especificado por el parámetro uri.
Parámetros de entrada:
o transaction: Objeto identificador de la transacción.
o uri: Ruta del recurso que se desea eliminar (fichero o directorio).
@Override
public void removeObject(ITransaction transaction, String uri) {
// TODO Auto-generated method stub
}
• getStoredObject: Devuelve un StoredObject correspondiente al recurso identificado mediante la ruta
especificada por el parámetro uri.
Parámetros de entrada:
o transaction: Objeto identificador de la transacción.
o uri: Ruta del recurso del que se quiere obtener el StoredObject.
Retorno.
o StoredObject del recurso correspondiente.
@Override
public StoredObject getStoredObject(ITransaction transaction, String uri) {
// TODO Auto-generated method stub
return null;
}
Un objecto StoredObject contiene información relative a un recurso WebDAV. Las propiedades que
contiene son las siguientes:
Uso de WebDAV en UDA 12/20
• isFolder: Indica si es un directorio (true) o un fichero (false).
• lastModified: Fecha que determina en que momento se realizó la última modificación.
• creationDate: Fecha que determina el momento de creación del recurso.
• contentLength: Tamaño en bytes del recurso.
Una vez implementado el store se deberá indicar al componente de WebDAV que lo utilice para interactuar
con el almacén de ficheros. Esto se indicará en el fichero webdav-config.xml del siguiente modo:
<!-- Definición del almacén de datos de WebDAV -->
<bean id="customWebDavStore" class="com.ejie.xxx.webdav.CustomWebdavStore">
</bean>
<!-- Servlet que gestiona las peticiones WebDAV -->
<bean id="webdavServlet" class="com.ejie.x38.webdav.WebdavSpringServlet">
<property name="webDavStore" ref=" customWebDavStore " />
<property name="resourceLocks" ref="dataBaseResourceLocks" />
</bean>
Uso de WebDAV en UDA 13/20
5 Script de BBDD
Para gestionar correctamente los bloqueos de los ficheros mediante base de datos se deberá de crear una
nueva tabla en el esquema de BBDD de la aplicación. En esta tabla se almacenará la información necesaria
para realizar los bloqueos de los ficheros que estén siendo editados por parte de los usuarios de la aplicación.
El nombre de la tabla empleado deberá de coincidir con el indicado en la propiedad lockingTableName del
bean webDavDataBaseLockDao en el fichero de configuración webdav-config.xml.
El script de creación de la tabla sería el siguiente:
CREATE TABLE "WEBDAV_LOCK"
( "ID" VARCHAR2(255 BYTE) NOT NULL ENABLE,
"PATH" VARCHAR2(255 BYTE) NOT NULL ENABLE,
"LOCK_DEPTH" VARCHAR2(10 BYTE),
"EXPIRES_AT" NUMBER(19,0),
"OWNER" VARCHAR2(255 BYTE) NOT NULL ENABLE,
"EXCLUSIVE_LOCK" VARCHAR2(1 BYTE),
"LOCK_TYPE" VARCHAR2(10 BYTE),
"CHILDREN_ID" VARCHAR2(255 BYTE),
"PARENT_ID" VARCHAR2(255 BYTE),
"TEMP_LOCK" VARCHAR2(1 BYTE),
CONSTRAINT "WEBDAV_LOCK_PK" PRIMARY KEY ("ID", "OWNER")
);
El nombre de la tabla (resaltado en negrita) deberá de cumplir con la normativa de nomenclatura de tablas de
EJIE.
Uso de WebDAV en UDA 14/20
6 Edición en línea de un documento mediante Microsoft Office
Uno de los escenarios más utilizado por las aplicaciones es la edición en línea de documentos mediante
Microsoft Office.
Si se han seguido los pasos indicados en los apartados anteriores se dispondrá de un servidor WebDAV nivel
2 de acuerdo a lo requerido por Microsoft Office.
Dependiendo de la versión de Microsoft Office utilizada se podrá realizar la edición en línea desde diferentes
navegadores:
• Microsoft Office 2003 e inferiores: Internet Explorer.
• Microsoft Office 2007 y superiores: Internet Explorer, Firefox y Chrome.
Para cubrir todos estos escenarios se deben seguir los siguientes pasos:
1. Se deberá incluir el siguiente código en la jsp correspondiente. Esto sirve para que se pueda utilizar el
plugin FFWinPlugin que permite abrir y editar documentos mediante Microsoft Office desde Firefox y
Chrome.
<object id="winFirefoxPlugin" type="application/x-sharepoint" width="0"
height="0" style="visibility: hidden;"></object>
2. En el fichero js se incluirá el siguiente script para gestionar cada uno de los diferentes tipos de
navegadores utilizados por el usuario.
var url = baseUrlOfApp+"webdavServlet/webdav_file.doc", obj, hownowPlugin,
version;
if ($.browser.msie === true){
// Gestión para Internet Explorer
try{
// Microsoft Office 2007 y superiores
obj = new ActiveXObject("SharePoint.OpenDocuments.3");
obj.EditDocument(url);
}catch(e){
try{
// Microsoft Office 2003 e inferiores
obj = new ActiveXObject('Word.Application');
obj.Visible = true;
obj.Documents.Open(encodeURI(url));
}catch(e){
// No se puede editar en línea, se descarga el archivo
window.open("url_de_descarga_del_fichero", '_blank');
}
}
} else {
// Gestión para Firefox y Chrome
try{
Uso de WebDAV en UDA 15/20
// Microsoft Office 2007 y superiores
hownowPlugin = document.getElementById("winFirefoxPlugin");
version = hownowPlugin.GetOfficeVersion();
hownowPlugin.EditDocument(url, version);
}catch(e){
// No se puede editar en línea, se descarga el archivo
window.open("url_de_descarga_del_fichero", '_blank');
}
}
6.1 Componente RUP DAV
Para facilitar el uso de WebDAV desde una aplicación UDA se ha implementado el componente rup.dav.
Uno de los objetivos es abstraer al desarrollador de la gestión de la edición de un documento en línea
dependiente del navegador utilizado por el usuario.
Este componente se ha incluido en la versión v2.4.1 de UDA por lo que se podrá hacer uso del mismo en las
aplicaciones que dispongan de dicha versión o posteriores.
En caso de utilizar este componente, el proceso sería el siguiente:
1. Se deberá incluir el siguiente código en la jsp correspondiente. Esto sirve para que se pueda utilizar el
plugin FFWinPlugin que permite abrir y editar documentos mediante Microsoft Office desde Firefox y
Chrome.
<object id="winFirefoxPlugin" type="application/x-sharepoint" width="0"
height="0" style="visibility: hidden;"></object>
2. Para invocar al servidor de WebDAV y realizar la edición online se llamará al componente rup.dav del
siguiente modo:
jQuery.rup_dav.editOnline({
url:"webdavServlet/webdav.doc",
xlnetsAuth:true,
downloadOnError:true,
alternateDownloadURL:"../upload?fileName=webdav.doc"
});
Las propiedades de configuración son las siguientes:
• url: Url utilizada para acceder al recurso deseado a través del servlet de WebDAV.
• xlnetsAuth: Determina si se debe realizar la petición teniendo en cuenta la autenticación del usuario
en XLNets. Esto permite aplicar la seguridad de una aplicación UDA que utilice Spring Security con
autenticación del usuario en XLNets.
• downloadOnError: Determina si se debe habilitar la descarga automática del fichero en caso de que
no sea posible realizar la edición online.
• alternateDownloadURL: Esta URL será la utilizada para que el usuario pueda descargar el fichero en
caso de que falle la edición online.
Uso de WebDAV en UDA 16/20
7 Seguridad
En un principio el componente WebDAV no proporciona mecanismos de seguridad adicionales a los que
proporciona la aplicación.
Es tarea de la aplicación securizar las urls de acceso y los métodos de negocio utilizados para proveer del
recurso sobre el que se desea trabajar mediante WebDAV.
En las aplicaciones UDA la securización de estos elementos se realiza mediante los mecanismos habituales
que proporciona Spring Security, de modo que se podrá hacer uso tanto de las anotaciones como de la
configuración declarativa en los ficheros de configuración de Spring Security.
La securización de la url del servlet del componente WebDAV se realiza del mismo modo que con las demás
urls de la aplicación. Se añadirá en el fichero security-config.xml la regla correspondiente que determinará la
securización de la url por parte de los usuarios.
Un ejemplo sería el siguiente:
<bean id="filterSecurityInterceptor"
class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor">
<property name="authenticationManager" ref="authenticationManager" />
<property name="accessDecisionManager" ref="affirmativeBased" />
<property name="securityMetadataSource" >
<security:filter-security-metadata-source use-expressions="true" request-matcher="regex">
<security:intercept-url pattern="/webdavServlet/.*" access="hasRole('ROLE_XXX-IN-
0005')" />
<!—Resto de reglas de securización -->
</security:filter-security-metadata-source>
</property>
</bean>
De este modo determinamos que el usuario que desee acceder a los recursos de WebDAV debe disponer del
nivel de autorización correspondiente otorgado por el rol de seguridad ROLE_XXX-IN-005.
7.1 XLNets
En caso de utilizar XLNets para la autenticación y la securización de la aplicación, se deberá realizar una
configuración adicional para permitir al componente WebDAV integrarse correctamente con XLNets.
Se deberá incluir en el fichero security-core-config.xml la siguiente definición:
<bean id="springSecurityFilterChain"
class="org.springframework.security.web.FilterChainProxy">
<security:filter-chain-map request-matcher="regex">
<security:filter-chain pattern="/sessionInfo.*" filters="none"/>
<security:filter-chain pattern="/mockLoginPage.*" filters="none"/>
<security:filter-chain pattern="/mockLoginAjaxPage.*" filters="none"/>
<security:filter-chain pattern="/error.*" filters="none"/>
<security:filter-chain pattern="/accessDenied.*" filters="none"/>
<security:filter-chain pattern="/webdavServlet/.*" filters="
webDAVXLNetsAuthenticationFilter,
exceptionTranslationFilter,
securityContextPersistenceFilter,
Uso de WebDAV en UDA 17/20
logoutFilter,
preAuthenticateProcessingFilter,
filterSecurityInterceptor" />
<security:filter-chain pattern="**" filters="
exceptionTranslationFilter,
securityContextPersistenceFilter,
logoutFilter,
preAuthenticateProcessingFilter,
filterSecurityInterceptor" />
</security:filter-chain-map>
</bean>
<bean id="webDAVXLNetsAuthenticationFilter"
class="com.ejie.x21a.webdav.WebDAVXLNetsAuthenticationFilter"/>
El objetivo es definir para la url del servlet del componente WebDAV una cadena de ejecución de filtros de
seguridad entre los que se incluye el filtro webDAVXLNetsAuthenticationFilter.
Mediante este filtro se logra que las peticiones que realiza el cliente de XLNets, por ejemplo el Microsoft
Office, puedan ser securizadas mediante la misma configuración de seguridad empleada en la aplicación.

Más contenido relacionado

Destacado

UDA-Componentes RUP. Feedback
UDA-Componentes RUP. FeedbackUDA-Componentes RUP. Feedback
UDA-Componentes RUP. FeedbackAnder Martinez
 
UDA-Componentes RUP. Upload
UDA-Componentes RUP. UploadUDA-Componentes RUP. Upload
UDA-Componentes RUP. UploadAnder Martinez
 
UDA-Componentes RUP. Validación
UDA-Componentes RUP. ValidaciónUDA-Componentes RUP. Validación
UDA-Componentes RUP. ValidaciónAnder Martinez
 
Arinbide Adaptativo. Pila de impedimentos.v1.1
Arinbide Adaptativo. Pila de impedimentos.v1.1Arinbide Adaptativo. Pila de impedimentos.v1.1
Arinbide Adaptativo. Pila de impedimentos.v1.1Ander Martinez
 
UDA-Componentes RUP. Reporting
UDA-Componentes RUP. ReportingUDA-Componentes RUP. Reporting
UDA-Componentes RUP. ReportingAnder Martinez
 
UDA-Componentes RUP. Idioma
UDA-Componentes RUP. IdiomaUDA-Componentes RUP. Idioma
UDA-Componentes RUP. IdiomaAnder Martinez
 
UDA-Componentes RUP. Mensajes
UDA-Componentes RUP. MensajesUDA-Componentes RUP. Mensajes
UDA-Componentes RUP. MensajesAnder Martinez
 
UDA-Componentes RUP. Migas
UDA-Componentes RUP. MigasUDA-Componentes RUP. Migas
UDA-Componentes RUP. MigasAnder Martinez
 
UDA-Componentes RUP. Reporting
UDA-Componentes RUP. ReportingUDA-Componentes RUP. Reporting
UDA-Componentes RUP. ReportingAnder Martinez
 
Arinbide Adaptativo. Acta de reunión.v1.1
Arinbide Adaptativo. Acta de reunión.v1.1Arinbide Adaptativo. Acta de reunión.v1.1
Arinbide Adaptativo. Acta de reunión.v1.1Ander Martinez
 
Arinbide Adaptativo. Pila de producto.v1.0
Arinbide Adaptativo. Pila de producto.v1.0Arinbide Adaptativo. Pila de producto.v1.0
Arinbide Adaptativo. Pila de producto.v1.0Ander Martinez
 
UDA-Componentes RUP. Menú
UDA-Componentes RUP. MenúUDA-Componentes RUP. Menú
UDA-Componentes RUP. MenúAnder Martinez
 
UDA-Componentes RUP. Menú contextual
UDA-Componentes RUP. Menú contextualUDA-Componentes RUP. Menú contextual
UDA-Componentes RUP. Menú contextualAnder Martinez
 
UDA-Componentes RUP. Autocomplete
UDA-Componentes RUP. AutocompleteUDA-Componentes RUP. Autocomplete
UDA-Componentes RUP. AutocompleteAnder Martinez
 
UDA-Componentes RUP. Botonera
UDA-Componentes RUP. BotoneraUDA-Componentes RUP. Botonera
UDA-Componentes RUP. BotoneraAnder Martinez
 
Arinbide Adaptativo. Normas, participantes y procedimientos.v1.0
Arinbide Adaptativo. Normas, participantes y procedimientos.v1.0Arinbide Adaptativo. Normas, participantes y procedimientos.v1.0
Arinbide Adaptativo. Normas, participantes y procedimientos.v1.0Ander Martinez
 
UDA-Componentes RUP. Mensajes (v2.1.1 deprecado)
UDA-Componentes RUP. Mensajes (v2.1.1 deprecado)UDA-Componentes RUP. Mensajes (v2.1.1 deprecado)
UDA-Componentes RUP. Mensajes (v2.1.1 deprecado)Ander Martinez
 
UDA-Componentes RUP. Tooltip
UDA-Componentes RUP. TooltipUDA-Componentes RUP. Tooltip
UDA-Componentes RUP. TooltipAnder Martinez
 
Arinbide Adaptativo. Manual de usuario.v1.0
Arinbide Adaptativo. Manual de usuario.v1.0Arinbide Adaptativo. Manual de usuario.v1.0
Arinbide Adaptativo. Manual de usuario.v1.0Ander Martinez
 
Arinbide Adaptativo. Visión del producto.v1.0
Arinbide Adaptativo. Visión del producto.v1.0Arinbide Adaptativo. Visión del producto.v1.0
Arinbide Adaptativo. Visión del producto.v1.0Ander Martinez
 

Destacado (20)

UDA-Componentes RUP. Feedback
UDA-Componentes RUP. FeedbackUDA-Componentes RUP. Feedback
UDA-Componentes RUP. Feedback
 
UDA-Componentes RUP. Upload
UDA-Componentes RUP. UploadUDA-Componentes RUP. Upload
UDA-Componentes RUP. Upload
 
UDA-Componentes RUP. Validación
UDA-Componentes RUP. ValidaciónUDA-Componentes RUP. Validación
UDA-Componentes RUP. Validación
 
Arinbide Adaptativo. Pila de impedimentos.v1.1
Arinbide Adaptativo. Pila de impedimentos.v1.1Arinbide Adaptativo. Pila de impedimentos.v1.1
Arinbide Adaptativo. Pila de impedimentos.v1.1
 
UDA-Componentes RUP. Reporting
UDA-Componentes RUP. ReportingUDA-Componentes RUP. Reporting
UDA-Componentes RUP. Reporting
 
UDA-Componentes RUP. Idioma
UDA-Componentes RUP. IdiomaUDA-Componentes RUP. Idioma
UDA-Componentes RUP. Idioma
 
UDA-Componentes RUP. Mensajes
UDA-Componentes RUP. MensajesUDA-Componentes RUP. Mensajes
UDA-Componentes RUP. Mensajes
 
UDA-Componentes RUP. Migas
UDA-Componentes RUP. MigasUDA-Componentes RUP. Migas
UDA-Componentes RUP. Migas
 
UDA-Componentes RUP. Reporting
UDA-Componentes RUP. ReportingUDA-Componentes RUP. Reporting
UDA-Componentes RUP. Reporting
 
Arinbide Adaptativo. Acta de reunión.v1.1
Arinbide Adaptativo. Acta de reunión.v1.1Arinbide Adaptativo. Acta de reunión.v1.1
Arinbide Adaptativo. Acta de reunión.v1.1
 
Arinbide Adaptativo. Pila de producto.v1.0
Arinbide Adaptativo. Pila de producto.v1.0Arinbide Adaptativo. Pila de producto.v1.0
Arinbide Adaptativo. Pila de producto.v1.0
 
UDA-Componentes RUP. Menú
UDA-Componentes RUP. MenúUDA-Componentes RUP. Menú
UDA-Componentes RUP. Menú
 
UDA-Componentes RUP. Menú contextual
UDA-Componentes RUP. Menú contextualUDA-Componentes RUP. Menú contextual
UDA-Componentes RUP. Menú contextual
 
UDA-Componentes RUP. Autocomplete
UDA-Componentes RUP. AutocompleteUDA-Componentes RUP. Autocomplete
UDA-Componentes RUP. Autocomplete
 
UDA-Componentes RUP. Botonera
UDA-Componentes RUP. BotoneraUDA-Componentes RUP. Botonera
UDA-Componentes RUP. Botonera
 
Arinbide Adaptativo. Normas, participantes y procedimientos.v1.0
Arinbide Adaptativo. Normas, participantes y procedimientos.v1.0Arinbide Adaptativo. Normas, participantes y procedimientos.v1.0
Arinbide Adaptativo. Normas, participantes y procedimientos.v1.0
 
UDA-Componentes RUP. Mensajes (v2.1.1 deprecado)
UDA-Componentes RUP. Mensajes (v2.1.1 deprecado)UDA-Componentes RUP. Mensajes (v2.1.1 deprecado)
UDA-Componentes RUP. Mensajes (v2.1.1 deprecado)
 
UDA-Componentes RUP. Tooltip
UDA-Componentes RUP. TooltipUDA-Componentes RUP. Tooltip
UDA-Componentes RUP. Tooltip
 
Arinbide Adaptativo. Manual de usuario.v1.0
Arinbide Adaptativo. Manual de usuario.v1.0Arinbide Adaptativo. Manual de usuario.v1.0
Arinbide Adaptativo. Manual de usuario.v1.0
 
Arinbide Adaptativo. Visión del producto.v1.0
Arinbide Adaptativo. Visión del producto.v1.0Arinbide Adaptativo. Visión del producto.v1.0
Arinbide Adaptativo. Visión del producto.v1.0
 

Similar a Implementar WebDAV en aplicaciones Java

Apache3 mod dav
Apache3 mod davApache3 mod dav
Apache3 mod davjsucarmona
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a TomcatIker Canarias
 
UDA-Guia desarrollo web services
UDA-Guia desarrollo web servicesUDA-Guia desarrollo web services
UDA-Guia desarrollo web servicesAnder Martinez
 
Webutil de oracle
Webutil de oracleWebutil de oracle
Webutil de oracleguestc91f49
 
Practica Apache 3 mod dav
Practica Apache 3 mod davPractica Apache 3 mod dav
Practica Apache 3 mod davjsucarmona
 
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVCSEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVCParadigma Digital
 
13. Configuracion De Aplicaciones Web Asp.Net
13.  Configuracion De Aplicaciones Web Asp.Net13.  Configuracion De Aplicaciones Web Asp.Net
13. Configuracion De Aplicaciones Web Asp.Netguest3cf6ff
 
Desarrollo web con JAVA: Introduccion a los Servlets
Desarrollo web con JAVA: Introduccion a los ServletsDesarrollo web con JAVA: Introduccion a los Servlets
Desarrollo web con JAVA: Introduccion a los ServletsJon Vadillo Romero
 
Trabajo De Oracle
Trabajo De OracleTrabajo De Oracle
Trabajo De Oraclefpiedra
 
Reporte servicios web
Reporte servicios webReporte servicios web
Reporte servicios webFacebook
 
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-20065. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006Samuel Marrero
 
Proyecto Aplicaciones Web
Proyecto Aplicaciones WebProyecto Aplicaciones Web
Proyecto Aplicaciones WebCesar Pineda
 

Similar a Implementar WebDAV en aplicaciones Java (20)

Apache3 mod dav
Apache3 mod davApache3 mod dav
Apache3 mod dav
 
Dprn3 u3 a1_hesc
Dprn3 u3 a1_hescDprn3 u3 a1_hesc
Dprn3 u3 a1_hesc
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a Tomcat
 
Web Services JAX-RS RESTful y SOAP
Web Services JAX-RS RESTful y SOAPWeb Services JAX-RS RESTful y SOAP
Web Services JAX-RS RESTful y SOAP
 
UDA-Guia desarrollo web services
UDA-Guia desarrollo web servicesUDA-Guia desarrollo web services
UDA-Guia desarrollo web services
 
Webutil de oracle
Webutil de oracleWebutil de oracle
Webutil de oracle
 
Practica Apache 3 mod dav
Practica Apache 3 mod davPractica Apache 3 mod dav
Practica Apache 3 mod dav
 
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVCSEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
 
13. Configuracion De Aplicaciones Web Asp.Net
13.  Configuracion De Aplicaciones Web Asp.Net13.  Configuracion De Aplicaciones Web Asp.Net
13. Configuracion De Aplicaciones Web Asp.Net
 
Java Web - Servlet
Java Web - ServletJava Web - Servlet
Java Web - Servlet
 
Tema 4
Tema 4Tema 4
Tema 4
 
Desarrollo web con JAVA: Introduccion a los Servlets
Desarrollo web con JAVA: Introduccion a los ServletsDesarrollo web con JAVA: Introduccion a los Servlets
Desarrollo web con JAVA: Introduccion a los Servlets
 
10.desarrollowebconjava
10.desarrollowebconjava10.desarrollowebconjava
10.desarrollowebconjava
 
Trabajo De Oracle
Trabajo De OracleTrabajo De Oracle
Trabajo De Oracle
 
Servicios web
Servicios webServicios web
Servicios web
 
Reporte servicios web
Reporte servicios webReporte servicios web
Reporte servicios web
 
T2 - JDBC
T2 - JDBCT2 - JDBC
T2 - JDBC
 
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-20065. Curso Java Struts I (Framework para Java) - Curso 2005-2006
5. Curso Java Struts I (Framework para Java) - Curso 2005-2006
 
Proyecto Aplicaciones Web
Proyecto Aplicaciones WebProyecto Aplicaciones Web
Proyecto Aplicaciones Web
 
Servlet
ServletServlet
Servlet
 

Más de Ander Martinez

UDA-Componentes RUP. Tabla.v2.4.6
UDA-Componentes RUP. Tabla.v2.4.6UDA-Componentes RUP. Tabla.v2.4.6
UDA-Componentes RUP. Tabla.v2.4.6Ander Martinez
 
Arinbide Adaptativo. Retrospectiva.v1.0
Arinbide Adaptativo. Retrospectiva.v1.0Arinbide Adaptativo. Retrospectiva.v1.0
Arinbide Adaptativo. Retrospectiva.v1.0Ander Martinez
 
Arinbide Adaptativo. Plan de entregas.v1.0
Arinbide Adaptativo. Plan de entregas.v1.0Arinbide Adaptativo. Plan de entregas.v1.0
Arinbide Adaptativo. Plan de entregas.v1.0Ander Martinez
 
Arinbide Adaptativo. Pila de sprint.v1.0
Arinbide Adaptativo. Pila de sprint.v1.0Arinbide Adaptativo. Pila de sprint.v1.0
Arinbide Adaptativo. Pila de sprint.v1.0Ander Martinez
 
Arinbide Adaptativo. Monitorización.v1.0
Arinbide Adaptativo. Monitorización.v1.0Arinbide Adaptativo. Monitorización.v1.0
Arinbide Adaptativo. Monitorización.v1.0Ander Martinez
 
Arinbide Adaptativo. Diseño técnico.v1.0
Arinbide Adaptativo. Diseño técnico.v1.0Arinbide Adaptativo. Diseño técnico.v1.0
Arinbide Adaptativo. Diseño técnico.v1.0Ander Martinez
 
Arinbide Adaptativo. Defectos y errores .v1.0
Arinbide Adaptativo. Defectos y errores .v1.0Arinbide Adaptativo. Defectos y errores .v1.0
Arinbide Adaptativo. Defectos y errores .v1.0Ander Martinez
 
Arinbide adaptativo. Anexo. Conceptos básicos. v1.0
Arinbide adaptativo. Anexo. Conceptos básicos. v1.0Arinbide adaptativo. Anexo. Conceptos básicos. v1.0
Arinbide adaptativo. Anexo. Conceptos básicos. v1.0Ander Martinez
 
Arinbide adaptativo.v1.0
Arinbide adaptativo.v1.0Arinbide adaptativo.v1.0
Arinbide adaptativo.v1.0Ander Martinez
 
UDA-Componentes RUP. Tabla Avanzada
UDA-Componentes RUP. Tabla AvanzadaUDA-Componentes RUP. Tabla Avanzada
UDA-Componentes RUP. Tabla AvanzadaAnder Martinez
 
UDA-Componentes RUP. Pestañas
UDA-Componentes RUP. PestañasUDA-Componentes RUP. Pestañas
UDA-Componentes RUP. PestañasAnder Martinez
 
UDA-Componentes RUP dialogo.v2.4.0
UDA-Componentes RUP dialogo.v2.4.0UDA-Componentes RUP dialogo.v2.4.0
UDA-Componentes RUP dialogo.v2.4.0Ander Martinez
 
UDA-Componentes RUP. Accordion
UDA-Componentes RUP. AccordionUDA-Componentes RUP. Accordion
UDA-Componentes RUP. AccordionAnder Martinez
 
UDA-Componentes RUP. Tabla (v2.1.1 deprecado)
UDA-Componentes RUP. Tabla (v2.1.1 deprecado)UDA-Componentes RUP. Tabla (v2.1.1 deprecado)
UDA-Componentes RUP. Tabla (v2.1.1 deprecado)Ander Martinez
 

Más de Ander Martinez (15)

UDA-Componentes RUP. Tabla.v2.4.6
UDA-Componentes RUP. Tabla.v2.4.6UDA-Componentes RUP. Tabla.v2.4.6
UDA-Componentes RUP. Tabla.v2.4.6
 
Arinbide Adaptativo. Retrospectiva.v1.0
Arinbide Adaptativo. Retrospectiva.v1.0Arinbide Adaptativo. Retrospectiva.v1.0
Arinbide Adaptativo. Retrospectiva.v1.0
 
Arinbide Adaptativo. Plan de entregas.v1.0
Arinbide Adaptativo. Plan de entregas.v1.0Arinbide Adaptativo. Plan de entregas.v1.0
Arinbide Adaptativo. Plan de entregas.v1.0
 
Arinbide Adaptativo. Pila de sprint.v1.0
Arinbide Adaptativo. Pila de sprint.v1.0Arinbide Adaptativo. Pila de sprint.v1.0
Arinbide Adaptativo. Pila de sprint.v1.0
 
Arinbide Adaptativo. Monitorización.v1.0
Arinbide Adaptativo. Monitorización.v1.0Arinbide Adaptativo. Monitorización.v1.0
Arinbide Adaptativo. Monitorización.v1.0
 
Arinbide Adaptativo. Diseño técnico.v1.0
Arinbide Adaptativo. Diseño técnico.v1.0Arinbide Adaptativo. Diseño técnico.v1.0
Arinbide Adaptativo. Diseño técnico.v1.0
 
Arinbide Adaptativo. Defectos y errores .v1.0
Arinbide Adaptativo. Defectos y errores .v1.0Arinbide Adaptativo. Defectos y errores .v1.0
Arinbide Adaptativo. Defectos y errores .v1.0
 
Arinbide adaptativo. Anexo. Conceptos básicos. v1.0
Arinbide adaptativo. Anexo. Conceptos básicos. v1.0Arinbide adaptativo. Anexo. Conceptos básicos. v1.0
Arinbide adaptativo. Anexo. Conceptos básicos. v1.0
 
Arinbide adaptativo.v1.0
Arinbide adaptativo.v1.0Arinbide adaptativo.v1.0
Arinbide adaptativo.v1.0
 
Arinbide.v3.0
Arinbide.v3.0Arinbide.v3.0
Arinbide.v3.0
 
UDA-Componentes RUP. Tabla Avanzada
UDA-Componentes RUP. Tabla AvanzadaUDA-Componentes RUP. Tabla Avanzada
UDA-Componentes RUP. Tabla Avanzada
 
UDA-Componentes RUP. Pestañas
UDA-Componentes RUP. PestañasUDA-Componentes RUP. Pestañas
UDA-Componentes RUP. Pestañas
 
UDA-Componentes RUP dialogo.v2.4.0
UDA-Componentes RUP dialogo.v2.4.0UDA-Componentes RUP dialogo.v2.4.0
UDA-Componentes RUP dialogo.v2.4.0
 
UDA-Componentes RUP. Accordion
UDA-Componentes RUP. AccordionUDA-Componentes RUP. Accordion
UDA-Componentes RUP. Accordion
 
UDA-Componentes RUP. Tabla (v2.1.1 deprecado)
UDA-Componentes RUP. Tabla (v2.1.1 deprecado)UDA-Componentes RUP. Tabla (v2.1.1 deprecado)
UDA-Componentes RUP. Tabla (v2.1.1 deprecado)
 

Último

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 

Último (13)

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 

Implementar WebDAV en aplicaciones Java

  • 1. UDA – Utilidades de desarrollo de aplicaciones by EJIE is licensed under a Creative Commons Reconocimiento- NoComercial-CompartirIgual 3.0 Unported License. UDA - Utilidades de desarrollo de aplicaciones Uso de WebDAV en UDA Fecha: 08/01/2014 Referencia: EJIE S.A. Mediterráneo, 14 Tel. 945 01 73 00* Fax. 945 01 73 01 01010 Vitoria-Gasteiz Posta-kutxatila / Apartado: 809 01080 Vitoria-Gasteiz www.ejie.es
  • 2. Uso de WebDAV en UDA 1/20 Control de documentación Título de documento: Web Services Histórico de versiones Código: Versión: Fecha: Resumen de cambios: 1.0.0 08/01/2014 Primera versión Cambios producidos desde la última versión Primera versión Control de difusión Responsable: Ander Martínez Aprobado por: Firma: Fecha: Distribución: Referencias de archivo Autor: Nombre archivo: Localización:
  • 3. Uso de WebDAV en UDA 2/20 Contenido Capítulo/sección Página 1 Introducción 1 2 Arquitectura 2 3 Configuración 4 3.1 Obtener dependencias 4 3.2 Configuración de Spring 4 3.3 web.xml 6 4 Implementación del Store 8 5 Script de BBDD 13 6 Edición en línea de un documento mediante Microsoft Office 14 6.1 Componente RUP DAV 15 7 Seguridad 16 7.1 XLNets 16
  • 4. Uso de WebDAV en UDA 1/20 1 Introducción El presente documento tiene como objetivo definir y explicar de manera detallada como integrar en una aplicación el uso de WebDAV para el tratamiento de ficheros almacenados en servidor. El objetivo es proporcionar una solución común a todas las aplicaciones que requieran el uso de WebDAV para la gestión de documentos. La solución propuesta proporciona soporte para WebDAV nivel 2, la cual permite realizar bloqueos de directorios y ficheros para poder protegerlos y evitar que sean modificados por otros usuarios. Algunos clientes WebDAV como Microsoft Office o Microsoft Web Folders requieren de un servidor de WebDAV que implemente el nivel 2.
  • 5. Uso de WebDAV en UDA 2/20 2 Arquitectura Este sería el esquema de la arquitectura del componente WebDAV: El componente WebDav consta de los siguientes módulos: • Servlet: Es el encargado de recibir y gestionar las peticiones WebDAV. Permite al usuario interactuar con los recursos accesibles mediante WebDAV. Como implementación del servlet se proporciona la clase com.ejie.x38.webdav.WebdavSpringServlet, preparada para ser integrada en Spring. • Store: Es el encargado de lograr la interacción entre las peticiones WebDAV y los documentos almacenados. Implementando diferentes stores se puede extender la capacidad del componente WebDAV para gestionar recursos almacenados en cualquier sistema de persistencia. Por defecto se proporciona el store com.ejie.x38.webdav.LocalFileSystemStore que permite gestionar recursos almacenados en un sistema de ficheros. Para utilizar un sistema de persistencia diferente para los recursos, se deberá de crear, por parte de las aplicaciones, una clase que implemente la interface com.ejie.x38.webdav.IWebdavStore. WebdavServlet LocalFileSystemStore DatabaseStore CustomStore ResourceLocker … Stores
  • 6. Uso de WebDAV en UDA 3/20 • Locker: Gestiona los bloqueos de los ficheros para evitar las modificaciones por parte de otros usuarios. El sistema de bloqueos es necesario para determinadas operaciones con WebDAV nivel 2. El componente permite gestionar los bloqueos mediante persistencia en memoria o uso de base de datos. Se recomienda el uso de base de datos ya que es la única que garantiza el correcto funcionamiento en entornos cluster. La clase que gestiona los bloqueos de los ficheros es com.ejie.x38.webdav.locking.DataBaseResourceLocks.
  • 7. Uso de WebDAV en UDA 4/20 3 Configuración Para utilizar el componente de WebDAV se deben de realizar los siguientes pasos: 3.1 Obtener dependencias El componente WebDAV se proporciona a través de la librería x38ShLibClasses-dav. Para incorporarla a la aplicación bastará con añadir la siguiente dependencia en el fichero pom.xml de la aplicación. <dependency> <groupId>com.ejie.x38</groupId> <artifactId>x38ShLibClasses-dav</artifactId> <version>2.4.0-RELEASE</version> </dependency> Se recomienda indicar la versión más reciente que se haya liberado. 3.2 Configuración de Spring Se deberá de crear un nuevo fichero webdav-config.xml en el que se incluirá toda la configuración relacionada con el componente. El contenido del fichero será el siguiente: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- Gestión de los locks de recursos de WebDAV mediante base de datos --> <bean id="webDavDataBaseLockDao" class="com.ejie.x38.webdav.locking.DataBaseLockDaoImpl"> <property name="lockingDataSource" ref="dataSource" /> <property name="lockingTableName" value="Y64BWEBDAVLOCK" /> </bean> <bean id="webDavDataBaseLockService" class="com.ejie.x38.webdav.locking.DataBaseLockServiceImpl"> <property name="dataBaseLockDao" ref="webDavDataBaseLockDao" /> </bean>
  • 8. Uso de WebDAV en UDA 5/20 <bean id="dataBaseResourceLocks" class="com.ejie.x38.webdav.locking.DataBaseResourceLocks"> <property name="dataBaseLockService" ref="webDavDataBaseLockService" /> </bean> <!-- Definición del almacén de datos de WebDAV --> <bean id="webDavStore" class="com.ejie.x38.webdav.LocalFileSystemStore"> <property name="rootPath" value="/datos/xxx/tmp/" /> </bean> <!-- Servlet que gestiona las peticiones WebDAV --> <bean id="webdavServlet" class="com.ejie.x38.webdav.WebdavSpringServlet"> <property name="webDavStore" ref="webDavStore" /> <property name="resourceLocks" ref="dataBaseResourceLocks" /> </bean> </beans> Los beans que se definen en el fichero son los siguientes: • webdavServlet: Definición del servlet que se encargará de escuchar las peticiones WebDAV. El identificador aquí especificado deberá coincidir con el utilizado en el fichero web.xml, tal y como se comenta más adelante. La definición del bean requiere informar los siguientes parámetros: o webDavStore: Bean de tipo com.ejie.x38.webdav.IWebdavStore que implementa la interacción entre las peticiones WebDav y el almacén de datos. o resourceLocks: Bean de tipo com.ejie.x38.webdav.IResourceLocks que implementa la gestión de bloqueos. • webDavStore: Determina el bean encargado de permitir la interacción entre las peticiones de WebDAV y el almacén de datos. En x38 se proporciona una implementación por defecto mediante la clase com.ejie.x38.webdav.LocalFileSystemStore. Esta clase realiza las operaciones WebDAV contra un sistema de ficheros local. Mediante la propiedad rootPath se especifica la ruta sobre el sistema de ficheros local que se tomará como base para el componente WebDAV. En caso de necesitar interactuar con un sistema de almacenamiento diferente se deberá proporcionar una implementación que resuelva la interacción entre el propio almacén y las peticiones de WebDAV. Este punto se detalla en el apartado 3.Implementación del Store. Las siguientes definiciones de beans son necesarias para la gestión de los bloqueos de los documentos mediante el uso de base de datos. • webDavDataBaseLockDao: Bean de tipo com.ejie.x38.webdav.locking.DataBaseLockDaoImpl que implementa las operaciones contra la base de datos. La definición del bean requiere informar los siguientes parámetros: o lockingDataSource: Datasource utilizado para conectar con la base de datos.
  • 9. Uso de WebDAV en UDA 6/20 o lockingTableName: Nombre de la tabla existente en la base de datos que será utilizada para gestionar los bloqueos. • webDavDataBaseLockService: Bean de tipo com.ejie.x38.webdav.locking.DataBaseLockServiceImpl implementa los métodos encargados de gestionar las operaciones del bloqueo. La definición del bean requiere informar los siguientes parámetros: o dataBaseLockDao: Dao utilizado para conectar con la base de datos. • dataBaseResourceLocks: Bean de tipo com.ejie.x38.webdav.locking.DataBaseResourceLocks implementa el recurso de bloqueos del componente WebDAV mediante base de datos. La definición del bean requiere informar los siguientes parámetros: o dataBaseLockService: Servicio utilizado para realizar las operaciones de bloqueo mediante base de datos. A continuación se deberá añadir una entrada en el fichero app-config,xml de WAR de la aplicación para que se incluya en la carga de configuración de Spring. <beans xmlns=http://www.springframework.org/schema/beans ...> <import resource="mvc-config.xml" /> <import resource="log-config.xml"/> <import resource="validation-config.xml"/> <import resource="security-core-config.xml"/> <import resource="security-config.xml"/> <import resource="webdav-config.xml"/> </beans> 3.3 web.xml Para que el componente gestione las peticiones WebDAV se deberá incluir en el fichero web.xml del War de la aplicación la siguiente definición: <servlet> <display-name>WebDAVServlet</display-name> <servlet-name>webdavServlet</servlet-name> <servlet-class> org.springframework.web.context.support.HttpRequestHandlerServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>webdavServlet</servlet-name> <url-pattern>/webdavServlet/*</url-pattern> </servlet-mapping>
  • 10. Uso de WebDAV en UDA 7/20 El valor indicado en la propiedad servlet-name, tanto para la definición del servlet como del servlet-mapping, se deberá corresponder con el que se ha utilizado como identificador en la definición del bean com.ejie.x38.webdav.WebdavSpringServlet en el fichero webdav-config.xml <servlet-name>webdavServlet</servlet-name> En la propiedad url-pattern se definirá la url a partir de la cual se gestionarán las peticiones webdav. <url-pattern>/webdavServlet/*</url-pattern>
  • 11. Uso de WebDAV en UDA 8/20 4 Implementación del Store Mediante la librería x38 se proporciona un store por defecto que permite al componente WebDAV interactuar con archivos almacenados en un sistema de ficheros local. En una aplicación puede ser habitual que los documentos se almacenen mediante un sistema distinto, ya sea en base de datos o en un gestor documental. En este caso se deberá proveer al componente WebDAV de una implementación del store que permita la interacción entre las peticiones WebDAV y los archivos almacenados. Para implementar un store se deberá crear una clase que implemente la interfaz IWebdavStore, p. ej.: package com.ejie.xxx.webdav; public class CustomWebdavStore implements IWebdavStore { } La clase deberá implementar los siguientes métodos: • begin: Indica que se ha iniciado una nueva petición o transacción sobre el store implementado. Parámetros de entrada: o principal: Representa la identidad que realiza el inicio de la petición. Puede ser nulo en caso de no estar disponible. Retorno. o Objeto identificador de la transacción iniciada. @Override public ITransaction begin(Principal principal) { // TODO Auto-generated method stub return null; } • checkAuthentication: Comprueba que la información de autenticación proporcionada es correcta. En caso de no serlo se lanza una excepción. Parámetros de entrada: o transaction: Objeto identificador de la transacción. @Override public void checkAuthentication(ITransaction transaction) { // TODO Auto-generated method stub }
  • 12. Uso de WebDAV en UDA 9/20 • commit: Determina que todos los cambios realizados pueden ser marcados como permanentes y todas las transacciones, conexiones y recursos temporales pueden ser liberados. Parámetros de entrada: o transaction: Objeto identificador de la transacción. @Override public void commit(ITransaction transaction) { // TODO Auto-generated method stub } • rollback: Determina que todos los cambios realizados pueden ser deshechos y todas las transacciones, conexiones y recursos temporales pueden ser liberados. Parámetros de entrada: o transaction: Objeto identificador de la transacción. @Override public void rollback(ITransaction transaction) { // TODO Auto-generated method stub } • createFolder: Crea un directorio en la ruta especificada por el parámetro folderUri. Parámetros de entrada: o transaction: Objeto identificador de la transacción. o forlderUri: Ruta del directorio. @Override public void createFolder(ITransaction transaction, String folderUri) { // TODO Auto-generated method stub } • createResource: Crea un contenedor del recurso en la ruta especificada por el parámetro resourceUri. Parámetros de entrada: o transaction: Objeto identificador de la transacción. o resourceUri: Ruta del contenedor del recurso. @Override public void createResource(ITransaction transaction, String resourceUri) { // TODO Auto-generated method stub }
  • 13. Uso de WebDAV en UDA 10/20 • getResourceContent: Devuelve el contenido del recurso especificado por el parámetro resourceUri. Parámetros de entrada: o transaction: Objeto identificador de la transacción. o resourceUri: Ruta del recurso que se desea recuperar. Retorno. o Objeto InputStream a partir del cual se puede leer el contenido del recurso. @Override public InputStream getResourceContent(ITransaction transaction, String resourceUri) { // TODO Auto-generated method stub return null; } • setResourceContent: Almacena el contenido del recurso especificado por el parámetro resourceUri. Parámetros de entrada: o transaction: Objeto identificador de la transacción. o resourceUri: Ruta del recurso que se desea almacenar. o content: InputStream a partir del cual se va a leer el recurso. o contentType: ContentType del recurso que se va a almacenar. Puede ser null en caso de ser desconocido. o characterEncoding: CharacterEncoding del recurso que se va a almacenar. Puede ser null en caso de ser desconocido. Retorno. o Tamaño del recurso almacenado en bytes. @Override public long setResourceContent(ITransaction transaction, String resourceUri, InputStream content, String contentType, String characterEncoding) { // TODO Auto-generated method stub return 0; } • getChildrenNames: Devuelve los nombres de los hijos del directorio especificado por el parámetro folderUri. Parámetros de entrada: o transaction: Objeto identificador de la transacción. o folderUri: Ruta del directorio del cual hay que obtener los hijos. Retorno. o Array de strings que contiene la lista de hijos del directorio. @Override public String[] getChildrenNames(ITransaction transaction,String folderUri){ // TODO Auto-generated method stub
  • 14. Uso de WebDAV en UDA 11/20 return null; } • getResourceLength: Devuelve el tamaño, en bytes del recurso solicitado por el parámetro resourceUri. Parámetros de entrada: o transaction: Objeto identificador de la transacción. o resourceUri: Ruta del recurso que se desea conocer el tamaño. Retorno. o Tamaño en bytes del recurso solicitado. @Override public long getResourceLength(ITransaction transaction,String resourceUri) { // TODO Auto-generated method stub return 0; } • removeObject: Elimina el objeto especificado por el parámetro uri. Parámetros de entrada: o transaction: Objeto identificador de la transacción. o uri: Ruta del recurso que se desea eliminar (fichero o directorio). @Override public void removeObject(ITransaction transaction, String uri) { // TODO Auto-generated method stub } • getStoredObject: Devuelve un StoredObject correspondiente al recurso identificado mediante la ruta especificada por el parámetro uri. Parámetros de entrada: o transaction: Objeto identificador de la transacción. o uri: Ruta del recurso del que se quiere obtener el StoredObject. Retorno. o StoredObject del recurso correspondiente. @Override public StoredObject getStoredObject(ITransaction transaction, String uri) { // TODO Auto-generated method stub return null; } Un objecto StoredObject contiene información relative a un recurso WebDAV. Las propiedades que contiene son las siguientes:
  • 15. Uso de WebDAV en UDA 12/20 • isFolder: Indica si es un directorio (true) o un fichero (false). • lastModified: Fecha que determina en que momento se realizó la última modificación. • creationDate: Fecha que determina el momento de creación del recurso. • contentLength: Tamaño en bytes del recurso. Una vez implementado el store se deberá indicar al componente de WebDAV que lo utilice para interactuar con el almacén de ficheros. Esto se indicará en el fichero webdav-config.xml del siguiente modo: <!-- Definición del almacén de datos de WebDAV --> <bean id="customWebDavStore" class="com.ejie.xxx.webdav.CustomWebdavStore"> </bean> <!-- Servlet que gestiona las peticiones WebDAV --> <bean id="webdavServlet" class="com.ejie.x38.webdav.WebdavSpringServlet"> <property name="webDavStore" ref=" customWebDavStore " /> <property name="resourceLocks" ref="dataBaseResourceLocks" /> </bean>
  • 16. Uso de WebDAV en UDA 13/20 5 Script de BBDD Para gestionar correctamente los bloqueos de los ficheros mediante base de datos se deberá de crear una nueva tabla en el esquema de BBDD de la aplicación. En esta tabla se almacenará la información necesaria para realizar los bloqueos de los ficheros que estén siendo editados por parte de los usuarios de la aplicación. El nombre de la tabla empleado deberá de coincidir con el indicado en la propiedad lockingTableName del bean webDavDataBaseLockDao en el fichero de configuración webdav-config.xml. El script de creación de la tabla sería el siguiente: CREATE TABLE "WEBDAV_LOCK" ( "ID" VARCHAR2(255 BYTE) NOT NULL ENABLE, "PATH" VARCHAR2(255 BYTE) NOT NULL ENABLE, "LOCK_DEPTH" VARCHAR2(10 BYTE), "EXPIRES_AT" NUMBER(19,0), "OWNER" VARCHAR2(255 BYTE) NOT NULL ENABLE, "EXCLUSIVE_LOCK" VARCHAR2(1 BYTE), "LOCK_TYPE" VARCHAR2(10 BYTE), "CHILDREN_ID" VARCHAR2(255 BYTE), "PARENT_ID" VARCHAR2(255 BYTE), "TEMP_LOCK" VARCHAR2(1 BYTE), CONSTRAINT "WEBDAV_LOCK_PK" PRIMARY KEY ("ID", "OWNER") ); El nombre de la tabla (resaltado en negrita) deberá de cumplir con la normativa de nomenclatura de tablas de EJIE.
  • 17. Uso de WebDAV en UDA 14/20 6 Edición en línea de un documento mediante Microsoft Office Uno de los escenarios más utilizado por las aplicaciones es la edición en línea de documentos mediante Microsoft Office. Si se han seguido los pasos indicados en los apartados anteriores se dispondrá de un servidor WebDAV nivel 2 de acuerdo a lo requerido por Microsoft Office. Dependiendo de la versión de Microsoft Office utilizada se podrá realizar la edición en línea desde diferentes navegadores: • Microsoft Office 2003 e inferiores: Internet Explorer. • Microsoft Office 2007 y superiores: Internet Explorer, Firefox y Chrome. Para cubrir todos estos escenarios se deben seguir los siguientes pasos: 1. Se deberá incluir el siguiente código en la jsp correspondiente. Esto sirve para que se pueda utilizar el plugin FFWinPlugin que permite abrir y editar documentos mediante Microsoft Office desde Firefox y Chrome. <object id="winFirefoxPlugin" type="application/x-sharepoint" width="0" height="0" style="visibility: hidden;"></object> 2. En el fichero js se incluirá el siguiente script para gestionar cada uno de los diferentes tipos de navegadores utilizados por el usuario. var url = baseUrlOfApp+"webdavServlet/webdav_file.doc", obj, hownowPlugin, version; if ($.browser.msie === true){ // Gestión para Internet Explorer try{ // Microsoft Office 2007 y superiores obj = new ActiveXObject("SharePoint.OpenDocuments.3"); obj.EditDocument(url); }catch(e){ try{ // Microsoft Office 2003 e inferiores obj = new ActiveXObject('Word.Application'); obj.Visible = true; obj.Documents.Open(encodeURI(url)); }catch(e){ // No se puede editar en línea, se descarga el archivo window.open("url_de_descarga_del_fichero", '_blank'); } } } else { // Gestión para Firefox y Chrome try{
  • 18. Uso de WebDAV en UDA 15/20 // Microsoft Office 2007 y superiores hownowPlugin = document.getElementById("winFirefoxPlugin"); version = hownowPlugin.GetOfficeVersion(); hownowPlugin.EditDocument(url, version); }catch(e){ // No se puede editar en línea, se descarga el archivo window.open("url_de_descarga_del_fichero", '_blank'); } } 6.1 Componente RUP DAV Para facilitar el uso de WebDAV desde una aplicación UDA se ha implementado el componente rup.dav. Uno de los objetivos es abstraer al desarrollador de la gestión de la edición de un documento en línea dependiente del navegador utilizado por el usuario. Este componente se ha incluido en la versión v2.4.1 de UDA por lo que se podrá hacer uso del mismo en las aplicaciones que dispongan de dicha versión o posteriores. En caso de utilizar este componente, el proceso sería el siguiente: 1. Se deberá incluir el siguiente código en la jsp correspondiente. Esto sirve para que se pueda utilizar el plugin FFWinPlugin que permite abrir y editar documentos mediante Microsoft Office desde Firefox y Chrome. <object id="winFirefoxPlugin" type="application/x-sharepoint" width="0" height="0" style="visibility: hidden;"></object> 2. Para invocar al servidor de WebDAV y realizar la edición online se llamará al componente rup.dav del siguiente modo: jQuery.rup_dav.editOnline({ url:"webdavServlet/webdav.doc", xlnetsAuth:true, downloadOnError:true, alternateDownloadURL:"../upload?fileName=webdav.doc" }); Las propiedades de configuración son las siguientes: • url: Url utilizada para acceder al recurso deseado a través del servlet de WebDAV. • xlnetsAuth: Determina si se debe realizar la petición teniendo en cuenta la autenticación del usuario en XLNets. Esto permite aplicar la seguridad de una aplicación UDA que utilice Spring Security con autenticación del usuario en XLNets. • downloadOnError: Determina si se debe habilitar la descarga automática del fichero en caso de que no sea posible realizar la edición online. • alternateDownloadURL: Esta URL será la utilizada para que el usuario pueda descargar el fichero en caso de que falle la edición online.
  • 19. Uso de WebDAV en UDA 16/20 7 Seguridad En un principio el componente WebDAV no proporciona mecanismos de seguridad adicionales a los que proporciona la aplicación. Es tarea de la aplicación securizar las urls de acceso y los métodos de negocio utilizados para proveer del recurso sobre el que se desea trabajar mediante WebDAV. En las aplicaciones UDA la securización de estos elementos se realiza mediante los mecanismos habituales que proporciona Spring Security, de modo que se podrá hacer uso tanto de las anotaciones como de la configuración declarativa en los ficheros de configuración de Spring Security. La securización de la url del servlet del componente WebDAV se realiza del mismo modo que con las demás urls de la aplicación. Se añadirá en el fichero security-config.xml la regla correspondiente que determinará la securización de la url por parte de los usuarios. Un ejemplo sería el siguiente: <bean id="filterSecurityInterceptor" class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor"> <property name="authenticationManager" ref="authenticationManager" /> <property name="accessDecisionManager" ref="affirmativeBased" /> <property name="securityMetadataSource" > <security:filter-security-metadata-source use-expressions="true" request-matcher="regex"> <security:intercept-url pattern="/webdavServlet/.*" access="hasRole('ROLE_XXX-IN- 0005')" /> <!—Resto de reglas de securización --> </security:filter-security-metadata-source> </property> </bean> De este modo determinamos que el usuario que desee acceder a los recursos de WebDAV debe disponer del nivel de autorización correspondiente otorgado por el rol de seguridad ROLE_XXX-IN-005. 7.1 XLNets En caso de utilizar XLNets para la autenticación y la securización de la aplicación, se deberá realizar una configuración adicional para permitir al componente WebDAV integrarse correctamente con XLNets. Se deberá incluir en el fichero security-core-config.xml la siguiente definición: <bean id="springSecurityFilterChain" class="org.springframework.security.web.FilterChainProxy"> <security:filter-chain-map request-matcher="regex"> <security:filter-chain pattern="/sessionInfo.*" filters="none"/> <security:filter-chain pattern="/mockLoginPage.*" filters="none"/> <security:filter-chain pattern="/mockLoginAjaxPage.*" filters="none"/> <security:filter-chain pattern="/error.*" filters="none"/> <security:filter-chain pattern="/accessDenied.*" filters="none"/> <security:filter-chain pattern="/webdavServlet/.*" filters=" webDAVXLNetsAuthenticationFilter, exceptionTranslationFilter, securityContextPersistenceFilter,
  • 20. Uso de WebDAV en UDA 17/20 logoutFilter, preAuthenticateProcessingFilter, filterSecurityInterceptor" /> <security:filter-chain pattern="**" filters=" exceptionTranslationFilter, securityContextPersistenceFilter, logoutFilter, preAuthenticateProcessingFilter, filterSecurityInterceptor" /> </security:filter-chain-map> </bean> <bean id="webDAVXLNetsAuthenticationFilter" class="com.ejie.x21a.webdav.WebDAVXLNetsAuthenticationFilter"/> El objetivo es definir para la url del servlet del componente WebDAV una cadena de ejecución de filtros de seguridad entre los que se incluye el filtro webDAVXLNetsAuthenticationFilter. Mediante este filtro se logra que las peticiones que realiza el cliente de XLNets, por ejemplo el Microsoft Office, puedan ser securizadas mediante la misma configuración de seguridad empleada en la aplicación.