Compartir a través de


Descripción de la administración de funciones

Actualización: noviembre 2007

La administración de funciones facilita la administración de la autorización, ya que permite especificar qué usuarios de la aplicación podrán obtener acceso a los recursos. La administración de funciones permite tratar los grupos de usuarios como si fueran una unidad mediante la asignación de usuarios a funciones, como administrador, ventas, pertenencia, etc. En Windows, puede crear funciones asignando usuarios a grupos, como Administradores, Usuarios avanzados, etc.

Tras definir las funciones, puede crear reglas de acceso en la aplicación. Por ejemplo, un sitio podría contener un conjunto de páginas que sólo desea mostrar a los miembros. De igual forma, quizás desee mostrar u ocultar una parte de una página en función de si el usuario actual es un administrador. Mediante las funciones, puede establecer estos tipos de reglas sin tener en cuenta a los usuarios individuales de la aplicación. Por ejemplo, no tiene que conceder acceso a cada miembro individual del sitio para que puedan consultar páginas destinadas únicamente a los miembros; en su lugar, puede conceder acceso a la función de miembro y después agregar y quitar los usuarios de esa función cuando éstos se suscriban o prescriba su suscripción como miembros.

Los usuarios pueden pertenecer a varias funciones. Por ejemplo, si el sitio es un foro de discusión, algunos usuarios podrían pertenecer tanto a la función de miembro como a la función de moderador. Puede definir cada función para que tenga privilegios diferentes en el sitio. De este modo, un usuario que pertenezca a ambas funciones tendrá los dos conjuntos de privilegios.

Aunque su aplicación tenga pocos usuarios, puede ser útil la creación de funciones. Las funciones proporcionan flexibilidad para cambiar permisos, así como agregar y quitar usuarios sin tener que realizar cambios en todo el sitio. A medida que se van definiendo más reglas de acceso para la aplicación, las funciones son un modo más conveniente de aplicar los cambios a los grupos de usuarios.

Funciones y reglas de acceso

La finalidad principal al establecer funciones es proporcionar un modo sencillo de administrar las reglas de acceso de los grupos de usuarios. Cree los usuarios y, a continuación, asígneles funciones (en Windows, a los grupos). Lo normal es crear un conjunto de páginas cuyo acceso desea restringir a algunos usuarios. Para ello, lo más frecuente es aislar estas páginas restringidas en una carpeta. A continuación, puede utilizar la herramienta Administración de sitios Web para definir reglas que concedan o denieguen el acceso a las carpetas restringidas. Por ejemplo, puede configurar el sitio para que los miembros o los administradores tengan acceso a las páginas de la carpeta restringida, y denegar el acceso a los demás usuarios. Si un usuario sin autorización intenta ver una página restringida, el usuario ve un mensaje de error o se le redirige a la página especificada.

Administración de funciones, identidad de usuario y pertenencia

Al trabajar con funciones, debe poder identificar a los usuarios de la aplicación para poder determinar si pertenecen a una función específica. Puede configurar la aplicación para establecer la identidad del usuario de dos maneras: mediante la autenticación de Windows y la autenticación de formularios. Si su aplicación se ejecuta en una red de área local (es decir, en una aplicación de intranet basada en dominios), puede identificar a los usuarios mediante el nombre de su cuenta de dominio de Windows. En ese caso, las funciones de un usuario se corresponden con los grupos de Windows a los que pertenece.

En aplicaciones de Internet y en otros escenarios donde no es práctico utilizar cuentas de Windows, puede utilizar la autenticación de formularios para establecer la identidad de los usuarios. Para esta tarea, se suele crea una página en la que los usuarios pueden escribir un nombre de usuario y una contraseña y, a continuación, se validan las credenciales del usuario. Los controles de inicio de sesión de ASP.NET pueden realizar gran parte de esta tarea por usted; o bien, puede crear una página de inicio de sesión y utilizar la clase FormsAuthentication para establecer la identidad de un usuario.

Nota:

Las funciones no se aplican a los usuarios que no hayan establecido una identidad en la aplicación (usuarios anónimos).

Si utiliza los controles de inicio de sesión o la autenticación de formularios para establecer la identidad del usuario, también puede utilizar la administración de funciones junto con la pertenencia. En este escenario, la pertenencia se utiliza para definir usuarios y contraseñas. Después, puede utilizar la administración de funciones para definir las funciones y asignar identificadores de usuario de pertenencia a estas funciones. Sin embargo, la administración de funciones no depende de la pertenencia. Siempre que disponga de algún medio para definir la identidad del usuario en la aplicación, podrá utilizar también la administración de funciones para la autorización.

API de administración de funciones

La administración de funciones no se limita a restringir los derechos a páginas o carpetas; sino que proporciona una API que se puede utilizar para determinar mediante programación si un usuario pertenece a una función. De esta forma, puede escribir el código para aprovechar las ventajas de las funciones y realizar todas las tareas de la aplicación basándose no sólo en quién es el usuario sino también cuáles son las funciones a las que pertenece.

Si establece la identidad del usuario en la aplicación, puede utilizar los métodos de la API de administración de funciones para crear funciones, agregar usuarios a funciones y obtener información sobre los usuarios y las funciones a las que pertenecen. Estos métodos le permiten crear su propia interfaz de administración de funciones.

Si la aplicación utiliza la autenticación de Windows, esta API dispone de menos recursos para la administración de funciones. Por ejemplo, no puede utilizar la administración de funciones para crear funciones nuevas. En su lugar, utilice la administración de usuarios y grupos de Windows para crear cuentas de usuario y grupos, así como para asignar los usuarios a los grupos. La administración de funciones puede leer la información de usuarios y de grupos de Windows para que pueda utilizarla en la autenticación.

Cómo funciona la administración de funciones de ASP.NET

Para trabajar con la administración de funciones, debe habilitarla primero y, si lo desea, configurar reglas de acceso que puedan aprovechar las funciones. Puede utilizar, a continuación, las opciones de administración de funciones en tiempo de ejecución para trabajar con funciones.

Nota:

El modo más sencillo de configurar la administración de funciones, definir funciones, agregar usuarios a funciones y crear reglas de acceso es utilizar la herramienta Administración de sitios Web.

Configuración de administración de funciones

Para utilizar la administración de funciones de ASP.NET, habilite esta opción en el archivo Web.config de la aplicación utilizando una configuración como la siguiente:

<roleManager 
    enabled="true" 
    cacheRolesInCookie="true" >
</roleManager>

Normalmente, las funciones se utilizan para establecer reglas que permitan o denieguen el acceso a páginas o carpetas. Puede configurar estas reglas de acceso en la sección Elemento authorization (Esquema de configuración de ASP.NET) del archivo Web.config. El ejemplo siguiente permite a los usuarios de la función de miembros ver las páginas de la carpeta denominada memberPages, mientras que deniega el acceso al resto de los usuarios:

<configuration>
   <location path="memberPages">
       <system.web>
            <authorization>
               <allow roles="members" />
               <deny users="*" />
            </authorization>
          </system.web>
        </location>
   <!-- other configuration settings here -->
<configuration>

Para obtener más información sobre la configuración de las reglas de acceso, vea Autorización de ASP.NET.

También debe crear funciones, como las de administrador o miembro, y asignar un Id. de usuario a estas funciones. Si la aplicación utiliza la autenticación de Windows, use la herramienta Administración de equipos de Windows para crear usuarios y grupos.

Si está utilizando la autenticación de formularios, la manera más fácil de configurar los usuarios y las funciones es utilizar la herramienta Administración de sitios Web de ASP.NET. Si lo prefiere, puede realizar esta tarea mediante programación llamando a distintos métodos del administrador de funciones. El ejemplo de código siguiente muestra cómo puede crear la función members:

Roles.CreateRole("members")
Roles.CreateRole("members");

En el siguiente ejemplo de código se muestra cómo se puede agregar individualmente el usuario JoeWorden a la función manager, y cómo se puede agregar los usuarios JillShrader y ShaiBassli a la función members todos a la vez:

Roles.AddUsersToRole("JoeWorden", "manager")
Dim userGroup(2) As String
userGroup(0) = "JillShrader"
userGroup(1) = "ShaiBassli"
Roles.AddUsersToRole(userGroup, "members")
Roles.AddUsersToRole("JoeWorden", "manager");
string[] userGroup = new string[2];
userGroup[0] = "JillShrader";
userGroup[1] = "ShaiBassli";
Roles.AddUsersToRole(userGroup, "members");

Trabajar con funciones en tiempo de ejecución

En tiempo de ejecución, cuando los usuarios visitan el sitio, establecen una identidad ya sea a través de un nombre de cuenta de Windows o iniciando sesión en la aplicación. En un sitio de Internet, si los usuarios lo visitan sin iniciar sesión (es decir, de forma anónima) no tendrán ninguna identidad de usuario y, por tanto, no pertenecerán a ninguna función. La información sobre el usuario que ha iniciado sesión está disponible en la propiedad User de la aplicación. Cuando se habilitan las funciones, ASP.NET busca las funciones del usuario actual y las agrega al objeto User para que se puedan comprobar. En el ejemplo de código siguiente se muestra cómo puede determinar si el usuario actual pertenece a la función de miembro y, si es así, muestra un botón para los miembros:

If User.IsInRole("members") Then
   buttonMembersArea.Visible = True
End If
if (User.IsInRole("members"))
{
   buttonMembersArea.Visible = True;
;

ASP.NET también crea una instancia de la clase RolePrincipal y la agrega al contexto de la solicitud actual para que pueda realizar las tareas de administración de funciones mediante programación, como determinar los usuarios que pertenecen a una función específica. . El ejemplo de código siguiente muestra cómo puede obtener una lista de las funciones del usuario actual que ha iniciado sesión.

Dim userRoles() as String = CType(User, RolePrincipal).GetRoles()
string[] userRoles = ((RolePrincipal)User).GetRoles();

Si está utilizando el control LoginView en la aplicación, este control comprobará las funciones del usuario y podrá crear dinámicamente una interfaz de usuario basada en ellas.

Almacenar en memoria caché la información de funciones

Si el explorador de un usuario admite el uso de cookies, ASP.NET puede almacenar, opcionalmente, la información de las funciones en una cookie cifrada del equipo del usuario. En cada solicitud de la página, ASP.NET lee la cookie y rellena la información de las funciones de ese usuario basándose en la información de la cookie. Esta estrategia reduce la necesidad de leer la información de las funciones en la base de datos. Si el explorador del usuario no admite cookies o si éstas estás desactivadas, la información sobre las funciones se almacena en la memoria caché solamente el tiempo que dura cada solicitud de página.

Vea también

Conceptos

Proveedores para la administración de funciones

Clases para la administración de funciones

Otros recursos

Proteger sitios web ASP.NET