Domanda

Scenario:

  • Un client chiama WebService A sulla LAN. Il servizio Web A è in esecuzione in un pool di app con identità "Servizio di rete".
  • WebService A fa un po 'di lavoro, si prepara a chiamare WebService B.
  • WebService B richiede un certificato client (* .cer) e SSL.
  • WebService A si trova su un server Windows 2003 dedicato.
  • Tutto funziona nell'ambiente Dev come dovrebbe (ma lo sviluppatore con privilegi di amministratore è sempre connesso localmente (nessuna sorpresa!).
  • I certificati sono archiviati su disco in C:\MyCertificates\
  • Il certificato viene applicato correttamente in fase di esecuzione in Dev con questo frammento: myWebService.ClientCertificates.Add (new X509Certificate.CreateFromCertFile (certPath));

Problema: WebService A chiama WebService B e l'eccezione restituita è:

  

Richiesta non riuscita con stato HTTP   403: proibito

Ciò significa che il certificato non è stato inviato nella richiesta a WebService B.

Suppongo che l'installazione di questo certificato nel browser non sia una soluzione. Le impostazioni del browser sono in genere per utente e devo fornire il certificato all'utente con le cui credenziali è in esecuzione il servizio Web. (ad es. servizio di rete, sistema o qualsiasi altra cosa presente nelle impostazioni di IIS AppPool).

Domanda: come posso concedere l'accesso o l'associazione al mio certificato che risiede nella posizione della directory specificata al servizio di rete o ad altri account non utente?

È stato utile?

Soluzione

Questo articolo della Microsoft Knowledge Base può essere utile:

  

Come chiamare un servizio Web utilizzando un certificato client per l'autenticazione in un'applicazione Web ASP.NET ( MS KB901183)

Il tuo servizio web 'A' sarebbe effettivamente l'applicazione ASP.NET che chiama il servizio web come descritto nell'articolo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top