Como solicitar permissões usando a segurança do acesso ao código

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 315529
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sumário
CAS (segurança de acesso a código) é um mecanismo de segurança baseada em evidência para assemblies .NET. Você pode usar CAS para controlar o nível de acesso que código tem a recursos protegidos e as operações que o código tem permissão para executar. Um assembly recebe permissões em tempo de execução. Conjunto de permissões preciso é controlado pela diretiva de segurança e é determinado pela evidência do assembly que inclui seu nome forte, o publisher, a zona que originou, o local onde ela se origina expresso como uma URL e um hash criptográfico do assembly.

Para reduzir a chance de que seu código pode ser mal utilizadas por outros códigos mal-intencionados, exigem que todos os chamadores são concedidos uma permissão especificado. Se qualquer chamador upstream na pilha de chamada atual não tem a permissão exigida, uma exceção de segurança é lançada.

Todas as classes .NET Framework que executam operações restritas e acessar recursos restritos, como o sistema de arquivos, solicitar permissões para você. Como resultado, quando você usa as classes .NET Framework não deve duplicar as demandas de permissão. No entanto, se você escrever código que acessa um recurso sem usar as classes .NET Framework, você pode solicitar permissões através de programação ou declarativamente por meio de atributos.

Você também pode solicitar permissões por meio de programação ou declarativamente se você deseja prever a verificação de segurança. Por exemplo, você pode ter um aplicativo que executa um cálculo demorado. Após o cálculo, os resultados são salvos em um arquivo. Nesse caso, exigem direitos de acesso a arquivo antes de iniciar o cálculo. Isso garante que tem as permissões corretas antes de iniciar o cálculo demorado.
back to the top
Mais Informações

Requisitos

Os seguintes itens descrevem recomendado de hardware, software, infra-estrutura de rede, habilidades e conhecimento e service packs que você deve ter:
  • O Visual Studio .NET 2002 ou posterior

Conhecimento anterior que é necessário:
  • Desenvolvimento de aplicativos Microsoft WinForm com o Visual Studio .NET
  • Conceitos básicos do Microsoft Visual translation from VPE for Csharp

Voltar ao início

Solicitando permissões programaticamente

Neste procedimento você irá criar um aplicativo do Windows translation from VPE for Csharp usadas para programaticamente exigem a permissão para ler e gravar na pasta C:\Temp.
  1. Inicie o Visual Studio.NET e crie um novo translation from VPE for Csharp Visual aplicativo do Windows chamado CASTest .
  2. Arraste um controle de botão da caixa de ferramentas para o início do formulário e defina a propriedade Name para btnDemand e a propriedade Text para Demand .
  3. Arraste um controle de rótulo da caixa de ferramentas, posicione o controle de rótulo do botão e, em seguida, defina a propriedade Name para lblResult . Expanda o rótulo para a largura total do formulário e, em seguida, aumente a intensidade para conter várias linhas de texto.
  4. Clique duas vezes em demanda para adicionar um procedimento de evento de clique ao arquivo Form1.cs. Página à parte superior do arquivo e, em seguida, insira as seguintes instruções USING abaixo as instruções existentes:
    using System.Text;using System.Security;using System.Security.Permissions;					
  5. Retornar à demanda clique em procedimento de evento na parte inferior do arquivo e adicione o código a seguir para criar um objeto StringBuilder , que é usado para criar uma seqüência de resultado e um objeto FileIOPermission que você usa para solicitar a permissão para acessar a pasta C:\Temp:
    // Create a StringBuilder used to create the result stringStringBuilder resultText = new StringBuilder();// Create an FileIOPermission for accessing the C:\Temp folderFileIOPermission permFileIO =new FileIOPermission(FileIOPermissionAccess.AllAccess, "C:\\Temp");lblResult.Text = "";					
  6. Adicione o seguinte código em um bloco try para solicitar a permissão para acessar a pasta C:\Temp chamando o método Demand do objeto FileIOPermission . O código também acrescenta uma mensagem que indica êxito para o objeto StringBuilder .
    try {// Demand the permission to access the C:\Temp folder.permFileIO.Demand();resultText.Append("The demand for permission to access the C:\\Temp folder succeeded.\n\n");}					
  7. Adicione o seguinte bloco para processar uma SecurityException catch:
    catch (SecurityException se){resultText.Append("The demand for permission to access the C:\\Temp folder failed.\nException message: ");resultText.Append(se.Message);resultText.Append("\n\n");}					
  8. Após o bloco catch, adicione o seguinte código para exibir o texto de resultado:
    lblResult.Text = resultText.ToString();					
  9. Crie o projeto.
  10. No menu Debug , clique em Iniciar para executar o aplicativo.
  11. Clique em por demanda para solicitar a permissão para acessar a pasta C:\Temp.

    A demanda é bem-sucedida porque o código que executa no computador local recebe o conjunto de permissões FullTrust .
  12. Sai do aplicativo.

Voltar ao início

Usando diferentes permissões concedidas

Você pode usar conjuntos de permissões para organizar as permissões em coleções convenientes. Por exemplo, o conjunto de permissões Internet contém permissões que são apropriadas para os assemblies que download pela Internet. Grupos de códigos são usados para associar conjuntos de permissões a conjuntos específicos que são baseados em condições de participação. As condições de participação são avaliadas usando aspectos específicos da evidência de um assembly. Por exemplo, um assembly pode pertencer a um grupo específico de código se o local de origem do assembly estiver associado a uma URL específica.

Neste exemplo, você configurar a diretiva de segurança e, em seguida, você criar um novo grupo de código que é chamado InternetTestGroup . Os membros desse grupo de códigos recebem o conjunto de permissão da Internet interno. Finalmente, você configura o grupo de códigos se aplicam a qualquer assembly com o local original dos C:\CASTestApplication.
  1. Em Painel de controle e, em seguida, clique duas vezes em Ferramentas administrativas .
  2. Clique duas vezes em Microsoft .NET Framework Configuration .
  3. No painel esquerdo, clique em Diretiva de segurança de tempo de execução , clique em computador , clique em Grupos de código e, em seguida, clique em All_Code .

    Você verá uma lista de grupos de códigos internos.
  4. Para criar um novo grupo de códigos, clique para selecionar o nó All_Code , clique com o botão direito do mouse e, em seguida, clique em novo... .
  5. Digite InternetTestGroup no campo nome . Tipo um grupo de teste para atribuir a permissão Internet definido para assemblies localizados no C:\CASTestApplication pasta na Descrição de campo e clique em Avançar .
  6. Agora, você deve especificar uma condição que determina os assemblies que são atribuídos a permissão definida que está associada a este grupo de códigos. Na lista suspensa Escolha o tipo de condição para este grupo de códigos , clique em URL .
  7. Digite o nome de arquivo //c:/CASTestApplication/* a URL do campo e clique em Avançar .
  8. Agora, você deve especificar o conjunto de permissão que será associado ao novo grupo de códigos.

    Na lista drop-down Usar existente permissão definida , clique em Internet , clique em Avançar e em seguida, clique em Concluir .
  9. Clique para selecionar InternetTestGroup no painel esquerdo, clique com o botão direito do mouse e, em seguida, clique em Propriedades .
  10. Selecione Este nível de diretiva só terá as permissões do conjunto de permissões associadas a este grupo de códigos caixa de seleção, clique em Aplicar e, em seguida, clique em OK .

    Esta etapa impede que os assemblies que são membros deste grupo de código receba permissões adicionais de outros grupos de código.
  11. Executar o Microsoft Windows Explorer e, em seguida, criar a pasta C:\CASTestApplication.
  12. Vá para a pasta bin\Debug, que está localizada na sua pasta de projeto CASTest e, em seguida, copie o assembly CASTest.exe para a pasta C:\CASTestApplication.
  13. Clique duas vezes em CASTest.exe na pasta C:\CASTestApplication para iniciar o aplicativo.
  14. Observe que uma mensagem é exibida e notifica você que o aplicativo está sendo executado em um contexto parcialmente confiável. Isso ocorre porque o conjunto de permissões Internet está associado com o assembly.

    Descartar a mensagem.
  15. Clique em por demanda .

    Desta vez, a demanda para a permissão para acessar a pasta C:\Temp negada e uma exceção de segurança é lançada. Isso ocorre porque os aplicativos de Internet não têm permissão para acessar o sistema de arquivos local, seja através do uso do armazenamento isolado.
  16. Sair do aplicativo.

Voltar ao início

Solicitando permissões declarativamente

Em adição aos solicitando permissões imperativamente através de código, você também pode usar atributos para solicitar permissões. Atributos podem ser associados a classes ou métodos individuais.

Neste exemplo, você usar atributos para declarativamente exigem a permissão para acessar o C:\Temp pasta.
  1. Retorne ao Visual Studio .NET.
  2. Adicione o seguinte método auxiliar à classe Form1:
    private void DemandFileIOPermission(){}					
  3. Adicione o seguinte atributo imediatamente antes que o método DemandFileIOPermission :
    [FileIOPermissionAttribute(SecurityAction.Demand, Read = "C:\\TEMP")]					
  4. Adicione um novo botão ao formulário arrastando um controle de botão da caixa de ferramentas para o formulário. Colocar no novo botão ao lado para o primeiro botão, defina a propriedade Name para btnDeclarativeDemand e defina a propriedade Text para Demand declarativa .
  5. Clique duas vezes Demanda declarativa para adicionar um procedimento de evento de clique ao arquivo Form1.cs.
  6. Adicione o seguinte código para o evento click que você acabou de criar.

    Esse código é semelhante ao código no botão de demanda . No entanto, em vez de chamar explicitamente o método de demanda de permissão especificado, você chamar a função auxiliar DemandFileIOPermission que tem o atributo FileIOPermission .
    // Create a StringBuilder used to create the result stringStringBuilder resultText = new StringBuilder();lblResult.Text = "";try {// Call the helper functionDemandFileIOPermission();resultText.Append("The declarative demand for permission to access the C:\\Temp folder succeeded.\n\n");}catch (SecurityException se){resultText.Append("The declarative demand for permission to access the C:\\Temp folder failed.\nException message: ");resultText.Append(se.Message);resultText.Append("\n\n");}lblResult.Text = resultText.ToString();						
  7. Salvar e, em seguida, recrie o projeto.
  8. No menu Debug , clique em Iniciar para executar o aplicativo.
  9. Clique em demanda declarativa .

    O resultado é uma chamada para o método auxiliar particular DemandFileIOPermission . Os atributos que estão associados com esse método automaticamente resultam em uma demanda de permissão para acessar a pasta C:\Temp. Por padrão, a demanda é bem-sucedida. Código que executa no computador local recebe o conjunto de permissões FullTrust .
  10. Execute o Windows Explorer para mover para a pasta bin\Debug na sua pasta de projeto de CASTest e, em seguida, copie o assembly CASTest.exe para a pasta C:\CASTestApplication.
  11. Clique duas vezes em CASTest.exe na pasta C:\CASTestApplication para executar o aplicativo.
  12. Novamente, aparece uma mensagem informando que o aplicativo está sendo executado em um contexto parcialmente confiável. Isso ocorre porque o conjunto de permissões Internet está associado com o assembly.

    Descartar a mensagem.
  13. Clique em demanda declarativa .

    A demanda para a permissão para acessar a pasta C:\Temp negada e uma exceção de segurança é lançada. Isso ocorre porque os aplicativos de Internet não têm permissão para acessar o sistema de arquivos local, seja através do uso do armazenamento isolado.

Voltar ao início

REFERÊNCIAS

Para obter mais informações sobre como usar a segurança do acesso ao código, visite o seguinte site da MSDN: Voltar ao início

Propriedades

ID do Artigo: 315529 - Última Revisão: 12/07/2015 08:34:27 - Revisão: 2.2

Microsoft Visual Studio .NET 2003 Professional Edition, Microsoft Visual Studio .NET 2003 Enterprise Architect, Microsoft Visual Studio .NET 2003 Enterprise Developer, Microsoft Visual Studio .NET 2002 Professional Edition, Microsoft Visual Studio .NET 2002 Enterprise Architect, Microsoft Visual Studio .NET 2002 Enterprise Developer

  • kbnosurvey kbarchive kbmt kbhowtomaster KB315529 KbMtpt
Comentários