Open GianM67 opened 7 years ago
Ciao, nel codice che alleghi non vedo come venga costruita la richiesta degli header SAML che gestiscono la sicurezza. Nell'area test comuni ci sono diversi tools per la creazione della connessione ad ANPR ed un esempio di header é il seguente (dalla documentazione Sogei):
`
Grazie. Facciamo dunque una verifica del file Request generato seguendo il tuo esempio e riproviamo ad inviarlo. Nel caso ci risentiamo.
Ciao. Abbiamo fatto un controllo e l'header ci pare simile. A questo punto ti posto il file di Request generato (WS 3002). Penso sia utile.... Nel file di Request non abbiamo inserito il tocken....è giusto? Ti ringrazio per il contributo che puoi darci...
Ciao.
Scusa, ti posto di nuovo il file di Request....ho paura di non averlo postato bene nel messaggio precedente. Grazie.
..porta pazienza...a vista mi sembra manchino dei pezzi...ho allegato il file. Grazie
Buongiorno. Abbiamo effettuato ancora qualche prova ma l'invio della request ci ha sempre restituito l'errore "connessione sottostante chiusa errore imprevisto durante un'operazione di invio". Ti saremmo grati se riuscissi a verificare la correttezza del file che abbiamo allegato. Grazie per un tuo riscontro. Buona giornata. Manzin - Stesei
Salve,allego un esempio di connessione corretta (con rimozione parziale dei valori dei certificati) come da client ti esempio allegato nel test comuni. Da una prima analisi l'errore potrebbe essere nei nodo ds:KeyInfo o nei timestamp connGood.xml.txt
Ciao. Stiamo tentando di generare un file di request simile a quello che ci hai fornito tu come esempio, riscontrando alcune difficoltà. Non vorremmo che alla base ci fosse un problema di ambiente di sviluppo. Noi stiamo infatti programmando le procedure di connessione in mondo .NET (dalle specifiche abbiamo visto che è possibile). E’ vero però che le librerie SAML disponibili per il mondo NET non sono recenti (le ultime datano 2010). Abbiamo poi notato che gli esempi di tools da Voi resi disponibili per il collegamento sono solamente in ambiente Java. Ti chiedo a questo punto: avete esperienza sul buon esito di file di request effettuati tramite .NET? Avete indicazioni (o materiale) da fornirci su questo ambiente? Grazie mille. Ciao. Manzin - Stesei
Buongiorno, posso confermare che in .NET c'è qualche problema, o meglio dire "qualcosa" che manca per configurare il tutto in modo che funzioni. Non ho ancora capito se il "qualcosa" manca del tutto o è solo difficile da reperire (gratuitamente). Non voglio annoiarvi raccontandovi tutti i tentativi fatti e il tempo perso, però posso dare delle indicazioni che possono servire:
Eduardo Gira
Ciao noi abbiamo sviluppato il tutto in .NET ed in verità con non pochi problemi: ma non giurerei sul fatto che tutto sia dovuto al framework stesso. Inizio con il riprendere quanto detto da @Eduardo1977 : vero per il primo punto (versione minimo 4.5) e per il secondo punto (SI a BouncyCastle). Invece per Security Token Service non ce ne stato bisogno. Noi ora siamo al punto che:
Quindi visto questo, sinceramente, non mi viene da pensare che sia un problema del framework ma c'è qualcosa di strano a che a noi sfugge sicuramente nel nostro caso nell'invio del subentro in un ambiente di PRESUBENTRO e ripeto stranamento lo stesso servizio si subentro ma in ambiente di test funziona (ovviamente provato per lo stesso comune quindi con gli stessi dati)
Grazie molte per i contributi. Avendo già utilizzato la versione 4.5 del Framework, proviamo ad utilizzare le librerie BouncyCastle come da Voi suggerito e riporteremo qui i risultati.
Grazie @RaffaeleReale per aver condiviso l'esperienza avuta. Confermo che il problema è in PRESUBENTRO. E confermo che secondo me non c'è motivo di usare un STS, ma come già scritto sembra che per adottare la configurazione migliore si sia quasi obbligati ad utilizzarlo.
Buongiorno. Abbiamo provato ad utilizzare le librerie Bouncy Castle. Al momento ci stiamo però ancora confrontando con un problema che non ci consente di estrarre la chiave privata del certificato. A prescindere da questo, domanda: nel momento in cui inviamo una Request, è prevista la possibilità di avere dei log che ci aiutino a capire più nel dettaglio il motivo dello scarto? Grazie molte.
Buongiorno, se non avete già provato, potrebbe esservi utile aggiungere il 'diagnostic tracing' nel web.config : https://docs.microsoft.com/en-us/dotnet/framework/wcf/diagnostics/tracing/configuring-tracing https://docs.microsoft.com/en-us/dotnet/framework/debug-trace-profile/how-to-create-and-initialize-trace-listeners
Ciao, noi ora a seguito di una richiesta all'assistenza tecnica per l'errore rilevato in fase di presubentro tramite webservice (che menzionavo sopra), la scorsa settimana sono stati effettuati degli interventi da parte di SOGEI ed ora siamo stati in grado di effettuare il tutto con successo. Quindi ora tutti i ws invocati tramite il framework .net sembrano rispondere in modo corretto sia in ambiente di test che presubenrtro. Farò dei test più approfonditi e vi informerò qui.
Ciao. Grazie per l'aggiornamento @RaffaeleReale . Mi confermi solamente che avete utilizzato le librerie BouncyCastle ?
Si, ed in realtà solo per firmare l'IdPostazione
Ciao @RaffaeleReale posso chiederti che tipo di binding avete utilizzato per AnprPortType6001Client ?
Buongiorno, vorremmo capire in cosa consiste "problema-client" per le chiamate in .NET Noi continuiamo a ricevere:
ERRORE: System.ServiceModel.FaultException: Internal Error (from server)
Si potrebbe controllare lato server cosa sta succedendo? Grazie
Eduardo Gira Servizi Locali SpA
Per effettuare un controllo, ci dovrebbe almeno dire il comune e quando ha fatto il test.
Ambiente Presubentro. Comune di di Bistagno (006017). Nell'ultima ora fatte varie chiamate. Grazie.
Salve, se ci inviate la request via mail la verifichiamo, grazie
Si stavo scrivendo.
Ciao @Eduardo1977 in realtà non usiamo la tecnica dei webservices "classica" quindi nessun binding gestito (anche perché non abbiamo capito a che standard rispondono i servizi messi a disposizione da ANPR). Le chiamata le gestiamo tramite post su httpwebrequest: è stato l'unico modo per farli funzionare per quanto ci riguarda.
Ciao @RaffaeleReale, in effetti sto cercando di realizzare il client con la tecnica "classica" importando i WSDL. Secondo me, .NET non "traduce" bene e genera classi che non funzionano correttamente, soprattutto a causa delle policy referenziate in un file esterno "policy-X509v3.xml". Infine, bisognerebbe sempre capire che tipo di binding utilizzare... Comunque, ho provato anche l'altra tecnica, però tramite post su HttpRequestMessage utilizzando un soap corretto e valido. Il risultato è sempre "Internal Error (from server)": dalla sogei proprio oggi mi hanno detto di non provare più chiamate di questo tipo che così non funziona. Grazie a tutti e Auguri di Buon Anno
Ok stamattina finalmente funziona tutto tramite post su HttpRequestMessage ... Ho fatto qualche ritocco al codice, ma in realtà stamattina avevo installato i certificati pubblicati proprio ieri (vedi issue #474: "Aggiungere la CA Postazioni Svil al trust store"). Che dipenda da quello? Adesso non ho tempo di fare altre prove a disinstallare i certificati dallo store...
Non credo sia un problema dei certificati #474 perché già noi abbiamo mandato in produzione presso dei comuni e da loro non abbiamo fatto attività di questo tipo e funziona ugualmente.
Ok grazie ancora
Volendo è possibile usare anche WCF + WIF + le classi di crittografia standard .NET 4.5. Ho testato nel 2016 solo il servizio di connessione di test e pareva funzionare ma la complessità è tale che consiglio comunque l'approccio vecchio stile. Per chi volesse comunque cimentarsi con i WCF sappia che occorre costruire un customer text message encoder per inserire token e timestamp all'interno del messaggio costruito dal WCF ed inoltre utilizzare un custom binding.
Abbiamo generato in ambiente .NET una Request al WS 3002 (ambiente di pre-subentro - Comune di Rivoli - TO). L’abbiamo inviata al sistema utilizzando il metodo POST (riportiamo qui sotto il codice utilizzato). In risposta riceviamo il messaggio "connessione sottostante chiusa errore imprevisto durante un'operazione di invio". Non troviamo questo errore tra quelli generati da ANPR. L’errore può dipendere dal file di Request non corretto? Oppure il file di Request nemmeno arriva al sistema per un errore nel metodo post?
Codice metodo POST: public static void CallWebService(string responseEnvelope) {
Grazie. Manzin - Stesei