Compartilhar via


Considerações sobre segurança de LightSwitch

A maioria dos aplicativos de negócio tem requisitos de segurança. Por exemplo, você talvez queira limitar quais funcionários têm acesso a um aplicativo, ou a telas em um aplicativo, e quais usuários podem exibir ou atualizar determinados dados. O LightSwitch fornece um modelo interno de autenticação e autorização que pode ajudar a implementar a segurança de seu aplicativo.

Autenticação e autorização

Autenticação é um mecanismo para verificar quem é um usuário. Por exemplo, quando você faz logon no Windows, o seu nome de usuário e a sua senha autenticam que você é realmente você. Autorização é um mecanismo para definir o que você pode, ou não, fazer. Por exemplo, um funcionário pode exibir suas próprias informações da folha de pagamento, mas provavelmente não teria autorização para aumentar o próprio salário.

No LightSwitch, a autenticação é identificada por uma tela de logon usada para identificar o usuário. Depois que um usuário for autenticado, funções e permissões determinarão o que o usuário está autorizado a fazer no aplicativo.

Habilitando autenticação

A autenticação no LightSwitch está desabilitada por padrão; você a habilita na guia Controle de Acesso do Designer de Aplicativos. A autenticação do Windows e a autenticação de Formulários são compatíveis. A autenticação do Windows usa informações de logon do Windows do usuário para identificá-lo. Com a autenticação de Formulários, um administrador do aplicativo cria as identidades e as senhas do usuário.

Ao escolher a autenticação do Windows, você também pode escolher se usuários específicos ou todos os usuários do Windows têm acesso ao aplicativo. Se você escolher todos os usuários, qualquer usuário que tiver uma ID de logon válida do Windows poderá acessar o aplicativo, mas só será autorizado com as permissões mínimas. Você ainda pode atribuir funções e permissões a usuários individuais conforme necessário.

Permissões, Usuários e Funções

A autorização no LightSwitch é realizada definindo-se permissões, usuários e funções. As permissões são criadas pelo desenvolvedor na guia Controle de Acesso do Designer de Aplicativos e o efeito dessas permissões é criado escrevendo-se o código. Por exemplo, você pode criar uma permissão ViewSales para autorizar usuários a exibir uma tela Vendas. No método CanView da tela, você escreveria um código que só permite que a tela seja exibida se o usuário atual tiver permissão para exibi-la. Além de definir permissões para exibir telas, você também pode criar permissões para restringir o acesso a controles individuais em uma tela, a entidades de dados ou a campos de uma entidade, consultas e muito mais.

As funções são criadas pelo administrador de aplicativos após ele ter sido implantado. Uma função contém uma ou mais permissões. Por exemplo, o administrador pode definir uma função Vendas e atribuir a permissão ViewSales a essa função. O administrador de aplicativos também adiciona usuários e atribui funções aos usuários. Por exemplo, se Bob está no departamento de vendas, o administrador pode adicionar Bob como um usuário adicionando suas informações de autenticação e associando-o à função Vendas. Quando o aplicativo fosse executado, o código avaliaria as informações de usuário de Bob, veria que ele é um membro da função Vendas e exibiria o item de menu para exibir a tela Vendas.

Todo aplicativo tem uma permissão padrão, a permissão SecurityAdministration. Essa permissão concede acesso às telas administrativas Usuários e Funções usadas pelo administrador de aplicativos. Ao publicar um aplicativo pela primeira vez, você pode fornecer informações de autenticação para a pessoa que será o administrador padrão do aplicativo. Quando essa pessoa executar o aplicativo pela primeira vez, ela será capaz de ver as telas Usuários e Funções e definir usuários e funções.

Testando a autorização

