Domanda

Ho un servizio Web protetto che richiede l'applicazione di terze parti che consuma per passare un certificato client. Ho installato il certificato sul servizio web di fornitura in produzione e anche sul client. Questo processo attualmente funziona correttamente per altri client con una configurazione simile. La versione corrente è scritta in .NET 3.5 e funziona perfettamente sulla mia macchina di sviluppo sotto cassini (e in esecuzione autonoma), ma si rifiuta di lavorare sulla mia macchina di produzione con lo stesso codice e la stessa configurazione del certificato. Ho confermato che il servizio web del provider accetta il certificato installato sul client tramite il browser, ma quando il certificato viene aggiunto a una chiamata al servizio web a livello di codice, ottengo un 403, l'accesso viene negato. Ho emesso l'impronta digitale del certificato aggiunto alla chiamata prima che invii la richiesta al servizio Web protetto ed è effettivamente il certificato corretto allegato. Penso che da qualche parte lungo la linea non abbia accesso alla parte della chiave privata del certificato.

Qualche idea?

Nota: ho consentito al processo IIS di accedere alle relative directory ~ / crypto.

Questo è C # e .NET 3.5

È stato utile?

Soluzione

Ho avuto questo tipo di problema un paio di settimane fa. La soluzione nel mio caso era usare la rappresentazione per ottenere un accesso adeguato all'archivio certificati. Per impostazione predefinita, il thread di lavoro IIS era in esecuzione come utente di sistema e come tale non aveva accesso all'archivio appropriato. L'aggiunta del certificato a un archivio utenti specifico e la rappresentazione di tale utente hanno risolto tutti i problemi.

Continuerò a guardare questa domanda, tuttavia, poiché sono consapevole che la rappresentazione non è una correzione di proiettili magici e che in questo scenario sorgeranno problemi.

Altri suggerimenti

C'è una ragione distinta per cui non ha funzionato sulla mia macchina. Durante l'esecuzione in Visual Studio, viene eseguito con le mie credenziali, utilizzate per installare il certificato. Pertanto, ha automaticamente l'autorizzazione ad accedere all'archivio chiavi privato sulla macchina. Tuttavia quando si esegue al di fuori di cassini (nell'IDE), il processo IIS non aveva autorizzazioni per accedere all'archivio delle chiavi private.

Soluzione temporanea: esegui il dominio app come Sistema locale . Non va bene per la sicurezza, ma mette in funzione l'applicazione (anche se con l'aiuto della banda) fino a quando non riesco a trovare una soluzione più permanente.

Potresti semplicemente schiaffeggiare questo adesivo sul tuo programma e chiamarlo un giorno:

alt text

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