Ieri ho trovato un articolo , a video e codice sull'utilizzo delle chiavi API con WCF . Devo bloccare un servizio Web esposto pubblicamente come parte di ciò che dobbiamo fare per conformarci a PCI-DSS , e questo sembra il modo giusto per andare avanti. In passato, questa app e il webservice erano utilizzati solo da un'applicazione desktop VB4 / 5/6 (ora .NET), ma il capo vuole che si aprisse come servizio for-pay per gli altri.
Un cliente finanziario ha utilizzato uno schema con un elemento di informazioni sulla sicurezza nell'intestazione SOAP. Questo elemento aveva 4 attributi, uno era il nome dell'applicazione, gli elementi timestamp e guid sono stati usati per prevenire gli attacchi di replay e il 4 ° attributo era un hash basato sul nome dell'app, il timestamp e il guid, insieme a un "segreto" "(pensa a una password) memorizzata nel registro (per i server Windows o uno speciale file bloccato per i server basati su Unix, con" password "diverse per i nomi di applicazioni differenti). Il "segreto" (o password) era destinato a prevenire situazioni in cui un trojan nel datacenter sarebbe in grado di effettuare chiamate inappropriate o rispondere ad esse. Ovviamente non era WCF in quanto doveva supportare unix, windows e altri sistemi operativi nei data center, ma la tecnica era affascinante e poteva essere utilizzata altrove. Poiché utilizzavano la riscrittura dell'URL, l'elemento di informazioni sulla sicurezza non veniva visualizzato nei WSDL, era necessario conoscerlo dalla documentazione che solo le persone autorizzate ricevevano; se hai aggiunto ?WSDL
alla fine di un endpoint webservice, hai una bugia.