Compartir a través de


Usuarios y roles en el sitio web de producción (VB)

de Scott Mitchell

Nota:

Desde que se escribió este artículo, los proveedores de ASP.NET Pertenencia se han reemplazado por ASP.NET Identity. Se recomienda encarecidamente actualizar las aplicaciones para usar la plataforma ASP.NET Identity en lugar de los proveedores de pertenencia destacados en el momento en que se escribió este artículo. ASP.NET Identity tiene una serie de ventajas sobre el sistema de pertenencia ASP.NET, incluido :

  • Mejor rendimiento
  • Extensibilidad y capacidad de prueba mejoradas
  • Compatibilidad con OAuth, OpenID Connect y autenticación en dos fases
  • Compatibilidad con identidades basadas en declaraciones
  • Mejor interoperabilidad con ASP.Net Core

La herramienta de administración de sitios web (WSAT) de ASP.NET proporciona una interfaz de usuario basada en web para configurar la configuración de pertenencia y roles y para crear, editar y eliminar usuarios y roles. Desafortunadamente, el WSAT solo funciona cuando se visita desde localhost, lo que significa que no puede acceder a la herramienta de administración del sitio web de producción a través del explorador. La buena noticia es que hay soluciones alternativas que permiten administrar usuarios y roles en producción. En este tutorial se examinan estas soluciones alternativas y otras.

Introducción

ASP.NET 2.0 introdujo una serie de servicios de aplicación, que son un conjunto de servicios de bloques de creación que puede agregar a la aplicación web. Agregamos los servicios de Membresía y Roles al sitio web Opiniones de Libros en el tutorial Configuración de un sitio web que usa servicios de aplicaciones. El servicio de pertenencia facilita la creación y administración de cuentas de usuario; El servicio Roles ofrece una API para clasificar usuarios en grupos. El sitio opiniones de libros tiene tres cuentas de usuario - Scott, Jisun y Alice - y un solo rol, Admin, con Scott y Jisun en el rol de administrador.

Los servicios de aplicación de ASP.NET no están vinculados a una implementación específica. En su lugar, se indica a los servicios de aplicación que usen un proveedor determinado y ese proveedor implementa el servicio mediante una tecnología determinada. Hemos configurado la aplicación web Opiniones de Libros para usar los proveedores SqlMembershipProvider y SqlRoleProvider para los servicios de membresía y roles. Estos dos proveedores almacenan información de roles y cuentas de usuario en una base de datos de SQL Server y son los proveedores más usados para las aplicaciones web basadas en Internet hospedadas en una empresa de hospedaje web.

Un desafío común para los desarrolladores que usan los servicios de pertenencia y roles es administrar los usuarios y roles en el entorno de producción. ¿Cómo elimina una cuenta de usuario del sitio web de producción, agrega un nuevo rol o agrega un usuario existente a un rol existente? En este tutorial se exploran diferentes técnicas para administrar usuarios y roles en el sitio web de producción.

Uso de la herramienta de administración de sitios web de ASP.NET

ASP.NET incluye una herramienta de administración de sitios web (WSAT) que facilita la creación y administración de cuentas y roles de usuario y especificar reglas de autorización basadas en roles y usuarios. Para usar WSAT, haga clic en el icono configuración de ASP.NET en el Explorador de soluciones, o vaya al menú Sitio web o Proyecto y elija la opción Configuración de ASP.NET. Cualquier enfoque inicia un explorador web y lo apunta al WSAT en una dirección como: http://localhost:portNumber/asp.netwebadminfiles/default.aspx?applicationPhysicalPath=pathToApplication

El WSAT se divide en tres secciones:

  • Seguridad: administre usuarios, roles y reglas de autorización.
  • ApplicationConfiguration : administre la <configuración de appSettings> y SMTP desde aquí. También puede desconectar la aplicación y administrar la configuración de depuración y seguimiento desde aquí, así como especificar la página de error personalizada predeterminada.
  • ProviderConfiguration : configure los proveedores usados por los servicios de aplicación.

La sección Seguridad (que se muestra en la figura 1) incluye vínculos para crear nuevos usuarios, administrar usuarios, crear y administrar roles y crear y administrar reglas de acceso. Desde aquí puede agregar un nuevo rol al sistema, eliminar un usuario existente o agregar o quitar roles de una cuenta de usuario determinada.

Captura de pantalla de la herramienta de administración de A S P . N E T para crear y administrar usuarios, roles y normas de acceso.

Figura 1: La sección Seguridad de WSAT incluye opciones para administrar usuarios y roles
(Haga clic para ver la imagen de tamaño completo)

