PROJECT SERVER 2010. CONFIGURAR AUTENTICACION POR FORMULARIOS BASADA EN SQL SERVER.

Buenas,

En este post queremos explicar cómo configurar autenticación por formularios en Project Server 2010. Hace tiempo ya que hablamos acerca de  esto con nuestro querido colega Pedro Fraile, y nos preguntábamos si existiría información en castellano al respecto. Bastantes meses después, hemos sido capaces de poner todo esto en un artículo, y hacéroslo llegar…

El artículo oficial de Technet se puede encontrar aquí:

https://technet.microsoft.com/es-es/library/ee922605.aspx

También nos hemos basado en este fantástico post de nuestro colega Sriram:

https://blogs.msdn.com/b/srirame/archive/2010/06/17/10026189.aspx

 

RESUMEN DE ACCIONES A REALIZAR

01.- Creación del repositorio donde almacenemos los usuarios, roles, etc. Se trata de una base de datos SQL Server

02.- Creación de una aplicación web que use autenticación por formularios

03.- Modificación del fichero web.config de la Administración Central de SharePoint

04.- Añadir usuarios en la base de datos, usando el administrador de IIS

05.- Modificación del fichero web.config de la aplicación web

06.-Actualización del fichero web.config de la aplicación STS (Secure Token Service)

07.- Creación de colección de sitios

08.- Creación del sitio PWA

09.- Pruebas de conexión al sitio PWA recién creado con el usuario administrador

10.- Creación de usuarios en PWA

 

Por comodidad, usaré básicamente los mismo criterios que usó Sriram en su post:

Variables

Valores

Nombre del servidor SQL

SQLServer

Base de datos AspnetDB

aspnetDB

Nombre proveedor de roles

AspNetSqlRoles

Nombre de proveedor de miembros

AspNetSqlMembers

 

01.- Para crear la base de datos donde almacenemos la información de los usuarios, ejecutamos lo siguiente (cuidado con copiar /pegar , que nos puede dar algún comportamiento no esperado):

%WINDIR%\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe -S <InsertarNombreDeSQLServer> -d <InsertarNombreDeBD> -E –A mr

En mi caso he utilizado el nombre de mi servidor SQL Server, y para la base de datos he puesto “aspnetDB”

 

02.- Creamos la aplicación web que usará autenticación por formularios:

Seleccionamos “Autenticación basada en notificaciones”

 

20120919-150506-0001

20120919-150708-0001

 

 

03.- Debemos modificar el fichero web.config del sitio de la Administración Central de SharePoint, de tal modo que incluya referencias a:

  • People Picker
  • Miembros / Roles
  • Conexión SQL

La mejor manera de localizar este fichero es irnos al administrador de IIS, seleccionar el sitio web, botón derecho y pulsar sobre “Explorar”. Se recomienda hacer un backup de este fichero antes de modificarlo:

Las partes en negrita deben añadirse al fichero original, y las partes en gris son donde los valores de las variables deben ser actualizadas

 

</SafeControls>

<PeoplePickerWildcards>

<clear />

<add key="AspNetSqlMembers" value="%" />

</PeoplePickerWildcards>

(…)

<sessionState mode="InProc" timeout="20" cookieless="UseCookies" />

<roleManager enabled="true" cacheRolesInCookie="false" cookieName=".ASPXROLES" cookieTimeout="30" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieProtection="All"

defaultProvider="AspNetWindowsTokenRoleProvider" createPersistentCookie="false" maxCachedResults="25">

<providers>

<clear />

<add connectionStringName="SqlConn"

applicationName="/"

name="AspNetSqlRoles"

type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

<add applicationName="/"

name="AspNetWindowsTokenRoleProvider"

type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

</providers>

</roleManager>

<membership defaultProvider="AspNetSqlMembers" userIsOnlineTimeWindow="15" hashAlgorithmType="">

<providers>

<clear />

<add connectionStringName="SqlConn"

enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" passwordAttemptWindow="10"

applicationName="/"

requiresUniqueEmail="false" passwordFormat="Hashed"

name="AspNetSqlMembers"

type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

</providers>

</membership>

</system.web>

(…)

</appSettings>

<connectionStrings>

<clear />

<!-- FBA Claims Auth-->

<add name="SqlConn" connectionString="data source= SQLServer;Integrated Security=SSPI;Initial Catalog=aspnetdb" providerName="System.Data.SqlClient" />

<!-- FBA Claims Auth-->

</connectionStrings>

</configuration>

04.- Creamos usuarios en IIS para que se popule la información en ASPNETDB que hemos creado antes

a) Abrimos el Administrador de IIS

b) Seleccionamos el Default Web Site, y nos vamos a Cadenas de Conexión:

20120919-115539-0001

c) Pinchamos sobre “LocalSqlServer”, para modificar la cadena de conexión, y que apunte a la base de datos que generamos anteriormente:

20120919-115941-0001

d) Pinchamos en “Aceptar”

e) Volvemos al Default Web Site, y pulsamos en Roles de .NET

20120919-125808-0001

y lo habilitamos, pinchando en “Habilitar”:

20120919-125925-0001

f) Ahora estamos en disposicíón de pinchar sobre “Agregar”:

20120919-142151-0001

Y creamos unos cuantos roles. En mi caso, he creado los roles “Admins” y “Users”

g) Volvemos a la página principal del Default Web site, y pinchamos en “Usuarios de .NET”. Luego le damos a “Agregar”, para crear usuarios en aspnetDB:

20120919-142808-0001 20120919-142833-0001

05.- Modificación del fichero web.config para la aplicación web que hemos generado antes. Nos vamos al administrador de IIS, seleccionamos el sitio que hemos creado, y le damos a explorar (recomendamos hacer una copia antes del web.config)

Tenemos que tener en cuenta modificaciones para :

  • People Picker
  • Miembros / Roles
  • Conexión SQL

</SafeControls>

<PeoplePickerWildcards>

<clear />

<add key="AspNetSqlMembers" value="%" />

</PeoplePickerWildcards>

(…)

<machineKey validationKey (…)/>

<roleManager cacheRolesInCookie="false" cookieName=".ASPXROLES" cookiePath="/" cookieProtection="All" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieTimeout="30" createPersistentCookie="false" defaultProvider="c" enabled="true" maxCachedResults="25">

<providers>

<clear />

<add name="c" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />

<add connectionStringName="SqlConn" applicationName="/" name="AspNetSqlRoles" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

</providers>

</roleManager>

<membership defaultProvider="i" hashAlgorithmType="" userIsOnlineTimeWindow="15">

<providers>

<clear />

<add name="i" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />

<add connectionStringName="SqlConn" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" passwordAttemptWindow="10" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" name="AspNetSqlMembers" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

</providers>

</membership>

(…)

</microsoft.identityModel>

<connectionStrings>

<clear />

<!-- FBA Claims Auth-->

<add name="SqlConn" connectionString="data source=SQLServer\instance1;Integrated Security=SSPI;Initial Catalog=aspnetdb" providerName="System.Data.SqlClient" />

<!-- FBA Claims Auth-->

</connectionStrings>

</configuration>

 

6) Modificación del fichero web.config del “SecurityTokenServiceApplication”, la cual cuelga de “SharePoint Web Services”

20120919-151428-0001

Tenemos que tener en cuenta dos cosas:

· Añadir las referencias de los miembros / roles (AspNetSqlRoles, AspNetSqlMembers)

· Añadir la cadena de conexión SQL

Después de :

</system.serviceModel>

añadimos lo siguiente:

<connectionStrings>

<clear />

<!-- FBA Claims Auth-->

<add name="SqlConn" connectionString="data source=SQLServer;Integrated Security=SSPI;Initial Catalog=aspnetDB"

providerName="System.Data.SqlClient" />

<!-- FBA Claims Auth-->

</connectionStrings>

<system.web>

  <membership defaultProvider="AspNetSqlMembers">

    <providers>

      <add connectionStringName="SqlConn"

       enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" passwordAttemptWindow="10"

       requiresUniqueEmail="false" passwordFormat="Hashed"

       applicationName="/"

       name="AspNetSqlMembers"

       type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

    </providers>

  </membership>

  <roleManager enabled="true">

    <providers>

    <add connectionStringName="SqlConn"

       applicationName="/"

       name="AspNetSqlRoles"

       type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />

    </providers>

  </roleManager>

  </system.web>

07.- Creación de una colección de sitios

a) Vamos a Administración Central \ Crear colecciones de sitios, y nos aseguramos que está seleccionada la que hemos creado para la autenticación por formularios

20120828-134213-0001

 

08.- Creación del sitio PWA en la aplicación web que hemos generado para que se autenticara por formularios

Para esto, simplemente le debemos decir que genere un sitio PWA en la aplicación web generada anteriormente (la que hemos indicado fuera en el puerto 81.)

09.- Luego nos conectamos con la cuenta de Windows bajo la hemos creado el sitio PWA, y confirmamos que, efectivamente, podemos conectarnos correctamente.

10.- Una vez llevado a cabo este último paso, estamos en condiciones de ir a PWA \ Configuración del servidor \ Administrar usuarios, y crear nuevos usuarios, apuntando a los que generamos en el punto 04

 

 

Espero os resulte de ayuda, y os haya parecido interesante.

 

Muchas gracias, buen fin de semana

 

Jorge Puig