SharePoint 2013: Como configurar la autenticación basada en formularios (I)!

Como en versiones anteriores, podemos configurar SharePoint 2013 para que usuarios de distintos tipos (Directorio Activo, Base de Datos, directorio LDAP, etc) puedan autenticarse en sitios de SharePoint usando las credenciales que tengan definidas. En este primer post vamos a ver como configurar la autenticación basada en formularios para usuarios de base de datos. Empecemos (Nota: Es recomendable hacer una copia de seguridad de todo archivo web.config que se modifique).

Creación de la aplicación web con soporte para FBA

Lo primero que tenemos que hacer es crear una aplicación web de SharePoint 2013 con soporte para FBA. Os recuerdo, que por defecto SharePoint 2013 utiliza autenticación basada en claims por lo que ya no podremos elegir entre autenticación clásica y claims al crear la aplicación:

  • Por un lado, configuraremos la aplicación web para que use autenticación Windows integrada (NTLM).
  • Por otro lado, habilitaremos la autenticación por formularios y especificaremos los nombres del proveedor de suscripciones y del proveedor de administración. Estos nombres los necesitaremos posteriormente cuando modifiquemos los correspondientes archivos web.config.
image image

 

Creación de la base de datos de roles y usuarios

Una vez que hemos creado la aplicación web, pasaremos a crear la BD de roles y usuarios utilizando para ello la clásica utilidad aspnet_regsql.exe:

  • Abrimos la interfaz de línea de comandos y buscamos esta utilidad en la ruta c:WindowsMicrosoft.NETFrameworkv2.0.50727.
  • Ejecutamos la utilidad de forma que vía asistente y de forma guiada se cree la BD de roles y usuarios comentada. Una vez qué el proceso de creación concluye, comprobamos que la BD se ha creado de forma correcta.
  • Lo siguiente que haremos es agregar usuarios en dicha BD. Para ello, creamos un proyecto de ASP.NET vacío en Visual Studio 2012 y usamos la opción “Configuración de ASP.NET” disponible en el menú “SITO WEB”.
image image image

Modificación de los archivos web.config

Realizados los pasos anteriores, para habilitar y utilizar la autenticación basada en formularios tenemos que proceder a modificar los archivos web.config siguientes: el de la aplicación web creada, el de la Administración Central de SharePoint 2013 y el del STS. Antes de modificar cualquier archivo web.config, os recomiendo hacer una copia de seguridad del mismo para evitar problemas y modificaciones incorrectas.

Archivo “web.config” de la Aplicación Web

  • Añadimos la cadena de conexión después de la etiqueta </SharePoint> y antes de <system.web>:
  <connectionStrings>
    <add connectionString="Server=c4431163311;Database=aspnetdb;Integrated Security=true" name="AspNetSqlProvider" />
  </connectionStrings>
  • Añadimos el membership Provider y Role Manager (reemplazar el otro RoleManager y Membership existente en el web.config):

    • Localizamos la sección <roleManaer defaultProvider=“c”…> y la configuramos de la siguiente forma:

    <roleManager defaultProvider="c" enabled="true" cacheRolesInCookie="false">
      <providers>
        <add name="c" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
        <add connectionStringName="AspNetSqlProvider" applicationName="/" description="Stores and retrieves roles from SQL Server" name="SQL-RoleManager" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </providers>
    </roleManager> 
    • A continuación localizamos la sección <membership defaultProvider="i"> y la configuramos de la siguiente forma:

    <membership defaultProvider="i">
      <providers>
        <add name="i" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />        
        <add connectionStringName="AspNetSqlProvider" passwordAttemptWindow="5" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="true" passwordFormat="Hashed" description="Stores and Retrieves membership data from SQL Server" name="SQL-MembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </providers>
    </membership>

Archivo “web.config” de la Administración Central

En el archivo “web.config” de la Administración Central de SharePoint 2013 realizamos las siguientes modificaciones:

  • Añadimos la cadena de conexión (después de la etiqueta </SharePoint> y antes de <system.web>:
  <connectionStrings>
    <add connectionString="Server=c4431163311;Database=aspnetdb;Integrated Security=true" name="AspNetSqlProvider" />
  </connectionStrings>
  • Localizamos la sección <roleManager> dentro de <System.web> y la reemplazamos por el siguiente contenido:

    <roleManager defaultProvider="AspNetWindowsTokenRoleProvider" enabled="true" cacheRolesInCookie="false">
      <providers>
        <add connectionStringName="AspNetSqlProvider" applicationName="/" description="Stores and retrieves roles from SQL Server" name="SQL-RoleManager" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </providers>
    </roleManager>
  • A continuación localizamos la sección <mebership> y la configuramos de la siguiente forma:
    <membership defaultProvider="SQL-MembershipProvider">
      <providers>
        <add connectionStringName="AspNetSqlProvider" passwordAttemptWindow="5" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="true" passwordFormat="Hashed" description="Stores and Retrieves membership data from SQL Server" name="SQL-MembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </providers>
    </membership>

Archivo “web.config” del STS

Una vez que hemos modificado el web.config tanto del sito como de la Administración Central, tenemos que modificar también el archivo web.config del STS qué se encuentra en la ruta C:Program FilesCommon FilesMicrosoft SharedWeb Server Extensions15WebServicesSecurityToken:

  • Añadimos antes de la etiqueta de cierre </configuration> el string de conexión a la BD De aspnetdb.
  <connectionStrings>
    <add connectionString="Server=c4431163311;Database=aspnetdb;Integrated Security=true" name="AspNetSqlProvider" />
  </connectionStrings>
  • Añadimos una nueva entrada <system.web> dentro de la sección <Configuration> con el siguiente contenido:
  <system.web>
    <roleManager defaultProvider="c" enabled="true" cacheRolesInCookie="false">
      <providers>
        <add name="c" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
        <add connectionStringName="AspNetSqlProvider" applicationName="/" description="Stores and retrieves roles from SQL Server" name="SQL-RoleManager" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </providers>
    </roleManager>
    <membership defaultProvider="i">
      <providers>
        <add name="i" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
        <add connectionStringName="AspNetSqlProvider" passwordAttemptWindow="5" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="true" passwordFormat="Hashed" description="Stores and Retrieves membership data from SQL Server" name="SQL-MembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </providers>
    </membership>
  </system.web>

Probando la autenticación por FBA

Guardamos los cambios realizados en todos los archivos web.config y procedemos a comprobar el funcionamiento de la autenticación basada en formularios:

  • Revisamos que tanto la Administración Central de SharePoint como el sitio siguen estando operativos y no hay ningún problema debido a las modificaciones realizadas en el archivo web.config.
  • En el sitio de trabajo, elegimos como opción de autenticación “Autenticación de formularios”.
  • En la nueva página que se abre, especificamos el login y contraseña del usuario que creamos con anterioridad.
  • Accedemos de nuevo al sitio para autenticarnos por FBA y comprobamos que el usuario ya puede acceder sin problemas.
image image image

Referencias

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *