viernes, 29 de agosto de 2008

ADAMProfileProvider

Ya está disponible en codeplex una primera versión del ADAMProfileProvider. Consiste en un proveedor de ASP.NET para manejar el perfil de los usuarios alojados en un ADAM.

Hasta ahora Microsoft solo nos proporciona el SqlProfileProvider basado en SqlServer, para manejar el perfil del usuario.

Con esta primera versión podremos utilizar ADAM como repositorio de la información de los usuarios, especialmente cuando utilizamos usuarios de ADAM mediante el ActiveDirectoryMembershipProvider.

El proveedor todavía no extiende todos los métodos, de momento tenemos:

Initialize
GetPropertyValues
SetPropertyValues
GetAllProfiles

Los parámetros que admite son:

connectionStringName : Nombre de la cadena de conexión con ADAM almacenada en la sección de Connectionstrings del Web.config.
Debe tener un formato similar al siguiente: LDAP://host:389/DC=Portal,DC=COM
userName : (opcional)Nombre del usuario para conectar con ADAM. En caso de indicarse debe indicarse el parámetro "password".
password : (Opcional si no se especifica userName). Password del usuario para conectar con ADAM.
attributeMapUsername : (Opcional). Atributo del ADAM que identifica el nombre del usuario. Por defecto busca en el atributo "userPrincipalName".

Un ejemplo de configuración en el web.config:

<?xml version="1.0"?>
<configuration>

<appSettings>
<!-- ... -->
</appSettings>

<connectionStrings>
<add name="ADAMConnectionString" connectionString="LDAP://localhost:389/DC=Portal,DC=COM" />
<!-- ... -->

</connectionStrings>

<system.web>


<!-- ... -->

<profile defaultProvider="ADAMProfile" enabled="true" automaticSaveEnabled="false">
<providers>
<add connectionStringName="ADAMConnectionString"
applicationName="Portal"
name="ADAMProfile"
type="ADAMComponents.ADAMProfileProvider, ADAMProfileProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6d42579a0907e649" />
</providers>
<properties>
<add name="mail" type="System.String" />
<add name="displayName" type="System.String"/>
<add name="middleName" type="System.String"/>
<add name="telephoneNumber" type="System.String"/>
</properties>
</profile>


<!-- ... -->
</system.web>

</configuration>

Fijaros que la cadena de conexión debe contener el prefijo "LDAP", el host, el puerto y la ruta inicial.

Para poder utilizarlo hay que instalarlo antes en el GAC.

En caso de producirse algún error dejará una marca en el registro de windows y lanzará una excepción.

En breve lanzaremos:

  • AzManADAMStoreRoleProvider : un rolemanager basado en AzMan sobre ADAM y con usuarios ADAM.
  • ADAMMembershipProvider : una extensión del ActiveDirectoryMembershipProvider pero permite resetear el password.

Gracias Jorge por validar el código y tus sugerencias.

No hay comentarios: