Pergunta

Cenário:

  • Um cliente chama WebService A na LAN. WebService A está sendo executado em um pool de aplicativo com Identidade "Serviço de rede".
  • WebService A faz algum trabalho, se prepara para chamar WebService B.
  • WebService B requer um certificado de cliente (* .cer) e SSL.
  • WebService A é em um servidor dedicado Windows 2003.
  • Tudo funciona no ambiente Dev como deveria (mas o desenvolvedor com privilégios de administrador está sempre conectado localmente (nenhuma surpresa!).
  • Os certificados são armazenados no disco em C:\MyCertificates\
  • O certificado é requerido em tempo de execução com sucesso em Dev com este trecho: myWebService.ClientCertificates.Add(new X509Certificate.CreateFromCertFile(certPath));

Problema: WebService A é chamar WebService B, ea exceção retornado é:

A solicitação falhou com status HTTP 403: proibido

isso realmente significa que o certificado não foi enviado o pedido para WebService B.

Eu estou sob a suposição de que a instalação deste cert no navegador não é uma solução. As configurações do navegador normalmente são por usuário, e eu preciso dar o certificado para o usuário cujas credenciais o serviço web está sendo executado. (Por exemplo, Serviço de Rede, Sistema, ou o que está nas configurações IIS AppPool).

Pergunta:? Como posso conceder acesso ou associação ao meu certificado de estar no local do diretório especificado para o serviço de rede ou outra conta não-usuário

Foi útil?

Solução

Esta Microsoft Base de Conhecimento artigo pode ser de uso:

Como chamar um serviço Web usando um certificado de cliente para autenticação em um aplicativo ASP.NET Web ( MS KB901183)

O seu serviço web 'A' seria efetivamente a aplicação ASP.NET chamar o serviço web, conforme descrito no artigo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top