Como habilitar a autenticação em um aplicativo cliente HTML
No LightSwitch, é possível deixar o aplicativo cliente HTML mais seguro evitando que usuários não autorizados leiam, alterem ou excluam dados. Se você implementar autenticação, os usuários deverão comprovar suas identidades antes de acessarem o aplicativo.
Dica
O processo para definir permissões diferente para clientes do Silverlight – consulte Como habilitar a autenticação em um aplicativo cliente do Silverlight.Aplicativos do LightSwitch habilitados para o SharePoint usam a autenticação do SharePoint para controle de acesso.
Se tiver muitos usuários, você também poderá gerenciar o acesso mais facilmente criando funções de usuário com diversos níveis de acesso a telas específicas e aos dados e, em seguida, atribuir a cada usuário a função apropriada. Por exemplo, um aplicativo de folha de pagamento poderia permitir que funcionários exibam, mas não alterem, as informações da folha de pagamento. No entanto, um supervisor de folha de pagamento poderia receber permissão para exibir e alterar informações do funcionário. Os funcionários receberiam a função Funcionário e o supervisor receberia a função Supervisor.
Também é possível administrar permissões mais facilmente adicionando-se usuários a grupos de segurança no Active Directory e, em seguida, atribuir permissões a esses grupos. Como a associação e as permissões são herdadas, é possível conceder e negar permissões não apenas para um grupo, mas também para todos os subgrupos fazendo uma única alteração. Por exemplo, é possível adicionar Bob ao grupo Sales no Active Directory. Se Sales fosse um subgrupo de Marketing, todas as permissões concedidas a Marketing também seriam concedidas a Bob.
A autenticação e a autorização podem ser implementadas no servidor gravando-se o código do Visual Basic ou do C#; para implementá-lo no nível da tela você precisará adicionar consultas no servidor e basear as telas HTML nessas consultas e, em seguida, gravar o código JavaScript para habilitar ou desabilitar as telas com base em permissões. Você também precisará adicionar um cliente Silverlight para administrar usuários e funções. As telas Usuários e Funções do Silverlight permanecerão disponíveis para a pessoa designada como o Administrador de Aplicativos durante a publicação.
Autenticação
O primeiro passo na proteção do aplicativo é habilitar a autenticação. É possível usar a autenticação de Formulários ou a autenticação do Windows. A autenticação de Formulários é gerenciada pelo próprio aplicativo, e um usuário deve fornecer um nome de usuário e uma senha para acessar o aplicativo. Na autenticação do Windows, as credenciais que foram usadas para fazer logon no computador onde o aplicativo é executado são usadas para autenticar o usuário do aplicativo, e nenhuma senha ou nome de usuário adicional é obrigatório. Em ambos os casos, um administrador do aplicativo mantém uma lista de usuários autorizados; na autenticação de Formulários, o administrador também mantém senhas criptografadas.
Para habilitar a autenticação
No Gerenciador de Soluções, abra o menu de atalho do nó Propriedades e, em seguida, escolha Abrir.
No Designer de Aplicativos, escolha a guia Controle de Acesso.
Na lista Selecione o tipo de autenticação a ser usado:, escolha Usar autenticação do Windows ou Usar autenticação de Formulários.
Se você escolher Usar Autenticação do Windows, escolha o botão de opção Permitir apenas usuários especificados na tela Usuários do aplicativo ou o botão de opção Permitir qualquer usuário autenticado do Windows.
O aplicativo agora exigirá que os usuários forneçam credenciais para acessar o aplicativo.
Permissões
A próxima etapa para proteger o aplicativo cliente HTML é criar permissões. Primeiro, defina um objeto de permissão no Designer de Aplicativos. Em seguida, é possível fazer referência ao objeto no código, em um dos métodos Can como, por exemplo, <Entity>CanUpdate. O código nesses métodos normalmente verifica se o usuário ou a função atual tem a permissão e, em seguida, só permitirá a operação se a permissão for validada.
Para testar o código, execute o aplicativo como um usuário que tenha a permissão e como um usuário que não a tenha. Definindo-se permissões de depuração, é possível representar um usuário quando você testa ou depura o aplicativo.
Para criar uma permissão
No Gerenciador de Soluções, abra o menu de atalho do nó Propriedades e, em seguida, escolha Abrir.
No Designer de Aplicativos, escolha a guia Controle de Acesso.
Na grade Definir permissões ou selecionar permissões que serão usadas na depuração, na coluna Nome, escolha <Adicionar Nova Permissão> e, em seguida, digite um nome programático para a permissão.
O nome deve começar com um caractere alfabético e só pode conter caracteres alfabéticos, numéricos ou sublinhados.
Na coluna Nome para Exibição, digite o nome da permissão que você deseja que seja exibido na tela que o administrador do aplicativo usará para atribuir funções.
Na coluna Descrição, digite uma descrição da permissão.
Para habilitar permissões para depuração
No Gerenciador de Soluções, abra o menu de atalho do nó Propriedades e, em seguida, escolha Abrir.
No Designer de Aplicativos, escolha a guia Controle de Acesso.
Na grade Defina permissões ou selecione permissões para usar para depuração, escolha a permissão que você deseja habilitar para depuração e marque a caixa de seleção Concedido para depuração.
Protegendo o Servidor
A próxima etapa é adicionar o código que verifica permissões na camada de servidor usando métodos de controle de acesso. É possível gravar o código em um método de entidade como, por exemplo, CanUpdate ou um método de consulta como CanExecute. Como prática recomendada, você deve sempre proteger a camada de servidor usando métodos de controle de acesso para proteger os dados no sistema.
Para gravar código para definir permissões de uma entidade
No Gerenciador de Soluções, abra o menu de atalho de um nó da entidade e, em seguida, escolha Abrir.
O Entity Designer dessa entidade é aberto.
No Entity Designer, na barra Perspectiva, escolha Servidor.
Expanda a lista Gravar Código e escolha um método EntityName**_Can**Operation, em que EntityName é o nome da entidade, e Operation é o nome da operação na qual você deseja gravar código.
Dica
Os métodos disponíveis variam de contexto para contexto.Alguns exemplos são CanInsert, CanDelete e CanUpdate.
No Editor de Códigos, digite o código desejado no método EntityName**_Can**Operation.
Por exemplo, o código para permitir que um usuário atualize uma entidade Products com base em uma permissão chamada Can_Edit_Products seria assim:
Private Sub Products_CanUpdate(ByRef result As Boolean) If Application.User.HasPermission(Can_Edit_Products) Then result = True Else result = False End If End Sub
private void Products_CanUpdate(ref bool result) { if (Application.User.HasPermission(Can_Edit_Products)) { result = true; } else { result = false; } }
Para gravar código para definir permissões para uma consulta
No Gerenciador de Soluções, abra o menu de atalho de um nó da consulta e, em seguida, escolha Abrir.
O Designer de Consulta dessa consulta é aberto.
Na lista Gravar Código, escolha o método QueryName**_CanExecute**, em que QueryName é o nome da consulta.
No Editor de Códigos, digite o código desejado no método QueryName**_CanExecute**.
Por exemplo, o código para permitir que um usuário execute uma consulta ViewProducts com base em uma permissão chamada Can_View_Products seria assim:
Private Sub ViewProducts_CanExecute(ByRef result As Boolean) If Application.User.HasPermission(Can_View_Products) Then result = True Else result = False End If End Sub
private void ViewProducts_CanExecute(ref bool result) { if (Application.User.HasPermission(Can_View_Products)) { result = true; } else { result = false; } }
Protegendo o Cliente
Um cenário comum é restringir o acesso a uma tela somente a usuários autorizados. Por exemplo, todos os usuários talvez possam exibir informações de preço, mas somente usuários no departamento Contábil podem alterá-lo. Para fazer isso em uma tela do cliente HTML, você deve primeiro criar uma consulta que verifica se há permissão no método CanExecute e, em seguida, gravar o código JavaScript no método created da tela para habilitar ou desabilitar elementos da interface do usuário.
Dica
Para obter um exemplo de código para verificar se há permissão, consulte "Para gravar código para definir permissões para uma consulta" anteriormente neste tópico.
Para adicionar uma consulta a uma tela
No Designer de Tela, na barra de ferramentas, escolha o botão Adicionar Item de Dados.
Na caixa de diálogo Adicionar Item de Dados, escolha o botão de opção Consulta e, em seguida, a consulta na lista.
Na árvore de conteúdo, escolha o elemento da interface do usuário que você deseja habilitar ou desabilitar. Ele normalmente é o botão que inicia a tela para a qual você deseja restringir o acesso.
Na janela Propriedades, anote a propriedade Nome do elemento de interface do usuário. Você precisará disso para gravar o código.
Para gravar código para definir permissões para uma tela
No designer de tela, escolha o nó Tela e, em seguida, na barra de ferramentas, expanda a lista Gravar Código e escolha criado.
No Editor de Códigos, digite o código no método ScreenName**_created**.
Por exemplo, o código para habilitar ou desabilitar um botão chamado Edit com base em uma consulta chamada EditProducts seria assim:
myapp.ViewProducts.created = function (screen) { screen.getEditProducts().then (function success() { screen.findContentItem("Edit").isEnabled = true; }, function error() { screen.findContentItem("Edit").isEnabled = false; }) };
O código chama a consulta na tela e falhará se o usuário não tiver permissão para executá-lo, invocando o identificador de erros. O botão só será habilitado se a permissão do usuário for verificada. Para ocultar o botão em vez de desabilitá-lo, use isVisible em vez de isEnabled.
Dica
Esse método também desabilitará o botão se a consulta falhar por algum outro motivo.Para obter uma solução mais robusta que exija um código mais complicado, consulte a postagem no blog Usando LightSwitch ServerApplicationContext e WebAPI para Obter Permissões do Usuário.
Administração
A etapa final na habilitação da autenticação é adicionar as telas necessárias à administração do aplicativo. Em um aplicativo cliente HTML, você deve adicionar um cliente Silverlight à solução. Isso fornece as telas Usuários e Funções padrão necessárias à administração. O aplicativo cliente e as telas do Silverlight só permanecem visíveis para a pessoa designada como o administrador padrão durante a publicação ou para todos os usuários que receberem permissões Administrativas depois.
Para adicionar telas de administração
No Gerenciador de Soluções, abra o menu de atalho do nó do aplicativo de alto nível e escolha Adicionar Cliente.
Na caixa de diálogo Adicionar Cliente, escolha o ícone de Cliente de Área de Trabalho.
Na caixa de texto Nome do Cliente, insira um nome para o cliente, por exemplo, Administration e, em seguida, escolha o botão OK.
Para definir um administrador
Siga as etapas em Administrando um aplicativo do LightSwitch.
Importante
Se a autenticação estiver habilitada e você não tiver definido um administrador padrão, você não poderá acessar o aplicativo publicado.
Consulte também
Tarefas
Administrando um aplicativo do LightSwitch
Como habilitar a autenticação em um aplicativo cliente do Silverlight
Outros recursos
Telas do cliente HTML para aplicativos do LightSwitch
Usando LightSwitch ServerApplicationContext e WebAPI para Obter Permissões do Usuário