Una cuestión muy celebrada de ASP.NET 2.0 es que no es necesario "currarse" desde cero toda la funcionalidad de autenticación, autorización, etc... ya que gracias a las nuevas API basadas en proveedores para Membership y Roles junto con los controles de Login (que incluyen interfaces de usuario para casi todo lo que necesitemos desde autentiación hasta creación de usuarios, etc..) incorporados a la versión 2.0 apenas será necesario escribir código nunca.
El caso es que desde Visual Studio todo es muy fácil: basta con ir al menú "Sitio web·Administración de sitio Web" y nos aparece el flamante diálogo que vemos en la figura:
(pulsa para ver en tamaño real)
El caso es que con él configuramos todos los aspectos de nuestra aplicación relacionados con la seguridad: desde los proveedores que usaremos, pasando por los permisos de las carpetas y llegando a la definición de los primeros usuarios. Todo ello se guarda por defecto en una base de datos SQL Server creada para la ocasión y que tiene una estructura predefinida y unos procedimientos almacenados que usan Membership y Roles, y que podemos reproducir gracias a la herramienta de línea de comandos aspnet_regsql.exe.
Bien, el caso es que una vez terminada la aplicaicón la ponemos en un servidor IIS de verdad para que entre en producción y estamos la mar de contentos con nuestros usuarios. Pero, de repente, nos damos cuenta de que necesitamos más usuarios, de que necesitamos editar los que ya hay o cambiar cualquier otro aspecto de nuestra seguridad y la herramienta de configuración que tenemos en Visual Studio no está. ha desparecido y no podemos usarla en producción. :-((( De hecho si miramos por los foros de Internet y de Microsoft vemos que todo el mundo nos dice: "no hay nada que hacer", "constrúyete tu propia gestión de usuarios" o "menuda chapuza han hecho".
Bien, lo cierto es que la cosa no es tan terrible y realmente sí podremos hacer uso de la herramienta sin problemas. Veamos como...
Lo que mucha gente no sabe es que esta herramienta está incluida junto con su código fuente completo ¡¡en la instalación de las bibliotecas de tiempo de ejecución de ASP.NET 2.0!!. Es decir, está incluida en todos los equipos capaces de ejecutar ASP.NET 2.0, no sólo en los que tienen Visual Studio 2005 instalado. Para encontrarla basta con ir a la siguiente ruta:
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles
Sabiendo esto sólo hay que hacer un par de cosas y saber trucarla para poder sacarle partido en cualquier aplicación, incluso en las que estén en producción.
Vete a IIS y en el servidor virtual de tu aplicación o en cualquier otro crea un directorio virtual que apunte a la ruta anterior. ¡OJO! es muy importante que esté en un directorio virtual y no directamente en el raíz de un servidor virtual por la forma en la que está construida la aplicación, así que crea uno con el nombre, por ejemplo, de "aspnetwebconfig".
En la pestaña de seguridad del directorio virtual deberás permitir la autenticación de usuarios ya que sólo con la anónima no podras hacerla funcionar. Pues deshabilitar la anónima (no se usa,así que da igual pero mejor quítala) y activa la autenticación integrada de Windows.
Muy importante: no olvides indicar que quieres usar ASP.NET 2.0 para este directorio virtual o recibirás errores puesto que por defecto se emplea ASP.NET 1.1. Usa la pestaña ASP.NET de tu IIS para conseguirlo:
Bien, una vez creado el directorio virtual de administración podrás administrar cualquier aplicación Web de ASP.NET 2.0 que tengas en esa máquina llamando a la página por defecto con dos parámetros especiales, de la siguiente manera (ejemplo):
http://localhost/aspnetwebconfig/default.aspx?applicationPhysicalPath=D:\Logistia\Codigo\LogistiaWeb\&applicationUrl=/LogistiaWeb
Fíjate que los dos parámetros son los siguientes:
1) applicationPhysicalPath: La ruta física en el disco a la aplicación que quieres administrar. La herramienta de administración se encargará de leer su web.config y conectarse a las bases de datos pertinentes y ver los permisos de cada carpeta, etc...
2) applicationUrl: la ruta virtual base de tu aplicación, normalmente el nombre de la carpeta virtual que usas para acceder a ella. Puede estar en blanco.
Una última cosa importante: este sitio web de administración sólo funcionará en local, no permitiendo el acceso desde URLs remotas por cuestiones de seguridad. Pero te permitirá manejar cómodamente los usuarios, roles, parámetros de personalizaicón, seguridad, etc...