Compartilhar via


A definição de objetos e a diretiva de segurança baseada em função

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

Segurança baseada em função é comumente usada para implementar esquemas de autenticação personalizada. Por exemplo, o ASP.NET host 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 a partir do Internet Information Services (IIS).

A definição do usuário e de 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 senha ao fazer logon no aplicativo. Este nome de usuário/senha é independente do nome de usuário/senha com a qual o usuário conectado no Windows.

Configurando explicitamente por um segmento Principal

Se o principal para um segmento tiver sido definido, o padrão principal e a diretiva de domínio do aplicativo são ignorados. Por exemplo, o thread pode ter definido seu próprio principal usando o CurrentPrincipal propriedade estática (Shared propriedade em Visual Basic) da Thread classe. Como alternativa, o thread pode ter adquirido sua principal do segmento que iniciou a ele.

Observação

No.NET Framework 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 objeto de segurança) automaticamente flui para o segmento filho ou thread do pool.No.NET Framework versões 1.0 e 1.1, o contexto flui somente segmentos iniciados por um thread e não threads do pool.

Se um thread que não tem uma entidade de segurança toma uma ação que requer um objeto, uma entidade é fornecida com base no segurança padrão e diretiva de entidade de segurança da domínio de aplicativo atual.

Observação

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

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

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

Observação

O principal padrão não será aplicado automaticamente para o thread que chama SetThreadPrincipal, mesmo se esse thread não tem um principal.Se o thread posteriormente requer uma entidade e não adquiriu um enquanto isso, 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 momento.

Se uma entidade de segurança padrão não tiver sido definida para o domínio de aplicativo, o segmento é atribuído a um objeto de acordo com a diretiva de domínio do aplicativo. Por padrão, a diretiva de um domínio de aplicativo é atribuir um objeto genérico não autenticado para o segmento. Um host pode alterar essa diretiva para um domínio de aplicativo, chamando o SetPrincipalPolicy método. Por exemplo, o código gerenciado a seguir cria um domínio de aplicativo e define sua diretiva para usar o objeto atual 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 os domínios de aplicativo usando o _AppDomain interface, que preserva a ordem de vtable entre versões do.NET Framework.

Consulte também

Referência

System.AppDomain

Conceitos

Visão geral de hospedagem.

Segurança baseada em função

Outros recursos

Conceitos chaves sobre segurança