如何在Soap Web服务中禁用验证响应

时间:2015-07-02 15:03:08

标签: .net ssl soap-client

我必须打电话给肥皂网服务。

要调用此Web服务,我必须使用SSL证书并使用X509Certificate。

所以,我已经构建了这段代码

//certificato 509v3
string pathCertificato = @"C:\Users\michele.castriotta\Desktop\Certificati\keystore_healthnetbr.pfx";
X509Certificate2 certificatoLocale = new X509Certificate2(File.ReadAllBytes(pathCertificato), "changeit");
AsymmetricAlgorithm chiavePrivta = certificatoLocale.PrivateKey;
PublicKey chiavePubblica = certificatoLocale.PublicKey;


PianoAssistenzialeResidenzialeClient ws_Client = new PianoAssistenzialeResidenzialeClient("PianoAssistenzialeResidenzialePort", "https://edottotest.sanita.regione.rsr.rupar.puglia.it/nsisr/PianoAssistenzialeResidenzialeService");
ws_Client.ClientCredentials.ClientCertificate.Certificate=certificatoLocale;
ws_Client.ClientCredentials.ServiceCertificate.DefaultCertificate = certificatoLocale;

EndpointIdentity identity = EndpointIdentity.CreateDnsIdentity("HEALTHNETBR");
EndpointAddress address = new EndpointAddress(new Uri("https://edottotest.sanita.regione.rsr.rupar.puglia.it/nsisr/PianoAssistenzialeResidenzialeService"), identity);
ws_Client.Endpoint.Address = address;

ws_Client.ClientCredentials.UserName.UserName = "HEALTT";
ws_Client.ClientCredentials.UserName.Password = "ceit";

PianoAssistenzialeResidenzialeService.attributiAutorizzativi attributi = new PianoAssistenzialeResidenzialeService.attributiAutorizzativi();
attributi.identificativoServizio="getElencoPAIDomiciliare";
attributi.identificativoUtente="HEAR";
attributi.ruoloIstituzionale="RI282";

PianoAssistenzialeResidenzialeService.getElencoPAIDomiciliare request = new PianoAssistenzialeResidenzialeService.getElencoPAIDomiciliare();

elencoPAIDomiciliareRequest criteriRicerca = new elencoPAIDomiciliareRequest();
criteriRicerca.codiceNazionale = "160";
criteriRicerca.distretto = "3";
criteriRicerca.tipologiaAssistenzaAutorizzata = 0;
criteriRicerca.dataInizioRiferimento = "01/12/2000";
criteriRicerca.dataFineRiferimento = "01/07/2015";

request.criteriRicerca = criteriRicerca;


getElencoPAIDomiciliareResponse response = ws_Client.getElencoPAIDomiciliare(attributi, request);

但是,我有这个错误:

  

无法解析用于验证的KeyInfo签名:KeyInfo'SecurityKeyIdentifier \ r \ n(\ r \ n IsReadOnly = False,\ r \ nCount = 1,r \ n n子句[0] = X509IssuerSerialKeyIdentifierClause(Issuer ='CN = testsoca,C = US',standard ='1342448880')\ r \ n)\ r \ n',AVAILABLE标记'SecurityTokenResolver \ r \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ \ \ \ \ \ \ \ \ \ \ \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n令人刻记'令牌'1,\ r \ n \ n令牌生成[0] =(AllowedReferenceStyle = External,token = System.IdentityModel.Tokens.X509SecurityToken,parameters = System.ServiceModel.Security.Tokens.X509SecurityTokenParameters:\ r \ nInclusionMode:Never \ r \ nReferenceStyle:Internal \ r \ nRequireDerivedKeys:False \ r \ n \ nX509ReferenceStyle :any)\ r \ n)\ r \ n'。

现在,我的问题是: 是否可以禁用验证响应??

2 个答案:

答案 0 :(得分:0)

您可以检查证书OU将您的系统安装为证书颁发机构。 详细信息为here

答案 1 :(得分:0)

我不知道如何使用.net httpclient禁用验证但是 如果您对java感到满意,可以使用以下两个选项之一来实现此目的:

  1. HttpComponents
  2. HttpsURLConnection
  3. 值得一试,因为它们非常易于使用,即使是一个天真的Java开发人员也可以使用它来调用任何Web服务。