viernes, 15 de mayo de 2009

Parte III: Configurando la aplicación SharePoint para doble autenticación.

Publicaciones anteriores:


Por una lado tenemos nuestra aplicación web creada, la cual tiene autenticación windows.

El siguiente paso es crear una extensión de esta aplicación la cual tendrá acceso anónimo desde internet y el mecanismo de autenticación será por formularios, realizando los siguientes pasos:



  1. Desde el Administrador Central de SharePoint ir a Administración de Aplicaciones, Crear o extender una aplicación web, luego elegir Extender una aplicación web existente.
  2. Elegir la aplicación web existente a la cual queremos darle autenticación por formularios de la lista desplegable.
  3. Un punto importante es el puerto que estará escuchando esta aplicación. Para que funcione de forma correcta la doble autenticación, deberá escuchar los mismos puertos, tanto la de autenticación windows como la autenticación por formularios. Por lo que podemos en este paso elegir el mismo puerto de la aplicación que estamos extendiendo, o bien, seleccionar otro puerto y luego crear un acceso alternativo y un binding en el IIS.
  4. Ingresar un nuevo encabezado de host.
  5. Por ahora el modo de autenticación elegir NTLM.
  6. Permitir acceso anónimo: NO, luego lo habilitaremos.
  7. Zona: internet

Una vez creada la extensión, podemos probar el funcionamiento entrando a la nueva url, e ingresando con las credenciales de windows. (Todavía no hemos configurado que se conecte a la base de datos creada en pasos anteriores).


Configuración de las aplicaciones para que se comuniquen con la BD de membresía.

Supongamos que tenemos nuestra aplicación que deberá autenticarse por Windows, la llamaremos http://extranet:5000.
A su correspondiente extensión realizada en los pasos anteriores la llamaremos http://internet:5000

A continuación describiré los pasos para configurar dichas aplicaciones para que accedan a la BD de membresía.

En la parte II de esta serie de publicaciones, se mostró el connectionstring, el proveedor de membresía y el de roles.

Lo que tenemos que hacer ahora es editar tanto el web.config de la http://extranet:5000 como de la http://internet:5000.

Modificar el web.config de http://extranet:5000 si bien utilizará como autenticación windows, permitirá agregar usuarios y administrar permisos utilizando los de formularios también.

Es recomendable antes de la modificación del web.config realizar una copia de respaldo del mismo.
  1. Abrir el web.config de http://extranet:5000/
  2. Insertar el código de connectionstring que creamos en la parte II justo después del tag y antes de la apertura del tag
  3. Insertar el código del proveedor de membresía y el proveedor de roles justo después del tag
  4. Guardar los cambios.
  5. Abrir el web.config de http://internet:5000/
  6. Repetir los pasos 2, 3 y 4.


  7. Para administrar los permisos también desde la adminstración central de SharePoint haremos lo mismo:

  8. Ubicar el web.config de la aplicación central de SharePoint.
  9. Repetir pasos 2 y 3.
  10. Realizar un pequeño cambio, en el nodo roleManager recien insertado, sustituir el valor del atributo defaultProvider que teníamos configurado para los demás archivos de configuración por el siguiente valor: AspNetWindowsTokenRoleProvider.
  11. Guardar los cambios.


Cada vez que realicemos una modificación en el archivo de configuración deberemos reiniciar el iis.

4 comentarios:

Unknown dijo...

Hola. Soy bastante nuevo en esto de Sharepoint y me está viniendo muy bien este tutorial de como extender una aplicación web para permitir acceso a usuarios externos.

Tengo un problema: he extendido la aplicación y le he puesto acceso desde el puerto 8080, en lugar de ponerle el puerto 80 que tiene la aplicación. El problema es que ahora no puedo acceder de ninguna manera. He visto que comentas que habría que "crear un acceso alternativo y un binding en el IIS". ¿A qué te refieres con esto? No tengo ni idea de como hacerlo.

Te agradezco que compartas con nosotros tu experiencia, es muy util.

Un saludo.

Silvina Pizzarulli dijo...

Hola Sergio.
Te cuento como se puede solucionar.

Por un lado en el IIS, debes ir a ver las propiedades del website, en la ventana de propiedades eliger la solapa Web Site y verás que dice Web site identification... IP Address, Port, etc... Debes hacer clic en el botón Avanzado...
Luego agregas una nueva identidad, o que escuche al puerto 80, clic en Agregar... luego ingresas el nro. de puerto (que debe ser el mismo que el de tu aplicación original).

Eso serían los pasos para la parte del binding con el IIS.

Luego queda la segunda parte que es configurar esta nueva identidad o forma de acceso en el sharepoint.
Para ello, los pasos son los siguientes:

Para configurar el Acceso Alternativo, ir a Central Administration > Operations > Alternate Access Mappings.

En este lugar se podrá ver todas las Rutas de Accesos Administradas de las Aplicaciones Web existentes.

Seleccionas la aplicación web, y al Editar las URLs de Zonas Públicas, aparecerán las opciones de accesos alternativos para la App Web.

Las zonas adicionales que son posibles configurar son "Intranet", "Internet", "Personalizado" e "Internet".

En tu caso si ya tienes para la zona internet el item completo, cambia de lugar esta a Custom, y en la zona de internet, agrega tu nueva url que apunte al puerto que corresponde a tu aplicación.

Espero te sirva de ayuda. Saludos.

Cesar dijo...

Hola Silvina, primero te agradezco por la respuesta hace unos cuantos meses en la parte II del informe de autenticación, te quería hacer una consulta con respecto a la autenticación, necesitaría forzar la autenticación cuando el usuario hace click en Acciones del Sitio o en Ver todo el contenido del sitio, desde ya te agradezco mucho.
Saludos cordiales,
Fonseca Cesar.

Silvina Pizzarulli dijo...

Hola Cesar,

Se me ocurre que podrías desarrollar un httpmodule para estar "escuchando" de alguna manera qué páginas quieren accederse, y si por ejemplo una de ellas es la "viewlsts.aspx" [Ver todo el contenido del sitio] - redireccionar a la página de login.

Saludos,
Silvina.-