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.

jueves, 28 de agosto de 2008

Documentando con Sandcastle

¿Sirve de algo esos comentarios que ponemos en el código o sirve para entretenernos con el Intellisense?

En ocasiones nos puede ser útil documentar nuestro código y distribuirlo al equipo para que todos sean conscientes de los elementos disponibles sin tener que abrir veinte proyectos.



Sandcastle nos permite crear una ayuda tipo msdn con los elementos definidos en nuestros componentes.



Para generalo nos proporcionan varias herramientas por línea de comandos, pero lo mejor es utilizar un ejemplo "SandcastleGui.exe", que nos automatiza la creación.





Seleccionamos nuestro assembly y el fichero de comentarios, el tipo de documentación y el formato.



Para generar el fichero de comentarios de nuestro componente, simplemente entramos en las propiedades del proyecto, en "Build", marcamos "Xml documentation file". Esto hará que visual studio genere un fichero xml con todos los comentarios que hayamos puesto.




Como resultado tendremos una documentación con el siguiente formato:





Si queremos crear la ayuda en ficheros tipo chm necesitaremos tener instalado “htmlhelp workshop”, que es el módulo de Microsoft para crear ficheros “chm”.