Compartir a través de


Consideraciones de seguridad para LightSwitch

La mayoría de las aplicaciones comerciales tienen requisitos de seguridad.Por ejemplo,puede desear limitar qué empleados tienen acceso a una aplicación, o a las pantallas en una aplicación, así como qué usuarios pueden ver o actualizar ciertos datos.LightSwitch proporciona un modelo integrado de autenticación y autorización que pueden ayudar a implementar la 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 de 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 que se diera un aumento de sueldo.

En LightSwitch la autentificación se gestiona mediante una pantalla de inicio de sesión que sirve 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.

Gg481776.collapse_all(es-es,VS.110).gifHabilitación de la autenticación

De forma predeterminada, la autenticación en LightSwitch está deshabilitada; se habilita 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 utiliza la información de inicio de sesión de Windows de un usuario para identificar al usuario.Con la autenticación de formularios, un administrador de aplicaciones crea las identidades de usuarios y contraseñas.

Al elegir la autenticación de Windows, también se puede elegir si unos usuarios específicos o todos los usuarios de Windows tienen acceso a la aplicación.Si selecciona 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, pero únicamente estará autorizado para los permisos mínimos.Puede seguir asignando roles y permisos a usuarios individuales cuando lo necesite.

Gg481776.collapse_all(es-es,VS.110).gifPermisos, 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, se puede crear un permiso ViewSales para autorizar que los usuarios vean una pantalla de ventas.En el método CanView para la pantalla, se escribirá el código que permite mostrar la pantalla solo si el usuario actual tiene el permiso concedido para verla.Además de establecer permisos para ver las pantallas, también se pueden crear permisos para restringir el acceso a los controles individuales de una pantalla, a entidades de datos o campos de una entidad, a consultas y muchos mas.

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 podría agregar a Juan como un usuario al añadir su información de autenticación y, a continuación, asignarle al rol de ventas.Cuando se ejecuta la aplicación, el código podría evaluar la información de usuario de Juan, ver que es un miembro del rol de departamento de ventas y mostrar el elemento de menú que muestra la pantalla Ventas.

Cada aplicación tiene un permiso predeterminado, el permiso SecurityAdministration.Este permiso garantiza el acceso a las pantallas administrativas Usuarios y Roles que utiliza el administrador de la aplicación.Al editar una aplicación por primera vez, se puede ofrecer información de autenticación para 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.

Gg481776.collapse_all(es-es,VS.110).gifAutorización de pruebas

Al probar una aplicación deberá asegurarse de que los permisos que definió funcionan como se esperaba .Esto se lleva a cabo habilitando los permisos de depuración en la pestaña Control de acceso del Diseñador de aplicaciones.Por ejemplo, si se define un permiso ViewSales, se puede comprobar la casilla Concedido para depuración para ese permiso.Al depurar la aplicación, puede comprobar que puede ver la pantalla de Ventas – está ejecutando como un usuario con el permiso ViewSales.Se puede establecer cualquier combinación de permisos para emular los permisos que podrían 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, los usuarios y roles no se implementarán con la aplicación y no se pueden utilizar para depurar permisos.

Gg481776.collapse_all(es-es,VS.110).gifConexiones seguras

Para aplicaciones de cliente con tres capas basados en LightSwitch y alojados en un servidor que está ejecutando Servicios de Información por Internet (IIS), la comunicación entre la aplicación y el servidor 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 a través de las direcciones URL que comiencen con https://.Se recomienda configurar SSL para cualquier sitio que aloje una aplicación basada en LightSwitch.Para obtener más información, consulte Configuring Secure Sockets Layer in IIS 7.

Cómo habilitar SSL

  1. En la barra de menú, elija Compilar, Editar.

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

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

    [!NOTA]

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

En las aplicaciones con tres capas que utilizan 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, consulte Encrypting Connections to SQL Server.

Gg481776.collapse_all(es-es,VS.110).gifSeguridad y control de versiones

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

Este problema no afecta a las aplicaciones editadas ; la información de la cadena de conexión del Asistente para Editar no se guarda en el control de versiones.Si se utiliza 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 datos de producción.

Gg481776.collapse_all(es-es,VS.110).gifConsideraciones adicionales de seguridad.

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

La seguridad también se tiene en consideración cuando se escribe código que tiene acceso a un servidor.Por ejemplo, se puede escribir código de consulta para filtrar los datos de los empleados de modo que éstos 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;
}

Mientras 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 pueden estar expuestos en la información sobre errores que devuelve el servidor.Para evitar esto, 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 acerca de las prácticas de codificación seguras en general, consulte Creating Secure Applications.

Vea también

Tareas

Autenticación y autorización de LightSwitch

Otros recursos

Implementación: Distribuir y mantener la aplicación

Depurar: Buscar y corregir errores