Compartir a través de


Consideraciones de seguridad para LightSwitch

La mayoría de las aplicaciones empresariales tienen requisitos de seguridad. Por ejemplo, puede que desee limitar qué empleados tienen acceso a una aplicación o a las pantallas de una aplicación, o bien qué usuarios pueden ver o actualizar ciertos datos. LightSwitch proporciona un modelo de autenticación y autorización integrado que puede ayudar a implementar seguridad en la aplicación.

Autenticación y autorización

La autenticación es un mecanismo para comprobar quién es un usuario. Por ejemplo, al iniciar sesión en Windows, su nombre de usuario y contraseña autentican que realmente es usted. La autorización es un mecanismo para definir lo que se puede o no se puede hacer. Por ejemplo, un empleado podría ver la información de su propia nómina, pero probablemente no se le autorizaría a asignarse un aumento de sueldo.

En LightSwitch, la autenticación se controla mediante una pantalla de inicio de sesión que se usa para identificar al usuario. Una vez autenticado un usuario, los roles y permisos determinan lo que el usuario está autorizado a hacer en la aplicación.

Habilitar la autenticación

De forma predeterminada, la autenticación en LightSwitch está deshabilitada; habilítela en la pestaña Control de acceso del Diseñador de aplicaciones. Se admiten tanto la autenticación de Windows como la autenticación de formularios. La autenticación de Windows usa la información de inicio de sesión de Windows de un usuario para identificarlo. Con la autenticación de formularios, un administrador de aplicaciones crea las identidades y contraseñas de los usuarios.

Al elegir la autenticación de Windows, también se puede elegir si solo usuarios concretos o todos los usuarios de Windows tienen acceso a la aplicación. Si elige todos los usuarios, cualquier usuario que tenga un identificador de inicio de sesión válido de Windows podrá tener acceso a la aplicación, si bien solo tendrá autorización para los permisos mínimos. Puede seguir asignando roles y permisos a usuarios individuales según sea necesario.

Permisos, usuarios y roles

La autorización en LightSwitch se logra definiendo permisos, usuarios y roles. El desarrollador crea los permisos en la pestaña Control de acceso del Diseñador de aplicaciones y el efecto de dichos permisos se diseña escribiendo código. Por ejemplo, puede crear un permiso ViewSales para autorizar a los usuarios a que vean una pantalla de ventas. En el método CanView para la pantalla, se escribirá código que permite mostrar la pantalla solo si el usuario actual tiene concedido permiso para verla. Además de establecer permisos para ver las pantallas, también se pueden crear permisos para restringir el acceso a controles individuales de una pantalla, a entidades de datos o campos de una entidad, a consultas y mucho más.

El administrador de la aplicación crea los roles una vez implementada la aplicación. Un rol contiene uno o más permisos. Por ejemplo, el administrador puede definir un rol de ventas y asignar el permiso ViewSales a ese rol. El administrador de la aplicación también agrega usuarios y asigna roles a los usuarios. Por ejemplo, si Juan está en el departamento de ventas, el administrador puede agregar a Juan como usuario agregando su información de autenticación y, a continuación, asignarle al rol de ventas. Al ejecutar la aplicación, el código evaluaría la información de usuario de Juan, vería que es un miembro del rol de ventas y mostraría el elemento de menú para mostrar la pantalla Ventas.

Cada aplicación tiene un permiso predeterminado, el permiso SecurityAdministration. Este permiso concede acceso a las pantallas administrativas Usuarios y Roles que usa el administrador de la aplicación. Al publicar una aplicación por primera vez, se puede proporcionar información de autenticación de la persona que será el administrador predeterminado de la aplicación. Cuando esa persona ejecuta por primera vez la aplicación, podrá ver las pantallas Usuarios y Roles y definir usuarios y roles.

Probar la autorización

Al probar una aplicación deberá asegurarse de que los permisos que definió funcionan como se esperaba. Para ello, habilite los permisos de depuración en la pestaña Control de acceso del Diseñador de aplicaciones. Por ejemplo, si se definió un permiso ViewSales, se puede activar la casilla Concedido para depuración de ese permiso. Al depurar la aplicación, puede comprobar que se ve la pantalla de Ventas (está ejecutando como usuario con el permiso ViewSales). Se puede establecer cualquier combinación de permisos para emular los permisos que pueden asignarse a un rol determinado.

Nota

