Delegação e representação

Em cenários cliente/servidor, é comum que um servidor chame outro servidor para realizar alguma tarefa em nome de um cliente. A situação em que um servidor recebe a autoridade para agir em nome de um cliente é chamada de delegação.

Do ponto de vista da segurança, duas questões se colocam em relação à delegação:

  • O que o servidor deve ter permissão para fazer ao agir em nome do cliente?
  • Que identidade é apresentada pelo servidor quando ele chama outros servidores em nome de um cliente?

Para lidar com esses problemas, COM fornece a seguinte funcionalidade. O cliente pode definir um nível de representação que determina até que ponto o servidor poderá atuar como cliente. Se o cliente conceder autoridade suficiente ao servidor, o servidor poderá representar (fingir ser) o cliente. Ao representar o cliente, o servidor recebe acesso somente aos objetos ou recursos que o cliente tem permissão para usar. O servidor, agindo como um cliente, também pode habilitar o cloaking para mascarar sua própria identidade e projetar a identidade do cliente em chamadas para outros componentes COM.

Diagram that shows how the server acting as the client can enable cloaking.

Considere o cenário ilustrado pela figura anterior, em que A e B são processos em uma máquina diferente de C. O processo A chama B e B chama C. O cliente A define o nível de representação. B define a capacidade de camuflagem. Se A definir um nível de representação que permita a representação, B poderá representar A ao chamar C em nome de A. A identidade apresentada ao processo C será a identidade de A ou a identidade de B, dependendo se a camuflagem foi habilitada por B. Se o cloaking estiver habilitado, a identidade apresentada ao processo C será a de A. Se a ocultação não estiver habilitada, a identidade de B será apresentada a C.

Para Mais informações, consulte os seguintes tópicos: