Considerações de segurança para LightSwitch
A maioria dos aplicativos comerciais têm requisitos de segurança.Por exemplo, você pode querer limitar quais funcionários têm acesso a um aplicativo, ou a telas em um aplicativo, e que usuários podem ver ou atualizar certos dados.LightSwitch fornece um modelo interno de autenticação e autorização que pode ajudar na implementação de segurança no 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 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 visualizar suas próprias informações da folha de pagamento, mas provavelmente não seriam autorizados a aumentar o próprio de salário.
No LightSwitch, autenticação é tratada com uma tela de logon que é usada para identificar o usuário.Uma vez que um usuário esteja autenticado, funções e permissões determinam o que o usuário está autorizado a fazer no aplicativo.
Habilitando Autenticação
Autenticação no LightSwitch está desativada por padrão; você pode ativá-la na guia Controle de Acesso do Designer de Aplicativo.A autenticação do Windows e autenticação de formulários são suportadas.Autenticação do windows usa uma informação de logon do Windows para identificar o usuário.Com a autenticação de Formulários, um administrador do aplicativo cria as identidades e senhas do usuário.
Ao escolher 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 identificação de logon válida do Windows poderá acessar o aplicativo, mas serão autorizados somente para as permissões mínimas.Você ainda pode atribuir funções e permissões para usuários individuais conforme necessário.
Permissões, Usuários e Funções
Autorização no LightSwitch é realizada definindo permissões, usuários e funções.As permissões são criadas pelo desenvolvedor na guia Controle de Acesso do Designer de Aplicativo e o efeito dessas permissões é criado escrevendo código.Por exemplo, você pode criar uma permissão ViewSales para autorizar usuários a ver uma tela de Vendas.No método CanView para a tela, você poderia escrever um código que só permite que a tela seja exibida se o usuário atual tiver permissão para vê-la.Além de definir permissões para a visualização de telas, você também pode criar permissões para restringir o acesso a controles individuais na tela, entidades de dados ou campos de uma entidade, consultas e mais.
As funções são criadas pelo administrador do aplicativo 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 de Vendas e atribuir a permissão ViewSales a essa função.O administrador do aplicativo 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 então associando-o à função de vendas.Quando o aplicativo é executado, o código avaliará as informações de usuário de Bob, verá que ele é um membro da função de vendas, e exibirá o item de menu para exibir a tela de Vendas.
Todo aplicativo tem uma permissão padrão, a permissão SecurityAdministration.Essa permissão concede acesso às telas administativas de Usuários e Funções que são usadas pelo administrador do aplicativo.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, eles serão capazes de ver as telas de Usuários e Funções e definir usuários e funções.
Autorização de Teste
Ao testar um aplicativo convém certificar-se de que qualquer permissão que você tenha definido trabalha como esperado.Você faz isso ao habilitar permissões de depuração na guia Controle de Acesso do Designer de Aplicativo.Por exemplo, se você tiver definido uma permissão de ViewSales, você pode verificar a caixa de seleção Concedido para Depuração para essa permissão.Quando você depura o aplicativo, você pode verificar se você pode visualizar a tela de 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.
Observação |
---|
Se você ativar a permissão SecurityAdministration para depuração, você pode exibir as telas administrativas de Usuários e Funções enquanto você depura.Enquanto você puder inserir usuários e funções nessas telas, os usuários e funções não serão implantados com o aplicativo e não podem ser usados para permissões de depuração. |
Proteger Conexões
Para aplicativos cliente de três camadas que são baseados no LightSwitch e hospedados em um servidor que esteja executando o Internet Information Services (IIS), a comunicação entre o aplicativo e o servifot usa protocolo HTTP em vez de HTTPS, que é mais seguro.Esse requisito pode deixar seu aplicativo vulnerável à invasões.A criptografia Secure Sockets Layer (SSL) ajuda a proteger informações confidenciais ou pessoais que são enviadas entre um aplicativo cliente e o servidor.Quando o SSL está ativado, aplicativos clientes remotos acessam o servidor usando URLs que começam com https://.Recomendamos que você configure o SSL para qualquer site que hospeda um aplicativo baseado no LightSwitch.Para obter mais informações, consulte Configuring Secure Sockets Layer in IIS 7.
Para ativar o SSL
Na barra de menu, clique em Compilar, Publicar.
No Assistente de Publicação de Aplicativo, clique na guia Configurações de Segurança.
Na seção Exigir Conexão segura (HTTPS), clique no botão de opção Ativado.
Observação 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 para a camada de dados, a comunicação entre o IIS e o banco de dados também é potencialmente vulnerável.Recomendamos que você configure o SSL para qualquer banco de dados que seja acessado por um aplicativo baseado em LightSwitch.Para obter mais informações, consulte Encrypting Connections to SQL Server.
Controle de Versão e Segurança
Quando você trabalha com um projeto LightSwitch que está sob controle de versão, uma cadeia de conexão no arquivo web.config pode conter o nome de usuário e senha do desenvolvedor mais recente do projeto.Essa informação é então disponível para o próximo desenvolvedor que verifica o projeto.
Esse problema não se aplica a um aplicativo publicado; as informações de cadeia de conexão do Assistente de Publicação não são salvas em 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 de Segurança Adicionais
Além da autenticação, existem outros aspectos de segurança que você deve considerar.Mesmo que o seu aplicativo não trate de dados comerciais confidenciais, outras informações como senhas podem estar em 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 dos funcionários para que eles só possam consultar 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 funciona para exibir os dados, se o usuário tentar atualizar ou excluir os dados e uma exceção concorrente ocorrer, dados de outros funcionários poderiam ser expostos nas informações de erro que são retornadas do servidor.Para evitar isso, você pode querer escrever códigos adicionais nos métodos de Atualização e Exclusão para certificar-se de que o funcionário só pode 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 Creating Secure Applications.
Consulte também
Tarefas
Autenticação e autorização do LightSwitch