Ao testar um aplicativo convém certificar-se de que qualquer permissão que você tenha definido funcione conforme o esperado. Você faz isso habilitando permissões de depuração na guia Controle de Acesso do Designer de Aplicativos. Por exemplo, se tivesse definido uma permissão ViewSales, você poderia marcar a caixa de seleção Concedido para Depuração dessa permissão. Ao depurar o aplicativo, você pode verificar se é possível exibir a tela Vendas – você está executando como um usuário que tem permissão ViewSales. Você pode definir qualquer combinação de permissões para emular as permissões que podem ser atribuídas a uma função dada.

Dica

Se habilitar a permissão SecurityAdministration para depuração, você poderá exibir as telas administrativas Usuários e Funções ao depurar.Embora você possa inserir usuários e funções nessas telas, os usuários e as funções não serão implantados com o aplicativo e não poderão ser usados em permissões de depuração.

Conexões seguras

Para aplicativos cliente de três camadas baseados no LightSwitch e hospedados em um servidor que esteja executando o IIS (Serviços de Informações da Internet), a comunicação entre o aplicativo e o servidor usa o protocolo HTTP em vez de HTTPS, que é mais seguro. Esse requisito pode deixar seu aplicativo vulnerável a invasores. A criptografia SSL (Secure Sockets Layer) ajuda a proteger informações confidenciais ou pessoais enviadas entre um aplicativo cliente e um servidor. Quando a SSL está habilitada, aplicativos clientes remotos acessam o servidor usando URLs que começam com https://. Recomendamos que você configure a SSL para qualquer site que hospede um aplicativo baseado no LightSwitch. Para obter mais informações, consulte Configurando a Secure Sockets Layer no IIS 7.

Para habilitar a SSL

  1. Na barra de menus, escolha Compilação, Publicar.

  2. No Assistente de Publicação de Aplicativos, clique na guia Configurações de Segurança.

  3. Na seção Exigir Conexão Segura (HTTPS), escolha o botão de opção Ativado.

    Dica

    Quando essa configuração está ativada, o site deve ser configurado apropriadamente para usar HTTPS.

Para aplicativos em três camadas que usam o SQL Server na camada de dados, a comunicação entre o IIS e o banco de dados também é potencialmente vulnerável. Recomendamos que você configure a SSL para qualquer banco de dados acessado por um aplicativo baseado no LightSwitch. Para obter mais informações, consulte Criptografando conexões com o SQL Server.

Segurança e controle de versão

Quando você trabalha com um projeto LightSwitch com controle de versão, uma cadeia de conexão no arquivo web.config pode conter o nome de usuário e a senha do desenvolvedor mais recente do projeto. Essas informações estariam disponíveis para o próximo desenvolvedor que fizesse check-out do projeto.

Esse problema não se aplica a um aplicativo publicado; as informações da cadeia de conexão do Assistente de Publicação não são salvas no controle de versão. Usando um banco de dados de teste em vez de um banco de dados de produção em tempo de design, você pode impedir que usuários não autorizados acessem dados da produção.

Considerações adicionais sobre segurança

Além da autenticação, existem outros aspectos da segurança que você deve considerar. Mesmo que o seu aplicativo não lide com dados de negócio confidenciais, outras informações, como senhas, podem estar sob risco de exibição.

A segurança também é uma consideração quando você escreve um código que acessa um servidor. Por exemplo, você pode querer escrever um código de consulta para filtrar dados de funcionários de forma que eles só possam ver seus próprios dados:

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;
}

Enquanto isso funcione para exibir os dados, se o usuário tentar atualizar ou excluir os dados e uma exceção de simultaneidade ocorrer, os dados de outros funcionários poderiam ser expostos nas informações de erro retornadas do servidor. Para evitar isso, você talvez queira escrever códigos adicionais nos métodos Atualização e Exclusão para certificar-se de que o funcionário só possa consultar seus próprios dados:

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 saber mais sobre práticas de codificação segura, consulte Criando aplicativos seguros.

Consulte também

Tarefas

Como habilitar a autenticação em um aplicativo cliente do Silverlight

Outros recursos

Implantação: distribuindo e mantendo o aplicativo

Depurando: localizando e corrigindo erros