46 messaggi dal 27 ottobre 2014
Ciao Moreno,

ciao filcat, mi riaggancio alla discussione da me iniziata, in quanto sono fermo anch'io sul problema di autenticazione tramite CNS.

La SOGEI, purtroppo, si limita ad indicare l'utilizzo dello "STANDARD di autenticazione tramite CNS", senza far alcun riferimento a nomi o documentazione alcuna, ed avevo pensato si trattasse di implementare la WS-Security, ovvero firma di un tag del messaggio SOAP e successiva implementazione nell'Header del messaggio tramite il tag Security, così come richiesto da altri web services, ma purtroppo così non è.

Da quello che mi hanno riferito ultimamente, l'autenticazione avviene "semplicemente", "presentando" il certificato della CNS al posto della Basic Authentication.

Mi hanno anche indicato un link dove secondo loro viene indicata la strada giusta e che riporta questo codice come funzionante, anche se riferito ad altro Web Service:

/// <summary>
///
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static HttpWebRequest CreateWebRequest(string url)

{
     Uri uri = new Uri(url);
     HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(uri);
 
     //Questo risolve l'errore 502 (Bad gateway)
     webRequest.ProtocolVersion = HttpVersion.Version10;
     webRequest.Proxy = null;
     webRequest.Headers.Add("SOAP:Action");
     webRequest.KeepAlive = true;
     webRequest.ContentType = "text/xml;charset=\"utf-8\"";
     webRequest.Accept = "text/xml";
     webRequest.Method = "POST";
     webRequest.AuthenticationLevel = AuthenticationLevel.MutualAuthRequired;

     if (certificate != null)
     {
          webRequest.ClientCertificates.Add(certificate);

     } 
     return webRequest;
}



dove sembra che
webRequest.AuthenticationLevel = AuthenticationLevel.MutualAuthRequired;
e
webRequest.ClientCertificates.Add(certificate);

risolvano il problema, ma non so come impostare tali parametri nella struttura di codice da me gestita:

       ......................................................
       Dim myBinding As New BasicHttpsBinding()
       myBinding.Security.Mode = BasicHttpsSecurityMode.Transport
       ' provo as indicare il tipo di accesso tramite certificato
       myBinding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.Certificate
       myBinding.MessageEncoding = WSMessageEncoding.Mtom
       System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12
       Client = New FSE_ComMetadati.comunicazioneMetadatiPTClient(myBinding, ea)
       ' m_CNS_Cert contiene il certificato estratto dalla CNS
       Client.ClientCredentials.ClientCertificate.Certificate = m_CNS_Cert
       Client.Endpoint.Contract.ProtectionLevel = ProtectionLevel.Sign
       .....................................................................
       .......................................................................
       FSE_Ricevuta = Client.comunicazioneMetadati(FSE_Richiesta)




ma una volta effettuata la Request, il server SOGEI risponde inesorabilmente:


<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Header xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"/>
  <env:Body>
    <env:Fault>
      <faultcode>env:Client</faultcode>
      <faultstring>Internal Error (from client)</faultstring>
    </env:Fault>
  </env:Body>
</env:Envelope>


Sono sicuro che alla fine si tratterà di impostare correttamente 2/3 righe di codice .... Moreno, siamo nelle tue mani ...

Grazie mille.

Enzo
1 messaggio dal 23 ottobre 2019
Scusate l'intromissione e se c'entro poco con .net

Sto anch'io implementando l'invio degli allegati in MTOM ma in PHP, è da una settimana che faccio prova ma con esito negativo, in quanto ricevo sempre l'errore "Inserimento non ammesso".

Vi allego la mia request ditemi se sbaglio qualcosa.
grazie

--urn:uuid:922d4155-03de-44cd-b077-4e62cb4b6458
Content-Type: application/xop+xml; charset=utf-8; type="text/xml"
Content-Transfer-Encoding: binary
Content-ID: <urn:uuid:5fe42324-9ef4-4696-baf9-76c4ad075a5d>

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://comunicazionemetadatirichiesta.xsd.fse.ini.finanze.it" xmlns:ns2="http://tipodaticomunicazionemetadati.xsd.fse.ini.finanze.it" xmlns:xmlmime="http://www.w3.org/2004/11/xmlmime" xmlns:xop="http://www.w3.org/2004/08/xop/include"><SOAP-ENV:Body><ns1:ComunicazioneMetadatiRichiesta><ns1:IdentificativoUtente>PROVAX00X00X000Y</ns1:IdentificativoUtente><ns1:pinCode>LsQiYtf7FcpMYVKvf+51V6t1BSUk+E/dGOB2vmwNl0DhirZ8QzvTI2Ay04p6+t+eH+DjzkJpXrlEEZvKRz6wKVNOt7uYSQUYKBIFcbcEQJnqT7zTgtz7jV3BK+QaEphfKRsOP1Iejv+vKvJ/3te2xNMHPkNYZIAjxEQHftw9Swk=</ns1:pinCode><ns1:IdentificativoOrganizzazione>190</ns1:IdentificativoOrganizzazione><ns1:RuoloUtente>APR</ns1:RuoloUtente><ns1:ContestoOperativo>TREATMENT</ns1:ContestoOperativo><ns1:IdentificativoAssistito>TSTTTN71A01H501B</ns1:IdentificativoAssistito><ns1:PresaInCarico>true</ns1:PresaInCarico><ns1:TipoAttivita>CREATE</ns1:TipoAttivita><ns1:Metadato><ns2:TipologiaStrutturaProdDoc>Territorio</ns2:TipologiaStrutturaProdDoc><ns2:TipoMime>application/pdf</ns2:TipoMime><ns2:LivelloConfidenzialita>N</ns2:LivelloConfidenzialita><ns2:TipologiaDocumentoAlto>REF</ns2:TipologiaDocumentoAlto><ns2:TipologiaDocumentoMedio>11488-4</ns2:TipologiaDocumentoMedio><ns2:TipologiaDocumentoBasso>PDF</ns2:TipologiaDocumentoBasso><ns2:DataValidazioneDocumento>20191023143936</ns2:DataValidazioneDocumento><ns2:RuoloAutore>APR</ns2:RuoloAutore><ns2:IstituzioneAutore>190201</ns2:IstituzioneAutore><ns2:CodiceFiscaleAutore>PROVAX00X00X000Y</ns2:CodiceFiscaleAutore><ns2:AssettoOrganizzativo>AD_PSC039</ns2:AssettoOrganizzativo><ns2:TipoAttivitaClinica>CON</ns2:TipoAttivitaClinica><ns2:DataInizioPrestazione>20191023143936</ns2:DataInizioPrestazione><ns2:DataFinePrestazione>20191023143936</ns2:DataFinePrestazione></ns1:Metadato><ns1:documento><xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:documento.pdf"/></ns1:documento></ns1:ComunicazioneMetadatiRichiesta></SOAP-ENV:Body></SOAP-ENV:Envelope>

