Acesso ao pipe nomeado negado quando não está sendo executado como sistema local

1

Estou trabalhando em um problema no momento em que um aplicativo WCF cria um pipe nomeado, que deve ser acessado por um aplicativo asp.net em execução no IIS. Eu não escrevi o aplicativo WCF, apenas estou tentando dar suporte a ele.

O aplicativo é executado no contexto do Sistema Local, enquanto o Aplicativo IIS é executado no contexto de uma conta do Windows local que é membro do grupo Administradores local. Quando o aplicativo asp.net tenta acessar o pipe nomeado, ele acertará uma exceção Access Denied (AddressAccessDeniedException), e não tenho idéia de onde :-( Eis o que fiz até agora para depurar o problema:

  • Confirmado no Process Explorer que o pipe nomeado existe e está sendo criado quando o aplicativo WCF é iniciado.
  • Eu fiz isso procurando por BaseNamedObjects no Process Explorer e, eventualmente, identifiquei \ BaseNamedObjects \ net.pipe: Exxxxx == ... que pude confirmar que é o canal nomeado no qual estou interessado
  • Como o pipe existe, concentrei-me no IIS e imaginei que fosse um problema de permissões. Então, eu mudei o aplicativo asp.net para executar como sistema local em vez disso ... o problema foi embora
  • Comutado de volta para a conta local do Windows, o problema voltou
  • Comparado os tokens em funcionamento (Sistema Local) versus não funcionais (conta de usuário local) em PE ... o não funcionamento estava ausente SeAssignPrimarytokenPrivilege
  • Pensei que tínhamos encontrado a causa do problema aqui, mas mesmo depois de modificar a política local (e confirmando que o certo estava no token depois de reiniciar), o problema ainda persistia
  • Comparando todos os outros direitos de usuário e opções de segurança com uma máquina em funcionamento, não havia nada diferente entre eles
  • Confirmado que a instância do w3wp está em execução Elevado e o UAC está desativado (Elevado = Sim e Virtualização do UAC = Não permitido no Gerenciador de tarefas)
  • Usado o AccessChk para comparar as permissões no pipe nomeado na máquina que não funciona, elas são idênticas às de uma máquina em funcionamento
  • Verificou o arquivo de manifesto do aplicativo WCF e o comparou com um aplicativo em funcionamento, mas não há nenhuma diferença

E então, aqui estou ... sei que o pipe existe, sei que é uma questão de permissão de algum tipo, mas todas as permissões estão bem. O que estou perdendo ? Existe alguma configuração geral no Windows que pode impedir que um usuário acesse todos os canais nomeados?

Eu sei que poderia alterar a configuração "Access Named Pipes Anonymously", mas não quero alterar isso, pois ele não está configurado em uma máquina em funcionamento, portanto, isso não me levará diretamente à causa raiz. Eu também vi algumas menções de "Access Named Pipes Remotely" no google, mas eu não sei se isso é um erro de digitação ... não são nomeados pipes locais por sua própria definição ??

Obviamente, fiz algumas pesquisas próprias sobre isso e encontrei algumas postagens SO e outras postagens no blog, incluindo as abaixo, mas nenhuma delas me ajudou a encontrar a causa raiz.

link

link

    
por another_one 19.04.2017 / 11:02

0 respostas