Desafortunadamente, el WSAT solo es accesible localmente. No puede visitar el WSAT en su sitio web de producción remota; si visita www.yoursite.com/asp.netwebadminfiles/default.aspx recibe una respuesta 404 No encontrada. El código que impulsa WSAT usa las Membership clases y Roles en .NET Framework para crear, editar y eliminar usuarios y roles. Estas clases consultan la información de configuración de la aplicación web para determinar qué proveedor usar; en el tutorial Configuración de un sitio web que usa servicios de aplicaciones previa, configuramos el sitio web de opiniones de libros para usar los proveedores SqlMembershipProvider y SqlRoleProvider. Esto implicaba agregar <membership> y <roleManager> secciones a Web.config.

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

  <connectionStrings configSource="ConfigSections\databaseConnectionStrings.config" />

  <system.web>
  ...

  <membership defaultProvider="ReviewMembership">
  <providers>
  <clear />

  <add type="System.Web.Security.SqlMembershipProvider" 
  name="ReviewMembership" 
  connectionStringName="ReviewsConnectionString" 
  applicationName="BookReviews" />
  </providers>
  </membership>

  <roleManager enabled="true" defaultProvider="ReviewRole">
  <providers>
  <clear />

  <add type="System.Web.Security.SqlRoleProvider" 
  name="ReviewRole" 
  connectionStringName="ReviewsConnectionString" 
  applicationName="BookReviews" />
  </providers>
  </roleManager>
  </system.web>

  ...
</configuration>

Tenga en cuenta que la sección <membership> y <roleManager> hacen referencia al proveedor SqlMembershipProvider y SqlRoleProvider en su atributo type, respectivamente. Estos proveedores almacenan la información de usuario y rol en una base de datos de SQL Server especificada. El atributo connectionStringName especifica la base de datos usada por estos proveedores, ReviewsConnectionString, que se define en el archivo ~/ConfigSections/databaseConnectionStrings.config. Recuerde que el databaseConnectionStrings.config archivo del entorno de desarrollo contiene la cadena de conexión a la base de datos de desarrollo, mientras que el databaseConnectionStrings.config archivo en producción contiene la cadena de conexión a la base de datos de producción.

En pocas palabras, WSAT debe ser accedido localmente mediante el entorno de desarrollo, y funciona con la información de usuario y rol de la base de datos especificada en el databaseConnectionStrings.config archivo. Por lo tanto, si cambiamos la información de la cadena de conexión en el databaseConnectionStrings.config archivo en el entorno de desarrollo, podemos usar WSAT localmente para administrar usuarios y roles en el entorno de producción.

Para ilustrar esta funcionalidad, abra el databaseConnectionStrings.config archivo en Visual Studio en el entorno de desarrollo y reemplace la cadena de conexión de la base de datos de desarrollo por la cadena de conexión de la base de datos de producción. A continuación, inicie WSAT, vaya a la pestaña Seguridad y agregue un nuevo usuario llamado Sam. En la figura 2 se muestra la pantalla WSAT al crear esta cuenta.

Captura de pantalla de la herramienta de administración de sitios web de ASP.NET para crear un nuevo usuario en el entorno de producción.

Figura 2: Crear un nuevo usuario denominado Sam en el entorno de producción
(Haga clic para ver la imagen de tamaño completo)

Dado que cambiamos la cadena de conexión de databaseConnectionStrings.config para que apunte al servidor de base de datos de producción, Sam se agregó como usuario en el entorno de producción. Para comprobarlo, cambie la cadena de conexión en el archivo databaseConnectionStrings.config a la base de datos de desarrollo y, a continuación, visite la página Login.aspx en el entorno de desarrollo. Intente iniciar sesión como Sam (vea la figura 3).

Captura de pantalla de la pantalla de inicio de sesión en la que el nuevo usuario creado no puede iniciar sesión en el entorno de desarrollo.

Figura 3: No se puede iniciar sesión como Sam en el entorno de desarrollo
(Haga clic para ver la imagen de tamaño completo)

No puede iniciar sesión como Sam en el entorno de desarrollo porque la información de la cuenta de usuario no existe en la base de datos local. En su lugar, se agregó a la base de datos de producción. Para comprobarlo, vea el contenido de la aspnet_Users tabla en las bases de datos de desarrollo y producción. En el entorno de desarrollo solo debe haber tres registros para los usuarios Scott, Jisun y Alice. Sin embargo, la aspnet_Users tabla de la base de datos de producción tiene cuatro registros: Scott, Jisun, Alice y Sam. Por lo tanto, Sam puede iniciar sesión a través del sitio web en producción, pero no a través del entorno de desarrollo.

Captura de pantalla de la pantalla de inicio de sesión donde el nuevo usuario creado puede iniciar sesión en el sitio web de producción.

Figura 4: Sam puede iniciar sesión en el sitio web de producción
(Haga clic para ver la imagen de tamaño completo)

Nota:

No olvide cambiar la cadena de conexión en el archivo databaseConnectionStrings.config a la cadena de conexión de la base de datos de desarrollo cuando haya terminado de trabajar con el WSAT; de lo contrario, trabajaría con datos de producción al probar el sitio en el entorno de desarrollo. Tenga en cuenta también que, aunque la técnica que acabamos de analizar nos permite usar el WSAT para administrar de forma remota usuarios y roles, los cambios en cualquiera de las demás opciones de configuración de WSAT (reglas de acceso, configuración SMTP, configuración de depuración y seguimiento, etc.) modifican el archivo Web.config. Por lo tanto, los cambios realizados en la configuración se aplican al entorno de desarrollo y no al entorno de producción.

Creación de páginas web de administración de roles y usuarios personalizados

WSAT proporciona un sistema listo para usar para administrar usuarios y roles, pero solo se puede iniciar localmente y requiere realizar cambios en la cadena de conexión para gestionar los usuarios y roles en producción. La mayoría de los sitios web que admiten cuentas de usuario también incluyen una serie de páginas web de administración de usuarios y roles que permiten a los administradores administrar usuarios y roles desde páginas dentro del sitio. Estas páginas de administración basadas en web facilitan mucho la administración de usuarios y roles y son esenciales para los sitios en los que puede haber muchos administradores o administradores que no tengan acceso a o al fondo técnico para usar Visual Studio para iniciar el WSAT.

ASP.NET incluye una serie de controles web integrados relacionados con el inicio de sesión que hacen que la implementación de muchas de estas páginas web administrativas sea tan fácil como arrastrar y colocar. Por ejemplo, puede crear una página para que los administradores creen una nueva cuenta de usuario arrastrando el control CreateUserWizard a la página y estableciendo algunas propiedades. De hecho, la página para crear usuarios en el WSAT que se muestra en la figura 2 usa el mismo control CreateUserWizard que puede agregar a las páginas. Además, las funcionalidades de los servicios de pertenencia y roles están disponibles mediante programación a través de las Membership clases y Roles en .NET Framework. Con estas clases puede escribir código para crear, editar y eliminar usuarios y roles, así como para agregar o quitar usuarios a roles, para determinar qué usuarios están en qué roles y para realizar otras tareas relacionadas con el usuario y el rol.

En el tutorial Configuración de un sitio web que usa servicios de aplicaciones he agregado una página a la Admin carpeta denominada .CreateAccount.aspx Esta página permite a un administrador agregar una nueva cuenta de usuario al sitio y especificar si el usuario recién creado está en el rol Administrador (consulte la figura 5).

Captura de pantalla de los administradores que pueden crear nuevas cuentas de usuario.

Figura 5: Los administradores pueden crear nuevas cuentas de usuario
(Haga clic para ver la imagen de tamaño completo)

Para obtener un vistazo más detallado a la creación de páginas de administración de usuarios y roles, junto con instrucciones paso a paso sobre el uso de las clases Membership y Roles y los controles web de ASP.NET relacionados con el inicio de sesión, asegúrese de leer mis Tutoriales de Seguridad del Sitio Web. Allí encontrará instrucciones sobre cómo crear páginas web para crear nuevas cuentas, crear y administrar roles, asignar usuarios a roles y otras tareas administrativas comunes.

Para implementar la funcionalidad similar a WSAT en el sitio web de producción, siempre puede crear su propia serie de páginas web que implementen las características de WSAT. Para ayudarle a empezar, consulte el código fuente de WSAT, que se encuentra en la carpeta %WINDIR%\Microsoft.NET\Framework\v2.0.50727\ASP.NETWebAdminFiles. Otra opción es usar la alternativa WSAT de Dan Clem, que comparte en su artículo Rolling Your Own Web Site Administration Tool. Dan guía a los lectores a través del proceso de creación de una herramienta personalizada de tipo WSAT, incluye el código fuente de su aplicación para su descarga (en C#) y proporciona instrucciones paso a paso para agregar su WSAT personalizado a un sitio web hospedado.

Resumen

La herramienta de administración de sitios web (WSAT) de ASP.NET se puede usar junto con los servicios de aplicación de membresía y roles para administrar la información de usuario y rol de tu sitio web. Desafortunadamente, el WSAT solo es accesible localmente y no se puede visitar desde su sitio web de producción. Sin embargo, al cambiar la cadena de conexión en el entorno de desarrollo para que apunte a la base de datos de producción, puede usar WSAT para administrar los usuarios y roles en el sitio web de producción.

Aunque el enfoque WSAT ofrece una manera rápida y sencilla de administrar usuarios y roles, requiere iniciar el WSAT desde Visual Studio, así como cambios temporales en la información de la cadena de conexión. WSAT ofrece una manera rápida de administrar usuarios y roles en producción, pero es complicado y no funciona bien para sitios web con varios administradores o con administradores que no tienen o no están familiarizados con Visual Studio y WSAT. Por estas razones, la mayoría de los sitios web que admiten cuentas de usuario incluyen un conjunto de páginas web administrativas. Este conjunto de páginas web elimina la necesidad del WSAT y es utilizado por varios usuarios administrativos desde cualquier equipo.

¡Feliz programación!

Lecturas adicionales

Para obtener más información sobre los temas tratados en este tutorial, consulte los siguientes recursos: