Compartilhar via


Definindo diretiva de segurança com base em funções e objetos

Segurança baseada em função permite que um componente identificar os usuários corrente e suas funções associadas em time de execução.Essa informação é, então, mapeada usando uma diretiva de segurança do acesso ao código para determinar o conjunto de permissões concedidas em time de execução.Para um determinado domínio do aplicativo, o host possa alterar a diretiva de segurança baseada em função de padrão e conjunto um entidade de segurança padrão.Um entidade de segurança representa um usuário e as funções associadas a esse usuário.

Segurança baseada em função costuma ser usada para implementar esquemas de autenticação personalizada.Por exemplo, o host ASP.NET usa segurança baseada em função para implementar um esquema de autenticação com base nas informações de usuário, que ele obtém do Serviços de Informações da Internet (Serviços de Informações da Internet).

A definição do usuário e funções do usuário é específico do aplicativo.Um aplicativo pode ter um conceito diferente do usuário que o Windows.Por exemplo, um aplicativo pode solicitar que o usuário forneça um nome de usuário e uma senha ao fazer logon no aplicativo.Este nome de usuário/senha é independente do nome de usuário/senha com o qual o usuário conectado ao Windows.

Configurando explicitamente entidade de segurança de segurança para um thread

Se o princípio de um thread tiver sido definido, diretiva do domínio do aplicativo e entidade de segurança de segurança padrão são ignoradas.Por exemplo, o thread pode ter conjunto sua própria entidade de segurança usando o CurrentPrincipal estático (de propriedadeShared propriedade no Visual Basic) dos Thread classe. Como alternativa, o thread pode ter adquirido sua entidade de segurança de segurança funcionalidade do segmento que iniciou.

Observação:

O .NET estrutura versão 2.0, quando um thread inicia outro thread ou filas de um item de trabalho para execução pelo pool de segmentos, o contexto do thread (incluindo o entidade de segurança) automaticamente flui para o segmento filho ou o segmento do pool de segmentos.Nas versões do .NET estrutura 1.0 e 1.1, contexto flui somente para segmentos iniciados por um segmento e não para threads do pool de threads.

Se um thread que não tem um entidade de segurança leva uma ação que requer um objeto, uma entidade é fornecida dependendo segurança padrão e diretiva de entidade de segurança do domínio corrente do aplicativo de.

Observação:

Quando um thread que não tenha um entidade de segurança usa o CurrentPrincipal propriedade estática para consultar sua principal funcionalidade, os padrões do domínio do aplicativo são usados para conjunto a entidade de segurança. Ou seja, CurrentPrincipal nunca retorna null.

Política e entidade de segurança de segurança padrão para um domínio do aplicativo

Um host pode conjunto uma entidade de segurança padrão para um domínio do aplicativo chamando o SetThreadPrincipal método. Se uma entidade de segurança padrão foi fornecida, ele é atribuído a qualquer thread que está em execução no domínio do aplicativo, requer uma entidade de segurança e não tiver já uma entidade de segurança.

Observação:

O padrão entidade de segurança não será aplicada automaticamente para o thread que chama SetThreadPrincipal, mesmo se esse thread não tiver uma entidade de segurança. Se o thread posteriormente requer uma entidade de segurança e não tiver adquirido um em média time, ele é atribuído a um objeto de acordo com a entidade de segurança padrão e a diretiva do domínio do aplicativo no qual ele está em execução no time.

Se não tiver sido definida uma entidade de segurança padrão para o domínio do aplicativo, o thread é atribuído a um objeto de acordo com a diretiva do domínio do aplicativo.Por padrão, a política de um domínio do aplicativo é atribuir uma entidade de segurança genérica não autenticada para o segmento.Um host pode alterar essa diretiva para um domínio do aplicativo, chamando o SetPrincipalPolicy método. Por exemplo, o código gerenciado a seguir cria um domínio do aplicativo e define sua diretiva para usar o objeto corrente do Windows.

Dim ad As AppDomain = AppDomain.CreateDomain("Child")
ad.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
AppDomain ad = AppDomain.CreateDomain("Child");
ad.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
AppDomain^ ad = AppDomain::CreateDomain("Child");
ad->SetPrincipalPolicy(PrincipalPolicy::WindowsPrincipal);

Um host não gerenciado pode acessar domínios de aplicativo usando o _AppDomain interface preserva vtable ordem entre as versões do .NET estrutura.

Consulte também

Referência

System.AppDomain

Outros recursos

Hospedagem do Common Language Runtime

Segurança baseada em função

Conceitos chaves sobre segurança