Si habilita el permiso SecurityAdministration para depurar, puede ver las pantallas administrativas Usuarios y Roles mientras está depurando.Aunque puede definir usuarios y roles en estas pantallas, estos no se implementarán con la aplicación y no se pueden usar para depurar permisos.

Conexiones seguras

En las aplicaciones cliente de tres capas basadas en LightSwitch y hospedadas en un servidor que ejecuta Internet Information Services (IIS), para la comunicación entre la aplicación y el servidor se usa el protocolo HTTP en lugar del protocolo HTTPS, que es más seguro. Este requisito puede hacer que la aplicación sea vulnerable a los atacantes. El cifrado de Capa de sockets seguros (SSL) ayuda a proteger la información confidencial o personal que se envía entre una aplicación cliente y un servidor. Cuando se habilita SSL, las aplicaciones cliente remotas tienen acceso al servidor mediante direcciones URL que comienzan con https://. Se recomienda configurar SSL para cualquier sitio que hospede una aplicación basada en LightSwitch. Para obtener más información, vea cómo configurar la capa de sockets seguros en IIS 7.

Para habilitar SSL

  1. En la barra de menús, elija Compilar, Publicar.

  2. En Asistente para publicación de aplicaciones, elija la pestaña Configuración de seguridad.

  3. En la sección Requerir conexión segura (HTTPS), elija el botón de opción Activado.

    Nota

    Cuando esta configuración está activada, el sitio web debe configurarse adecuadamente para usar HTTPS.

En las aplicaciones de tres capas que usan SQL Server para la capa de datos, la comunicación entre IIS y la base de datos también es potencialmente vulnerable. Se recomienda configurar SSL para cualquier base de datos a la que tenga acceso cualquier aplicación basada en LightSwitch. Para obtener más información, vea cómo cifrar conexiones a SQL Server.

Seguridad y control de versiones

Cuando se trabaja con un proyecto de LightSwitch con control de versiones, una cadena de conexión en el archivo web.config puede incluir el nombre de usuario y la contraseña del desarrollador más reciente del proyecto. Esta información estaría después disponible para el siguiente desarrollador que desproteja el proyecto.

Este problema no afecta a las aplicaciones publicadas; la información de la cadena de conexión del Asistente para publicación no se guarda en el control de versiones. Si se usa una base de datos de prueba en lugar de una base de datos de producción en tiempo de diseño, se puede evitar que los usuarios no autorizados puedan tener acceso a los datos de producción.

Consideraciones de seguridad adicionales

Además de la autenticación, hay otros aspectos de seguridad que debe tener en cuenta. Incluso si la aplicación no administra datos profesionales confidenciales, otro tipo de información como las contraseñas podría estar en riesgo de exposición.

La seguridad también debe tenerse en consideración cuando se escribe código que tiene acceso a un servidor. Por ejemplo, puede escribir código de consulta para filtrar los datos de los empleados de modo que estos solo puedan ver sus datos:

Private Partial Sub Employees_All_PreprocessQuery(ByRef query As IQueryable(Of Application43.Employee))
    query = From item In query Where item.EmpName = Me.Application.User.Nameitem
End Sub
partial void Employees_All_PreprocessQuery(ref IQueryable<Application43.Employee> query)
{
    query = from item in query where item.EmpName == this.Application.User.Name select item;
}

Si bien esto funciona para mostrar los datos, si el usuario intenta actualizar o eliminar los datos y se produce una excepción de simultaneidad, los datos de otros empleados podrían exponerse en la información de error que devuelve el servidor. Para evitarlo, se debería escribir código adicional en los métodos de actualización y eliminación para asegurarse de que el empleado solo puede ver sus propios datos:

Dim user As String = Me.Application.User.Name
If Me.DataWorkspace.ApplicationData.Employees.Where(Function(e) e.Id = entity.Id AndAlso e.EmpName = user).Execute().Count() = 0 Then
    Throw New DataServiceOperationException("Permission error: Cannot modify a record you don't have access to.")
End If

string user = this.Application.User.Name;
if (this.DataWorkspace.ApplicationData.Employees.Where(e => e.Id == entity.Id && e.EmpName == user).Execute().Count() == 0)
{
throw new DataServiceOperationException("Permission error: Cannot modify a record you don't have access to.");
}

Para obtener más información sobre las prácticas de codificación seguras en general, vea cómo crear aplicaciones seguras.

Vea también

Tareas

Cómo: Habilitar la autenticación en una aplicación de cliente de Silverlight

Otros recursos

Implementación: Distribuir y mantener la aplicación

Depurar: Buscar y corregir errores