47 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--
47 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.886 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
47 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.
1 messaggio dal 08 aprile 2011
Ciao Enzo58 e Moreno,

ho visto tutti i messaggi in merito alle richieste SOAP Sogei è mi trovo allo stesso punto: non riesco a capire come inviare la richiesta tramite il client autogenerato in modalità MutualAuthRequired.

Dopo vari tentativi sono riuscito a inviare la richiesta utilizzando i cliente con l'autenticazione basic e con le richieste in modalità HttpWebRequest e solo adesso con le problematiche legate all'invio del certificato client sono arrivato al tuo post su questo forum.

Nella modalità "HttpWebRequest" riesco a leggere il certificato dalla cns e inviarlo specificando dopo l'inserimento del pin:

req.AuthenticationLevel = AuthenticationLevel.MutualAuthRequired;
req.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateRemoteCertificate);

dove con la RemoteCertificateValidationCallback forzo l'accettazione del certificato non valido per l'area di test.

Alla fine sei riuscito a risolvere la questione? Mi puoi dare qualche suggerimento?

Grazie mille
Angelo
47 messaggi dal 27 ottobre 2014
Ciao Angelo,

dopo varie vicissitudini sono riuscito a risolvere ,,, il mio problema era dovuto al fatto che nella documentazione è scritto che nella basic authentication il PIN va crittografato (ergo si desume che con la CNS debba andare in chiaro ? .... NO ... non va valorizzato affatto. Dopo le mie lamentele a SOGEI sul depistaggio che avevo subito (pensavano che non fossi capace di leggere la CNS ed estrarre il certificato) hanno inserito l'errore che segnala che il PIN non va indicato ....

Saluti.

PS: non ho seguito la strada della WebRequest indicata da loro (obsoleta) ma quella più recente che utilizza WCF.

Saluti.
1 messaggio dal 23 dicembre 2019
risolto
Modificato da devcsharp il 10 gennaio 2020 12:11 -

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.