Cómo utilizar Autenticación Basada en Formularios para Autenticar Usuarios de Active Directory en MOSS 2007
Esto es algo que puede causar más de un dolor de cabeza si no se sabe hacer correctamente. De hecho, me tomó varios días y leer una serie de artículos y posts en diversos blogs antes de lograr comprender la configuración correcta. Para asegurarme de no olvidarme de los pasos que seguí, listo aquí todo lo que hice para habilitar la Autenticación Basada en Formularios para autenticar usuarios de Active Directory en MOSS 2007.
Escenario
Tienes levantado un portal SharePoint que funciona en tu Intranet y los usuarios inician sesión en dicho portal con sus cuentas de Windows (autenticación basada en Windows). Ahora te han solicitado exponer este portal para que pueda ser accedido desde el exterior de la empresa por un canal público como es el Internet. Esto convierte a tu Intranet en una Extranet.
Por su puesto podrías simplemente configurar tu router y/o firewall para permitir exponer a tu servidor SharePoint al Internet y listo, tus usuarios podrán iniciar sesión con sus cuentas Windows hacia la extranet desde fuera de la empresa. Sin embargo, es muy conocido que al hacer esto estás exponiendo tu Active Directory al exterior, lo cual trae consigo una serie de amenazas. Tus usuarios nunca deberían ver una pantalla de inicio de sesión de Windows al entrar al portal desde Internet, sino que, más bien, deben ver una página web que les solicite usuario y contraseña.
Autenticación Basada en Formularios y LDAP
La clave de esta solución radica en hacer uso del mecanismo de Autenticación Basada en Formularios de ASP.NET y un proveedor de LDAP (Lightweight Directory Access Protocol) que permita la comunicación entre los formularios y Active Directory. SharePoint está construido sobre ASP.NET, así que este mecanismo de autenticación ya es nativo en él. Así mismo, MOSS 2007 ya incorpora un proveedor de LDAP, que está listo para ser utilizado.
Implementando la Solución
Para este ejemplo voy a suponer que estamos creando un portal desde cero y lo habilitaremos para que utilice autenticación basada en formularios. En el caso de que ya tengas un portal existente en tu intranet y desees exponerlo al exterior, simplemente debes iniciar extendiendo tu portal existente, mas no creando uno nuevo.
Creación del Sitio Web
1. Navega hacia tu SharePoint Central Administration y, en el tab Application Management selecciona Create or extend Web application.
2. En Create or Extend Web Application selecciona Create a new Web Application.
3. En Create a New Web Application ingresa los detalles de tu aplicación como lo haces normalmente. Sin embargo, asegúrate de elegir Yes en Allow Anonymous, en la sección de Security Configuration. Luego dale OK para que cree la nueva aplicación Web.
4. Luego de unos minutos aparecerá la página Application Created. Allí, dale click a Create Site Collection.
5. En la página Create Site Collection llena los detalles de tu nueva colección de sitios y elige una plantilla. Para el ejemplo elegiré la plantilla Collaboration Portal. Dale click a OK para crear a colección de sitios.
6. Luego de unos minutos tu nuevo sitio estará creado, aunque no es necesario navegar hacia él todavía.
Configuración del Proveedor LDAP
1. Ubica el archivo web.config utilizado por tu SharePoint Central Administration. Para esto:
a. Abre el Internet Information Services (IIS) Manager
b. Expande el árbol de la izquierda para ver las aplicaciones Web del servidor
c. Dale click derecho a SharePoint Central Administration v3 y selecciona Open del menú contextual
d. Se abrirá una ventana del explorador de Windows con el directorio físico de la aplicación Web en el cual encontrarás el archivo web.config
2. Abre el archivo web.config en cualquier editor de texto.
3. Ubica el elemento system.web y, justo debajo de él, agrega lo siguiente:
<membership defaultProvider="LdapMembership">
<providers>
<add name="LdapMembership"
type="Microsoft.Office.Server.Security.LDAPMembershipProvider, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"
server="julio-server"
port="389"
useSSL="false"
userDNAttribute="distinguishedName"
userNameAttribute="sAMAccountName"
userContainer="CN=Users,DC=casal,DC=local"
userObjectClass="person"
userFilter="(|(ObjectCategory=group)(ObjectClass=person))"
scope="Subtree"
otherRequiredUserAttributes="sn,givenname,cn"
connectionUsername="casal\unUsuarioDeDominio"
connectionPassword="elPassword" />
</providers>
</membership>
<roleManager defaultProvider="AspNetWindowsTokenRoleProvider" enabled="true" cacheRolesInCookie="true" cookieName=".PeopleDCRole">
<providers>
<add
name="LdapRole"
type="Microsoft.Office.Server.Security.LDAPRoleProvider, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"
server="julio-server"
port="389"
useSSL="false"
groupContainer="DC=casal,DC=local"
groupNameAttribute="cn"
groupMemberAttribute="member"
userNameAttribute="sAMAccountName"
dnAttribute="distinguishedName"
groupFilter="(ObjectClass=group)"
scope="Subtree"
connectionUsername="casal\unUsuarioDeDominio"
connectionPassword="elPassword" />
</providers>
</roleManager>
Aquí, los atributos más relevantes son los siguientes:
server: Tu servidor controlador de dominio que brinda el servicio de Active Directory (AD)
port: El puerto abierto para las comunicaciones por LDAP. Típicamente es el 389.
userContainer: El contenedor, dentro de AD, de los usuarios que se autenticarán en SharePoint. En este ejemplo el contenedor a usar será Users dentro del dominio casal.local
connectionUsername: El usuario de dominio que utilizará el proveedor LDAP para conectarse a AD
connectionPassword: El password del usuario especificado para connectionUsername
4. Tal como lo hiciste para el web.config del Central Administration, ubica y abre el web.config de la aplicación Web recién creada en cualquier editor de texto.
5. Ubica el elemento system.web y, justo debajo de él, agrega lo siguiente:
<membership defaultProvider="LdapMembership">
<providers>
<add
name="LdapMembership"
type="Microsoft.Office.Server.Security.LDAPMembershipProvider, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"
server="julio-server"
port="389"
useSSL="false"
userDNAttribute="distinguishedName"
userNameAttribute="sAMAccountName"
userContainer="CN=Users,DC=casal,DC=local"
userObjectClass="person"
userFilter="(|(ObjectCategory=group)(ObjectClass=person))"
scope="Subtree"
otherRequiredUserAttributes="sn,givenname,cn"
connectionUsername="casal\unUsuarioDeDominio"
connectionPassword="elPassword" />
</providers>
</membership>
<roleManager defaultProvider="LdapRole" enabled="true" cacheRolesInCookie="true" cookieName=".PeopleDCRole">
<providers>
<add
name="LdapRole"
type="Microsoft.Office.Server.Security.LDAPRoleProvider, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C"
server="julio-server"
port="389"
useSSL="false"
groupContainer="DC=casal,DC=local"
groupNameAttribute="cn"
groupMemberAttribute="member"
userNameAttribute="sAMAccountName"
dnAttribute="distinguishedName"
groupFilter="(ObjectClass=group)"
scope="Subtree"
connectionUsername="casal\unUsuarioDeDominio"
connectionPassword="elPassword" />
</providers>
</roleManager>
6. Guarda y cierra ambos archivos web.config.
Configuración el Proveedor de Autenticación
1. De vuelta en el SharePoint Central Administration, en el tab Application Management selecciona Authentication providers.
2. En Authentication Providers, asegúrate de tener seleccionada la aplicación Web que creaste y dale click a la zona Default cuyo proveedor actual es Windows.
3. En la página Edit Authentication selecciona Forms en Authentication Type, ingresa LdapMembership en Membership provider name e ingresa LdapRole en Role manager name.
4. Dale click a Save para guardar tus cambios.
Autorizando Usuarios
1. En el SharePoint Central Administration, en el tab Application Management selecciona Policy for Web application.
2. En Policy for Web application dale click a Add Users.
3. En Add Users selecciona la zona Default y dale click a Next.
4. En la nueva pantalla, en la caja de texto Users, digita el nombre del administrador del sitio o de cualquier otro usuario al que desees dar acceso y dale click al botón Check names. Así mismo, dale los permisos adecuados en la sección Permissions y finalmente dale Finish.
Probando la Autenticación
1. Navega hacia tu nuevo sitio Web y notarás que eres redirigido hacia un página de inicio de sesión. Ingresa la credenciales del usuario que autorizaste en el paso anterior y dale click a Sign In.
2. Y listo, haz iniciado sesión utilizando Autenticación Basada en Formas en tu nuevo sitio web.
Recuerda hacer esta configuración siempre que necesites exponer un portar SharePoint al Internet para evitar las cada vez mayores amenazas que existen allá afuera.
Espero sea de utilidad,
Julio
Similar Posts
- Cómo hacer una instalación básica de SharePoint Server 2007 en Windows Server 2008
- Cómo definir un campo de solo lectura en la página de edición de una lista de SharePoint
- Entonces, ¿Qué es Windows SharePoint Services 3.0?
