Personificando um cliente de tubo com nome
Impersonação é a capacidade de uma tarefa ser executada em um contexto de segurança diferente do contexto do processo ao qual pertence a tarefa. A representação permite que o thread do servidor execute ações em nome do cliente, mas dentro dos limites do contexto de segurança do cliente. O cliente normalmente tem um nível menor de direitos de acesso. Para obter mais informações, consulte Representação.
Um subprocesso de servidor de pipe nomeado pode chamar a função ImpersonateNamedPipeClient para assumir o token de acesso do utilizador conectado na extremidade do cliente do pipe. Por exemplo, um servidor de pipe nomeado pode fornecer acesso a um banco de dados ou sistema de arquivos ao qual o servidor de pipe tem acesso privilegiado. Quando um cliente de pipe envia uma solicitação para o servidor, o servidor representa o cliente e tenta acessar o banco de dados protegido. Em seguida, o sistema concede ou nega o acesso do servidor, com base no nível de segurança do cliente. Quando o servidor estiver concluído, ele usará a função RevertToSelf para restaurar seu token de segurança original.
O nível de representação determina as operações que o servidor pode executar ao representar o cliente. Por padrão, um servidor assume o nível de representação SecurityImpersonation. No entanto, quando o cliente chama a função CreateFile para abrir um identificador para a extremidade do cliente do pipe, o cliente pode usar o sinalizador SECURITY_SQOS_PRESENT para controlar o nível de representação do servidor.