Usando funções para autorização de cliente

Use a segurança baseada em função para estabelecer uma diretiva de autorização, determinando qual cliente ou clientes permitir e com qual autoridade. Você está decidindo quem deve ser capaz de executar quais ações e acessar quais recursos.

As funções facilitam isso atuando como um mecanismo de controle de acesso invocado sempre que um usuário tenta acessar qualquer recurso do aplicativo. Uma função é basicamente uma lista de usuários — mais precisamente, uma categoria simbólica de usuários que compartilham o mesmo privilégio de segurança. Ao atribuir uma função a um recurso de aplicativo, você está concedendo permissão de acesso para esse recurso a quem for membro dessa função.

Portanto, você pode definir um privilégio de segurança muito específico declarando-o como uma função e, em seguida, atribuindo a função a recursos específicos. Quando o aplicativo é implantado, o administrador do sistema pode preencher a função com usuários reais e grupos de usuários. Quando o aplicativo for executado, o COM+ imporá a política executando verificações de função.

Fundamentalmente, as funções ajudam a proteger seu código, ou seja, os métodos que podem ser chamados pelos clientes de um aplicativo COM+. A associação de função é verificada sempre que um cliente tenta chamar um método exposto por um componente em um aplicativo. Se o chamador estiver em uma função atribuída ao método ou recurso chamado, a chamada será bem-sucedida; caso contrário, ele falha.

Segurança declarativa baseada em função

Com a segurança declarativa baseada em função, você declara administrativamente funções — usando a ferramenta administrativa Serviços de Componentes ou as funções Administrativas — e as atribui administrativamente aos recursos do aplicativo. Onde e como você define a segurança declarativa determinará onde os limites de segurança serão desenhados para seu aplicativo. Para obter mais detalhes, consulte Limites de segurança.

Você pode atribuir uma determinada função a todo o aplicativo, a um componente específico, a uma interface específica em um componente ou a um método específico em uma interface. As atribuições de função são herdadas na cadeia natural de inclusão, ou seja, se você atribuir uma função a um componente, ela será implicitamente atribuída a cada interface e método expostos por esse componente.

Com a disponibilidade de atribuições de função em nível de método, você pode efetivamente ajudar a proteger componentes e interfaces que não foram projetados com a segurança em mente. No entanto, se os métodos em si não forem protegíveis com atribuições de função declarativa, talvez seja necessário fazer a verificação de função programática. Geralmente, é uma boa ideia ter a segurança em mente ao decidir como considerar a funcionalidade de negócios por meio de métodos; caso contrário, você pode se encontrar adicionando código relacionado à segurança no último minuto.

Para obter procedimentos detalhados para definir a segurança baseada em função, consulte Configurando a segurança baseada em função.

Segurança Programática

Em algumas circunstâncias, convém colocar lógica de segurança em componentes enquanto ainda usa a segurança baseada em função. Pode ser que você não consiga — ou opte por não — fatorar todas as decisões de acesso por meio de métodos. Por exemplo, você pode ter um recurso de aplicativo privado, talvez um banco de dados específico, que você deseja permitir que apenas alguns chamadores de um método acessem enquanto exclui outros. Ou você pode ter um único método TransferMoney e querer restringir alguns chamadores limitando o valor que eles podem transferir.

Em tais circunstâncias, você pode fazer a verificação de função no código. Uma API simples é fornecida, permitindo que você verifique se a segurança está ativada e se um chamador ou um usuário específico está em uma determinada função. Essa funcionalidade está disponível somente quando a segurança baseada em função está habilitada. Isso significa que você ainda pode aproveitar a segurança declarativa baseada em função onde ela é suficiente e, em seguida, pode estendê-la programaticamente para um nível mais fino de granularidade quando necessário.

Além disso, ao usar a segurança baseada em função, você tem acesso programático a informações sobre todos os chamadores upstream na cadeia de chamadas para seu componente. Isso é especialmente útil quando você deseja manter uma trilha de auditoria detalhada.

Para obter descrições de como fazer a verificação de função no código e como acessar informações de contexto de chamada de segurança, consulte Segurança de componente programático.

Autorização e autenticação

Uma autorização significativa pressupõe que você esteja confiante de que os clientes são realmente quem eles dizem ser. A verificação da identidade do cliente é tratada separadamente por um serviço de autenticação. Sem autenticação, você está basicamente permitindo que os chamadores entrem no sistema de honra. Para obter descrições da autenticação à medida que ela afeta os aplicativos COM+, consulte Autenticação de cliente.

Projetando funções de forma eficaz

Limites de segurança

Informações de contexto de chamada de segurança

Propriedade de contexto de segurança