martes, 21 de diciembre de 2010

Deshabilitar la integración de cliente Office

La integración de cliente Office (client integration) permite abrir documentos de Office alojados en un sitio de SharePoint de manera que las modificaciones que realicemos desde el cliente Office se apliquen directamente sobre SharePoint, evitándonos así tener que subir las modificaciones manualmente.

Esta funcionalidad es muy útil para entornos de Intranet/extranet donde los usuarios están modificando de forma habitual los documentos. Sin embargo para un portal público con autenticación por formulario y usuarios anónimos puede no ser recomendable, ya que al abrir el documento de Office aparecerá una ventana emergente de Office con la página de login para que nos autentiquemos aunque el documento esté habilitado para los usuarios anónimos.

Tendremos que deshabilitar entonces la autenticación con los clientes Office:

  • Desde la Administración Central > administración de aplicaciones > Administrar aplicaciones web
  • Seleccionamos nuestra aplicación web
  • En la opción “Proveedores de autenticación” seleccionamos el proveedor para el que queremos deshabilitar la integración de clientes Office.
  • En la sección “Integración de clientes” marcaremos la opción que deseemos.

image

En el caso que tengamos un sitio con usuario anónimo habilitado y autenticación basada en formulario al abrir el documento seguirá pidiéndonos un usuario para abrir el documento. Si comprobamos la peticiones HTTP que se realizan al abrir el documento veremos que el cliente Office además de hacer una petición del tipo GET, también realiza dos peticiones más: OPTIONS y HEAD. El problema de que siga apareciendo la ventana de login consiste en que se realiza una petición con el verbo OPTIONS por cada una de las secciones que componen la ruta del documento, por ejemplo si el documento se encuentra en  carpeta1/carpeta2/documento.docx realizará tres peticiones:

OPTIOSN carpeta1/carpeta2

OPTIOSN carpeta1

OPTIOSN carpeta1/carpeta2/documento.docx

image

Para resolver esto además del paso anterior tendremos que indicarle al IIS que bloquee las peticiones de los clientes Office:

  • Desde la consola de IIS > seleccionamos nuestro sitio web
  • En la opción “Request filtering” seleccionamos la pestaña “HTTP Verbs” y agregamos los verbos permitidos o denegados.

image

Esto hará que se modifique el fichero web.config con las entradas:

<system.webServer>
    <security>
      <requestFiltering allowDoubleEscaping="true" unescapeQueryString="true">
    <requestLimits maxAllowedContentLength="2147483647" />
    <verbs allowUnlisted="false">
          <add verb="GET" allowed="true" />
          <add verb="HEAD" allowed="true" />
          <add verb="POST" allowed="true" />
    </verbs>
      </requestFiltering>
    </security>

</system.webServer>

No hay comentarios: