Autenticazione
Autenticazione di primo livello (Certificato)
Per garantire un livello di sicurezza adeguato tutte le connessioni vengono cifrate tramite connessione SSL.
Il canale di comunicazione deve essere autenticato utilizzando il certificato rilasciato.
Tale certificato potrà essere utilizzato sia per l'accesso all'ambiente di sviluppo che successivamente per l'accesso all'ambiente di produzione.
Esempio di utilizzo di un certificato in VS2022 e linguaggio C#
In questo esempio è stato importato direttamente il WSDL all'interno della soluzione.
using System.Net;
using System.Security.Cryptography.X509Certificates;
static void Main()
{
using (WSCI ws = new WSCI())
{
X509Certificate2 cert = new X509Certificate2();
string certPath = "cert.pfx";
string certPassword = "xxxxxx";
cert.Import(certPath, certPassword, X509KeyStorageFlags.DefaultKeySet);
ws.Url = "https://wis01.dev.ecs.coelda.com/ecs-stable/wsci.asmx"; // URL of the service
ws.ClientCertificates.Add(cert);
// ... il tuo codice ...
}
}Esempio di utilizzo di un certificato in linguaggio JAVA
Ecco un esempio approssimativo di come poter scrivere il codice in Java le librerie standard:
import java.io.FileInputStream;
import java.io.IOException;
import java.security.KeyStore;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
public class Main {
public static void main(String[] args) {
String certPath = "cert.pfx";
String certPassword = "xxxxxx";
String urlString = "https://wis01.dev.ecs.coelda.com/ecs-stable/wsci.asmx";
try {
KeyStore keyStore = KeyStore.getInstance("PKCS12");
FileInputStream fis = new FileInputStream(certPath);
keyStore.load(fis, certPassword.toCharArray());
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyManagerFactory.init(keyStore, certPassword.toCharArray());
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(keyManagerFactory.getKeyManagers(), null, null);
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
URL url = new URL(urlString);
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
// ... il tuo codice ...
connection.disconnect();
} catch (IOException | CertificateException | NoSuchAlgorithmException | KeyStoreException | KeyManagementException e) {
e.printStackTrace();
}
}
}
Autenticazione di secondo livello (Utente + Password)
Il secondo livello di autenticazione prevede la trasmissione di ulteriori credenziali di accesso (utente e password) all'interno della chiamata SOAP così come specificato nel contratto del servizio.
Le credenziali di autenticazione di secondo livello devono essere specificate per ciascuna chiamata ai servizi esposti.
Queste credenziali sono rilasciate direttamente dalla nostra azienda e non possono essere modificate.
In caso di violazione e/o smarrimento delle credenziali di accesso vi invitiamo a contattare IMMEDIATAMENTE la Co.El.Da. Software per la loro revoca.
Esempio di utilizzo di di una chiamata utilizzando SoapUI:
Ecco un esempio approssimativo di come poter scrivere il codice Soap per eseguire una chiamata al servizio e passare i parametri necessari alle funzioni.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsci="http://wsci.coelda.it/">
<soap:Header/>
<soap:Body>
<wsci:WSCI_TL001>
<wsci:Autenticazione>
<wsci:Utente>demo</wsci:Utente>
<wsci:Password>demo</wsci:Password>
</wsci:Autenticazione>
</wsci:WSCI_TL001>
</soap:Body>
</soap:Envelope>Con questa funzione è possibile testare le credenziali di accesso.
La risposta alla chiamata in caso di esito positivo sarà la seguente:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<WSCI_TL001Response xmlns="http://wsci.coelda.it/">
<WSCI_TL001Result>
<OperazioneEseguita>true</OperazioneEseguita>
<MessaggioDiErrore/>
</WSCI_TL001Result>
</WSCI_TL001Response>
</soap:Body>
</soap:Envelope>Invece, la risposta alla chiamata in caso di esito negativo sarà la seguente:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<WSCI_TL001Response xmlns="http://wsci.coelda.it/">
<WSCI_TL001Result>
<OperazioneEseguita>false</OperazioneEseguita>
<MessaggioDiErrore>L'acccesso non è riuscito per l'utente 'demo'.</MessaggioDiErrore>
</WSCI_TL001Result>
</WSCI_TL001Response>
</soap:Body>
</soap:Envelope>Last updated