Ciao a tutti, scrivo qua perchè stiamo sviluppando l’integrazione con il servizio di invio energia elettrica tramite client C# (utilizziamo le librerie FirmaXadesNet per la firma dell’xml da inviare). Abbiamo seguito la procedura per il rilascio del certificato di autenticazione in ambiente di addestramento e installato il file .p12 correttamente.
Quando andiamo a invocare il servizio da applicativo riceviamo l’errore “14 - Utente non autorizzato”, qualcuno ha riscontrato lo stesso problema? Non capisco se sia un errore lato codice oppure se deve essere abilitata qualche autorizzazione particolare quando viene richiesto il certificato.
Riporto l’estratto per eseguire la chiamata al servizio SOAP:
BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
EndpointAddress address = new EndpointAddress(ConfigurationManager.AppSettings["ENERGIA_ELETTRICA_ENDPOINT"].ToString());
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
binding.MessageEncoding = WSMessageEncoding.Mtom;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
EnergiaElettricaServiceClient client = new EnergiaElettricaServiceClient(binding, address);
Richiesta ric = new Richiesta();
RichiestaData[] data = new RichiestaData[1];
data[0] = new RichiestaData();
ric.serviceId = RichiestaServiceId.invioEnergiaElettrica;
data[0].xml = FirmaXml(); //contiene il messaggio xml valido per l’XSD
data[0].dichiarante = partitaIvaDichiarante; //l’identificazione dell’utente dichiarante (partita iva del soggetto per il quale si sta inviando il messaggio).
ric.data = data;
client.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySerialNumber, ConfigurationManager.AppSettings["CERT_AUTHENTICATION_SERIAL"].ToString());
response = client.process(ric);
Aggiungo una domanda: nel tracciato della richiesta il campo “dichiarante” indica la partita IVA del del soggetto per il quale si sta inviando il messaggio, questo campo in ambiente di addestramento può essere valorizzato con qualsiasi partita IVA o esistono delle restrizioni?
Buongiorno a tutti,
sto cercando di fare la spedizione di Gas Naturale 2020 in ambiente di addestramento purtroppo non riesco a passare la validazione XSD.
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
X509Certificate2 cert = new X509Certificate2(PathCertificate, "****");
ServicePointManager.ServerCertificateValidationCallback += ValidateCallback;
BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
EndpointAddress address = new EndpointAddress("https://interoptest.adm.gov.it/MovimentazioniDASWeb/services/MovimentazioniDAS?wsdl");
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;
binding.MessageEncoding = WSMessageEncoding.Mtom;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
client = new DoganaTestEdas.MovimentazioniDASClient(binding, address);
DoganaTestEdas.Richiesta input = new DoganaTestEdas.Richiesta();
DoganaTestEdas.RichiestaData[] data = new DoganaTestEdas.RichiestaData[1];
data[0] = new DoganaTestEdas.RichiestaData();
input.serviceId = DoganaTestEdas.RichiestaServiceId.invioDE815;
data[0].xml = Encoding.Default.GetBytes(PathXmlEdas); //contiene il messaggio xml valido per l’XSD
data[0].dichiarante = "*******"; ; //l’identificazione dell’utente dichiarante (partita iva del soggetto per il quale si sta inviando il messaggio).
input.data = data;
client.ClientCredentials.ClientCertificate.Certificate = cert;
client.process(input);
Usando questo codice mi da errore interno, sto utilizzando Visual Studio 2013 e C# naturalmente.
Non riesco a capire dove sbaglio. Aggiungo che il certificato è corretto perchè da browser accedo al web service e non mi da ‘forbidden’.
Ciao, scusa il ritardo. Allora, anche in ambiente di test la partita IVA (senza IT) deve essere quella del dichiarante. Utente non autorizzato indica un errore in fase di creazione del certificato, ad esempio per il DAS se il dichiarante è una ditta individuale, il rilascio deve essere richiesto con il CF(mi riferisco ai passaggi tramite OpenSSL oppure XCA), altrimenti se è una ditta devi inserire la P.IVA (sempre senza IT). Per i passaggi da seguire, dovrebbe esserci un mio post più su con la descrizione dettagliata.
Ciao, l’errore che indichi si riferisce ad un errore nella verifica del file da parte dei server delle Dogane. in pratica uno o più campi nel tuo tracciato non sono coerenti con quelli richiesti. L’XML che hai allegato è criptato, quindi è difficile capire dove sta l’errore. In che linguaggio sviluppi?
Non che io sappia… Tuttavia forse l’errore sta in quello, dovresti mandarlo “in chiaro”, ovviamente compilandolo secondo i tracciati. Non dimenticare la firma, che è fondamentale.
Ho risolto. Ora ho il problema della firma. Naturalmente per ora allego un file Xml non firmato (il file è codificato correttamente perché lo utilizzo nella mia ditta di carburanti tramite un software per inviare E-DAS all’agenzia delle dogane in ambiente reale). Come mi muovo per la firma?
La verifica della firma è fallita"
Codice Errore ‘1’
Per la firma utilizzo la libreria “Chilkat”, che offre numerosi metodi già pronti per firmare un file XML. In alternativa puoi utilizzare la libreria free “FirmaXades.NET”, che alcuni in questo post sono riusciti a far funzionare. Se decidi di andare su Chilkat, ti posso dare una mano, se ne dovessi avere bisogno.
Usare una libreria piuttosto che un altra mi è indifferente, tanto non le conosco nessuno dei due . Vorrei per lo piu capire se oltre all’uso della libreria ci vuole un certificato per firmare un file xml e dove lo posso prendere. (Io ho un aruba token usb che utilizzo per firmare i pdf della mia azienda). Voi come avere fatto?
Usando Chilkat (che è a pagamento), è possibile leggere dai dispositivi USB ed utilizzarli per firmare, ed è cosi che faccio io. Funziona sia con lettori di SmartCard che con Token USB. Con firma Xades ci ho provato all’inizio e poi l’ho abbandonato, quindi non saprei come aiutarti. In teoria potresti anche usare un certificato in formato p12, ma da quello che so costano cari, e purtroppo i dispositivi che si trovano in vendita non consentono di esportare i certificati.
Probabilmente la soluzione migliore e più conveniente potrebbe essere comprare un token usb, mantenerlo sempre attaccato al pc di riferimento per gli invii E-DAS, e utilizzare la libreria FirmaXadesNet per estrarre il certificato dal token USB via codice in modo da firmare i file Xml.
Potrebbe funzionare tutta questa procedura?