Es muy común disponer de autenticaciones sobre MOSS o WSS3 contra ADAM’s o distintas ramas de un dominio AD. En lugar de utilizar un desarrollo a medida utilizaremos la infraestructura de proveedores de Sharepoint.
Security Provider contra un ADAM
Active Directory Application Mode es una herramienta muy utilizada en proyectos en los que tenemos un repositorio de usuarios pero independiente del dominio.
Crearemos una instancia de ADAM
Podremos bajar el instalador de la página de Microsoft.
Creamos una instancia del ADAM, indicamos el nombre y el puerto de acceso.
Indicamos la raiz de nuestro ADAM.
El usuario del servicio sobre el que se ejecutará el ADAM y el usuario administrador
Indicamos la plantilla MS-user.LDF para poder crear usuarios.
Al finalizar, conectamos con la consola de ADAM y crearemos nuestra jerarquía y usuarios necesaria. Al crear el usuario, tendremos que desbloquearlos indicando el valor FALSE en el atributo msDS-UserAccountDisabled y estableceremos la password del usuario. En los atributos del usuario editaremos el campo «userPrincipalName» con el nombre de nuestro usuario. Este campo será el que utilicemos para realizar la búsqueda.
Por último indicaremos al ADAM que nuestro usuario tendrá permisos de administración para que nos podamos conectar desde fuera.
Iremos CN=Roles dentro en CN=Administrators y en la propiedad «member» añadiremos nuestro usuario del ADAM.
Configuración del Web.Config
Una vez creado el ADAM tendremos que indicar a nuestra WebApplication que utilice el provider adecuado para autentificar los usuarios.
Para ello seleccionaremos la opción de «Proveedores de autenticación» de la consola de administración central, seleccionaremos la zona para la que queremos utilizar el provider y elegiremos autenticación por formulario y el nombre del provider. Al aceptar los cambios, nos modificará el Web.Config del WebApplication seleccionado.
A continuación daremos de alta el provider en el web.config del WebApplication seleccionado y en el WebApplication de la administración central. El motivo de darlo de alta en la administración central será para poder indicar el usuario administrador de nuestra colección. Si no hacemos esto, cuando intentemos acceder nos dará un error que no será capaz de encontrar el usuario administrador, ya que la colección tendrá asignado el usuario administrador del dominio y no el de nuestro provider.
Tener en cuenta que una vez activemos el provider para una zona todas las validaciones de esa zona las realizará con ese provider. Así si modificamos el provider para la zona predeterminada por defecto realizará la autenticación con ese provider y no con contra el dominio.
Autenticación de WSS3 con ADAM
Si navegáis por internet, vereis que todos los ejemplos de provider contra un ADAM son con MOSS. Esto es porque WSS3 no implementa un provider específico para LDAP. Pero si para una estructura similar a un AD.
Utilizaremos entonces «System.Web.Security.ActiveDirectoryMembershipProvider».
En nuestro caso hemos añadido dentro de system.web:
<membership >
<providers>
<add connectionStringName=»ADService» connectionUsername=»CN=admin,DC=MiRaiz,DC=COM«
connectionPassword=»MiPassword» connectionProtection=»None«
description=»Some description.» enableSearchMethods=»true»
attributeMapUsername=»userPrincipalName«
name=»MiADAMProvider» type=»System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a» />
</providers>
</membership>
Esta configuración la tendremos que indicar en el web.config del web application de la configuración central y de nuestra applicationweb que utilizará el provider. En este último caso si queremos que se utilice el provider para la zona por defecto tendremos que añadir :
<membership defaultProvider=»MiADAMProvider»>
<providers>
<add connectionStringName=»ADService» connectionUsername=»CN=admin,DC=MiRaiz,DC=COM»
connectionPassword=»MiPassword» connectionProtection=»None»
description=»Some description.» enableSearchMethods=»true»
attributeMapUsername=»userPrincipalName»
name=»MiADAMProvider» type=»System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a» />
</providers>
</membership>
Una vez guardad la configuración no hará falta hacer un iisreset. Iremos a la página de administradores de colecciones escribiremos nuestro usuario y pulsaremos en el People Picker.
Si intentamos buscar el usuario desde la funcionalidad de «búsqueda de personas» del people picker, no nos devolverá nada, ya que tendremos que añadir lo siguiente:
http://blogs.msdn.com/dglover/articles/395594.aspx#395595
<PeoplePickerWildcards>
<clear />
<add key=»MiADAMProvider» value=»*» />
</PeoplePickerWildcards>
Una vez realizado los cambios ya podremos utilizar nuestro ActiveDirectoryMembershipProvideren Wss3!!!.
Fijaros que en las credenciales de conexión con el LDAP hemos utilizado un usuario del propio ADAM. Yo no he conseguido conectar con usuario del AD, he tenido muchísimos problemas, al final creo que es un problema de envío de contraseñas al conectar con el ADAM.
Autenticación de MOSS con ADAM
Sobre MOSS utilizaremos «Microsoft.Office.Server.Security.LDAPMembershipProvider«.
En nuestro ejemplo:
<membership defaultProvider=»MiADAMProvider»>
<providers>
<add name=»MiADAMProvider» type=»Microsoft.Office.Server.Security.LDAPMembershipProvider, Microsoft.Office.Server, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71E9BCE111E9429C»
server=»testpcserver» port=»50010″ useSSL=»false» userDNAttribute=»displayName» userNameAttribute=»CN»
userContainer=»DC=MiRaiz,DC=com» userFilter=»|(ObjectClass=user)(ObjectClass=organizationalUnit)»
userObjectClass=»user» scope=»Subtree» otherRequiredUserAttributes=»sn,givenname,cn» />
</providers>
</membership>
Enlaces que me ayudaron
http://msdn2.microsoft.com/en-us/library/ms998360.aspx
http://blogs.msdn.com/dansellers/archive/2005/10/11/479941.aspx
http://msdn.microsoft.com/en-us/library/aa479048.aspx
http://msdn.microsoft.com/en-us/library/system.web.security.activedirectorymembershipprovider.aspx
http://msdn.microsoft.com/en-us/library/system.web.security.activedirectorymembershipprovider.aspx