Sharepoint: Como autenticar por Formularios(es-ES)
Muchas veces nos encontramos que tenemos que publicar el Sharepoint en forma Publica y no queremos crear cuentas de Active Directory por cada uno de ellos. Para eso vamos a crear una servicio de autenticación por Formularios. Recomiendo que el SQL no este en el mismo servidor para evitar cualquier ataque extra.
Vamos a usar un par de herramientas como por ejemplo las Web parts de FBA que desarrollo Steve Peschka ( FBA Configuration Manager for SharePoint 2013 ) y por otro lado vamos a usar las Web part de Chris Coulson ( SharePoint 2013 FBA Pack ) para lo que es password reset.
Vamos a crear primero la base de datos donde van a estar almacenados los perfiles de todos los usuarios que creamos.
Ingresamos al "SQL Server Magmant Studio" y nos conectamos con la instancia que querramos. En mi caso es la que viene por defecto.
https://stucker2016.files.wordpress.com/2016/05/sql-connection.png
Luego expandimos las Base de Datos. Una ves que vemos el árbol se posicionan donde dice Database y haciendo botón derecho seleccionan el que dice New Database...
https://stucker2016.files.wordpress.com/2016/05/new-database.png
Ponemos como nombre Externos que va a ser el nombre de la base de datos.
https://stucker2016.files.wordpress.com/2016/05/create-database.png?w=680
Una ves que tenemos la base de datos vamos al server que tiene el Sharepoint. y abrimos ejecutamos el comando aspnet_regsql.exe que se encuentra en
%Windows%\Microsoft.NET\Framework64\v4.0.30319
esto le abrirá una Wizzard para poder crear las tablas necesarias para poder tener el proveedor de asp.net para suscripciones y roles.
https://stucker2016.files.wordpress.com/2016/05/aspnetw1.png
Apretamos Next >
https://stucker2016.files.wordpress.com/2016/05/aspnetw2.png
Seleccionamos Configire SQL Server for aplication services y apretamos Next>
https://stucker2016.files.wordpress.com/2016/05/aspnetw3.png
En el desplegable que dice Database Seleccionamos la base de Datos Externos y apretamos Next>
https://stucker2016.files.wordpress.com/2016/05/aspnetw4.png
Apretamos Next>
https://stucker2016.files.wordpress.com/2016/05/aspnetw5.png
Apretamos Finish.
Si quieren ver el resultado de esto. Ingresen al "SQL Server Magmant Studio" refresquen la conexión, expandan las base de datos, expandan la base de datos externos y expandan Tables. Van a ver que se generaron muchas tablas que empiezan con el subfijo aspnet estas son del sistema de autenticación que vamos a usar.
https://stucker2016.files.wordpress.com/2016/05/externos-expandidos.png
Ya que tenemos las bases creadas vamos a configurar las conexiones para que Sharepoint las reconozca.
Nos dirigimos a la carpeta Config que tenemos en la carpeta donde ejecutamos el comando anterior y buscamos el archivo Machine.config y lo editamos en mi caso voy a usar el Notepad++ una buena alternativa para editar archivos grandes o de programación. Lo pueden conseguir aquí
una ves que tenemos abiertos el Machine.config buscamos las linea <connectionStrings>
y agregamos abajo el siguiente codigo.
<add name="SubscripcionesSQL" connectionString="server=.;database=externos;Trusted_Connection=true" />
https://stucker2016.files.wordpress.com/2016/05/connectionstring.png
En donde dice server pongan el server\instancia en caso de no ser el local como es mi caso. y donde dice database ponen el nombre de la base de datos que le dieron en el paso anterior.
Ahora busquen la linea <membership> y abajo de <providers> pongan lo siguiente:
<add connectionStringName="SubscripcionesSQL" applicationName="/"
name="SQL_Suscripciones"
type="System.Web.Security.SqlMembershipProvider, System.Web,
Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
https://stucker2016.files.wordpress.com/2016/05/membresia.png
Vamos a agregar el proveedor de roles para eso busquen la linea <roleManager> y abajo de <providers> pongan lo siguiente:
<add connectionStringName="SubscripcionesSQL" applicationName="/"
name="SQL_Roles" type="System.Web.Security.SqlRoleProvider, System.Web,
Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
https://stucker2016.files.wordpress.com/2016/05/roles.png?w=680
Ahora vamos a modificar el web.config del servicio SecurityTokenService para eso abran el IIS y expandan Sites > Sharepoint Web Services > SecurityTokenServiceApplication. Una ves que lo hallamos localizado hagan boton derecho > explorar
https://stucker2016.files.wordpress.com/2016/05/sts.png
Repetimos el paso anterior de agregar la conecctionString, el membership y el RoleMembers para eso busquen la linea <connectionManagement> y arriba de esa linea pongan lo siguiente:
<connectionStrings>
<add name="SubscripcionesSQL" connectionString="server=.;database=externos;Trusted_Connection=true" />
</connectionStrings>
<system.web>
<membership>
<providers>
<add connectionStringName="SubscripcionesSQL" applicationName="/" name="SQL_Suscripciones" type="System.Web.Security.SqlMembershipProvider, System.Web,Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
<roleManager>
<providers>
<add connectionStringName="SubscripcionesSQL" applicationName="/" name="SQL_Roles" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</providers>
</roleManager>
</system.web>
<system.net>
Nota: Los pasos anteriores de modificar el Web.config y el machine.config se van a tener que repetir en todos los servidores de la granja que sea de sharepoint.
Ahora bien ya tenemos el sql listo solo nos falta vincular a nuestro Sharepoint con esto. Volvamos a la Consola "Administración central de Sharepoint 2013". Una ves dentro vayamos a Administración de aplicaciones > Administrar aplicaciones web
https://stucker2016.files.wordpress.com/2016/04/administracion-aplicaciones.png
Una ves aquí vamos a crear nuestra aplicación web para eso apretamos el que dice Nueva.
https://stucker2016.files.wordpress.com/2016/05/nueva.png
Les va a abrir un popup para que le incorporemos la información que deseamos.
***Nota: Pueden hacer una conexión interna que se autentique por NTLM y otra por Windows form para eso vamos a tener que crear una aplicación web con un hostheader interno y NTLM y extender la misma a la externa con Windows Forms. ***
Vamos a modificar el puerto para que me conteste al 81, el hostheader lo vamos a dejar igual y le agregamos el tipo FBA. Los datos que le vamos a dar al FBA son
Nombre del proveedor de suscripciones de ASP.NET = SQL_Suscripciones
Nombre del administrador de roles de ASP.NET = SQL_Roles
https://stucker2016.files.wordpress.com/2016/05/aspmembresia.png
y le damos Aceptar
Les aparecerá el siguiente mensaje. Donde vamos a seleccionar "Crear colección de sitios"
https://stucker2016.files.wordpress.com/2016/05/fin-creacion.png
Nos aparecerá las opciones para crear la colección de sitios. Vamos a crear un ftp mas piola, en el titulo pongamos Archivos Publicos. Y para el tipo vamos a empresa y seleccionamos el que dice Centro de Documentación.
https://stucker2016.files.wordpress.com/2016/05/centro-de-documentacic3b3n.png
Seleccionamos el usuario que va a administrar la colección de sitios, este usuario tiene que ser del dominio y apretamos Aceptar.
Se va a crear el sitio y la colección de sitios.
https://stucker2016.files.wordpress.com/2016/05/fin-creacion-sitio.png
Bueno ahora aprieten Aceptar y vamos a implementar las Web part para administrar los usuarios.
Para eso descomprimimos el archivo SharePoint2013FBAPack.1.3.5.zip y vamos a encontrarnos con PowerShell que dice deploy ejecutenlo. Esto va a demorar unos segundos y le va a implementar la solución en todas las Web Applications. En caso de que no quieran que sea en todas pueden ejecutar los comandos add-spsolution e install-spsolution
Ahora bien vamos al sitio en cuestión y nos autenticamos por Windows, ya que todavía no tenemos definidos ningún usuario en el sitio. Una vez dentro tenemos que entrar a la configuración del sitio, para eso vamos a la tuerquita > configuración del sitio.
https://stucker2016.files.wordpress.com/2016/05/configuraciondel-sitio.png
en el grupo Administración de la colección de sitios apreten en Características de la colección de sitios
https://stucker2016.files.wordpress.com/2016/05/caracteristicas-de-la-coleccion-de-sitios.png
Una ves dentro busquen el que dice Forms based Authentication Managment y le dan activar
https://stucker2016.files.wordpress.com/2016/05/forms-based.png?w=680
una ves que este activo vuelvan a la tuerquita > configuración del sitio
https://stucker2016.files.wordpress.com/2016/05/configuraciondel-sitio.png
Y van a ver que se le agregaron varios items en el grupo Usuarios y Permisos.
https://stucker2016.files.wordpress.com/2016/05/fba.png
Con el FBA User Management van a poder crear los usuarios.