--urn:uuid:922d4155-03de-44cd-b077-4e62cb4b6458
Content-Type: application/pdf; charset=UTF-8
Content-Transfer-Encoding: binary
Content-ID: <documento.pdf>

%PDF-1.6
%&#65533;&#65533;&#65533;&#65533;
13 0 obj
<</Linearized 1/L 90541/O 15/E 85941/N 1/T 90230/H [ 498 209]>>
endobj

30 0 obj
<</DecodeParms<</Columns 5/Predictor 12>>/Filter/FlateDecode/ID[<3E2F2B4733B3374A962713BF87891DB6><3E2F2B4733B3374A962713BF87891DB6>]/Index[13 27]/Info 12 0 R/Length 95/Prev 90231/Root 14 0 R/Size 40/Type/XRef/W[1 3 1]>>stream
h&#65533;bbd` ``b``&#65533; " c&#65533;$#&#65533;d&#65533;
f&#65533; &#65533;u &#65533;&#65533; D&#65533;&#65533; "&#1614;&#65533;E,&#65533;$&#65533;&#65533;e &#65533;c &#65533;d&#65533; &#65533;&#1166;`&#65533; `&#65533;&#1216;&#65533;&#65533;&#65533;w &#65533;&#65533;v- &#65533;&#65533;&#65533;H &#65533;&#65533;&#65533;&#65533;&#65533;O&#65533; &#65533;^ +
endstream
endobj
startxref
0
%%EOF

39 0 obj
<</Filter/FlateDecode/I 139/Length 117/O 97/S 41/V 113>>stream
h&#65533;b``&#65533;g``&#65533;g```&#65533;&#65533;&#640;
&#65533;&#65533;&#65533;&#65533;&#65533;&#65533; CGG &#65533;0? 30&#65533;1 043&#65533;3 &#65533;&#65533;_o`&#65533;`&#65533;m &#65533;n&#65533;tA&#65533;0s &#65533; &#65533; &#65533;*F F&#65533;&#65533;`&#65533;&#65533;&#65533; &#65533;&#65533; ,!|&#65533; @&#65533;&#65533;&#65533;%C&#65533;$ &#65533;be`&#65533;?
U&#65533; &#65533; &#1500; &#65533;
endstream
endobj
14 0 obj
<</AcroForm 31 0 R/Metadata 3 0 R/Outlines 7 0 R/Pages 11 0 R/Type/Catalog>>
endobj
15 0 obj

etc etc etc

startxref
116
%%EOF

--urn:uuid:922d4155-03de-44cd-b077-4e62cb4b6458--
46 messaggi dal 27 ottobre 2014
... da una prima occhiata mi sembra che manchi la Basic Authentication e che stai tentando di allegare il PDF anzichè il CDA2 ...
11.868 messaggi dal 09 febbraio 2002
Contributi
Ciao Enzo,
purtroppo non ti so aiutare. Quando mi sono scontrato col portale delle vendite pubbliche ci ho messo 3 mesi a capire che tipo di richiesta dovevo mandare. È impossibile trovare la soluzione senza poter fare prove.

Se non riesci a trovare la soluzione ti posso consigliare, molto a malincuore, di abbandonare WCF e comporre la richiesta a mano per poi inviarla con HttpClient o WebRequest come hanno segnalato loro.
Anch'io avevo provato con WCF, poi a un certo punto ho abbandonato perché per mia inesperienza su WS-Security non sapevo che impostazioni toccare per fargli produrre esattamente la richiesta voluta da Sogei.

Io trovo assurdo che migliaia di sviluppatori debbano patire questi problemi e che non esistano delle SDK per tutti i linguaggi.

ciao,
Moreno

Enjoy learning and just keep making
46 messaggi dal 27 ottobre 2014
Ciao Moreno e grazie per la tua risposta.

I tuoi consigli mi hanno sempre portato alla soluzione, per cui sono disposto anche a provare con HttpClient o WebRequest.

In questo caso, considerando che ho già la SOAP già correttamente compilata, mi potresti consigliare qualche post con un esempio di utilizzo di tali classi?

Grazie ancora. Enzo.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.