11 messaggi dal 10 gennaio 2016
con SoapUI non riesco ad associargli il certificato del servizio.

ma la cosa strana è che ,utilizzando WCF e VB.Net mi valorizza un solo campo mentre gli altri sono impostati a Nothing.


ciao
11.886 messaggi dal 09 febbraio 2002
Contributi
Se volessi procurarmi delle credenziali per accedere all'area di test del webservice cosa dovrei fare? Le rilasciano liberamente e gratuitamente oppure bisogna sottoscrivere un contratto?

Enjoy learning and just keep making
66 messaggi dal 09 febbraio 2005
... forse mi sono spiegato male;
se vuoi investigare sul perché hai dei valori a null
quando invece dovrebbero essere valorizzati, potresti usare
soapUI come *fornitore del servizio* ;
... voce di menu Generate mock Service dopo aver caricato il wsdl

HTH
11 messaggi dal 10 gennaio 2016
purtroppo bisogna sottoscrivere un contratto e non hanno creato delle credenziali fittizie di prova.

ciao
11 messaggi dal 10 gennaio 2016
non sono un esperto di SoapUI e quindi non avevo capito il da farsi.
Ora provo.

grazie
ciao
47 messaggi dal 27 ottobre 2014
Ciao a tutti da Enzo,

ho lo stesso problema e non riesco a venirne a capo. potreste postare le righe di codice utili a comporre il security header in C# o VB.net?

Dopo le esperienze con i WS della SOGEI (risolte grazie a Moreno) credevo di essere ormai esperto di web services .... ma mi illudevo. Il problema è che questi della regione puglia hanno dato come riferimento per creare la Security Header solo del codice in Java (che allego in calce) e che non riesco a convertire in .net.

Grazie a chiunque mi fornisca una dritta, anche solo su documentazione da consultare.

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.cert.Certificate;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.TimeZone;
import javax.xml.crypto.dsig.CanonicalizationMethod;
import javax.xml.crypto.dsig.DigestMethod;
import javax.xml.crypto.dsig.Reference;
import javax.xml.crypto.dsig.SignatureMethod;
import javax.xml.crypto.dsig.SignedInfo;
import javax.xml.crypto.dsig.Transform;
import javax.xml.crypto.dsig.XMLSignature;
import javax.xml.crypto.dsig.XMLSignatureFactory;
import javax.xml.crypto.dsig.dom.DOMSignContext;
import javax.xml.crypto.dsig.spec.C14NmethodParameterSpec;
import javax.xml.crypto.dsig.spec.TransformParameterSpec;
import javax.xml.namespace.Qname;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPConstants;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPHeaderElement;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;
import com.sun.org.apache.xml.internal.security.utils.Base64;

// *** Dichiarazione di alcune costanti quali namespaces xml

final String NAMESPACEURI_SOAPENV = “http://schemas.xmlsoap.org/soap/envelope/”;
final String prefixUri = “http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-“;
final String NAMESPACEURI_WSSECURITY_WSSE = prefixUri + “wssecurity-secext-1.0.xsd”;
final String NAMESPACEURI_WSSECURITY_WSU = prefixUri + “wssecurity-utility-1.0.xsd”;
final String ATTRIBUTENAME_X509TOKEN = prefixUri + “x509-token-profile-1.0#X509v3”;
final String NAMESPACEURI_WSSECURITY_ENC = prefixUri + “soap-message-security-1.0#Base64Binary”;

// *** Creazione di un messaggio SOAP vuoto e ottenimento dell’oggetto che rappresenta l’header del messaggio SOAP:

//message factory
MessageFactory mf12 = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
//SOAP message
SOAPMessage soapMessage = mf12.createMessage();
// Prepare envelope
SOAPPart soapPart = soapMessage.getSOAPPart();
SOAPEnvelope envelope = soapPart.getEnvelope();
// Prepare header
SOAPHeader header = envelope.getHeader();
if (header == null) {
header = envelope.addHeader();
}

// *** Creazione elemento Security come figlio di Header:

SOAPHeaderElement securityElement = header.addHeaderElement(new Qname(NAMESPACEURI_WSSECURITY_WSSE, “Security”, “wsse”));
securityElement.addNamespaceDeclaration(“wsu”, NAMESPACEURI_WSSECURITY_WSU);

// *** Creazione dell’elemento Timestamp come figlio di Security e creazione elementi data/ora creazione e fine validità messaggio SOAP come figli di Timestamp.

// Generate timestamps
GregorianCalendar creationTime = new GregorianCalendar();
GregorianCalendar expirationTime = new GregorianCalendar();
expirationTime.add(Calendar.MINUTE, 5);
//date formatter
DateFormat dfm = new SimpleDateFormat(“yyyy-MM-dd’T’HH:mm:ss’Z’”);
dfm.setTimeZone(TimeZone.getTimeZone(“GMT”));

// Prepare timestamp element
SOAPElement timeStampElement = securityElement.addChildElement(“Timestamp”, “wsu”);
timeStampElement.addAttribute(new Qname(NAMESPACEURI_WSSECURITY_WSU, “Id”, “wsu”), “timestamp”);
SOAPElement createdElement = timeStampElement.addChildElement(“Created”, “wsu”);
createdElement.addTextNode(dfm.format(creationTime.getTime()));
SOAPElement expiresElement = timeStampElement.addChildElement(“Expires”, “wsu”);
expiresElement.addTextNode(dfm.format(expirationTime.getTime()));

// *** Creazione elemento BinarySecurityToken come figlio di Security. Si rimanda la documentazione del metodo getBase64X509() in seguito.

// Prepare security token element
SOAPElement binarySecurityTokenElement = securityElement.addChildElement(“BinarySecurityToken”, “wsse”);
binarySecurityTokenElement.addAttribute(new Qname(“EncodingType”), NAMESPACEURI_WSSECURITY_ENC);
binarySecurityTokenElement.addAttribute(new Qname(NAMESPACEURI_WSSECURITY_WSU, “Id”, “wsu”), “cert”);
binarySecurityTokenElement.addAttribute(new Qname(“ValueType”), ATTRIBUTENAME_X509TOKEN);
binarySecurityTokenElement.addTextNode(getBase64X509());

// *** Creazione oggetto javax.xml.crypto.dsig.XMLSignatureFactory che facilita la configurazione e la gestione della firma di elementi xml (funzionalità di calcolo digest e firma).

// Signature generation
XMLSignatureFactory signFactory = XMLSignatureFactory.getInstance(“DOM”, new org.jcp.xml.dsig.internal.dom.XMLDSigRI());

// *** Specifica del CanonicalizationMethod

C14NmethodParameterSpec spec1 = null;
javax.xml.crypto.dsig.CanonicalizationMethod c14nMethod = signFactory.newCanonicalizationMethod(CanonicalizationMethod.EXCLUSIVE, spec1);

// *** Specifica del DigestMethod

DigestMethod digestMethod = signFactory.newDigestMethod(DigestMethod.SHA1, null);

// *** Specifica del SignMethod
SignatureMethod signMethod = signFactory.newSignatureMethod(SignatureMethod.RSA_SHA1, null);

// *** Specifica dell’elemento Reference che specifica che la firma si effettua sull’elemento timestamp. Opzionalmente è possibile specificare ulteriori riferimenti.

TransformParameterSpec spec2 = null;
Transform transform = signFactory.newTransform(CanonicalizationMethod.EXCLUSIVE, spec2);
List<Transform> transformList = Collections.singletonList(transform);
List<Reference> referenceList = new ArrayList<Reference>();
Reference reference2 = signFactory.newReference(&#8220;#timestamp&#8221;, digestMethod, transformList, null, null);
referenceList.add(reference2);

// *** Specifica dell&#8217;elemento SignedInfo

SignedInfo signInfo = signFactory.newSignedInfo(c14nMethod, signMethod, referenceList);


// *** Creazione elemento Signature come figlio di Security e generazione del digest e della firma con il certificato contenete chiave pubblica e privata fornito dal metodo getPrivateKey() sulla cui implementazione si rimanda in seguito.

DOMSignContext dsc = new DOMSignContext(getPrivateKey(), securityElement);
XMLSignature signature = signFactory.newXMLSignature(signInfo, null);
signature.sign(dsc);

// *** Creazione elemento KeyInfo come figlio di Signature.

// Prepare key info element
SOAPElement signatureElement = (SOAPElement) securityElement.getLastChild();
SOAPElement keyInfoElement = signatureElement.addChildElement(&#8220;KeyInfo&#8221;);

// *** Creazione elemento SecurityTokenReference come figlio di KeyInfo

SOAPElement securityTokenReferenceElement = keyInfoElement.addChildElement(&#8220;SecurityTokenReference&#8221;, &#8220;wsse&#8221;);

// *** Creazione elemento Reference come figlio di SecurityTokenReference e set dell&#8217;attributo URI con il riferimento al certificato pubblico da usare per verificare la firma

SOAPElement referenceElement = securityTokenReferenceElement.addChildElement(&#8220;Reference&#8221;, &#8220;wsse&#8221;);
referenceElement.setAttribute(&#8220;URI&#8221;, &#8220;#cert&#8221;);
referenceElement.setAttribute(&#8220;ValueType&#8221;, ATTRIBUTENAME_X509TOKEN);
47 messaggi dal 27 ottobre 2014
Ciao a tutti,

grazie lo stesso .... sto cercando di cavarmela da solo, ma non riesco a creare un XmlElement come richiesto nella documentazione:

<wsu:Timestamp xmlns:ns10=&#8221;http://www.w3.org/2003/05/soap-envelope&#8221; xmlns:ns11=&#8221;http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512&#8221; wsu:Id=&#8221;_1&#8221;>
<wsu:Created>2010-05-13T10:28:24Z</wsu:Created>
<wsu:Expires>2010-05-13T10:33:24Z</wsu:Expires>
</wsu:Timestamp>


il codice da me utilizzato:

Dim timeStampNode As XmlElement = xmlDoc.CreateElement("wsu", "Timestamp", Nothing)
timeStampNode.SetAttributeNode("ns10", NAMESPACEURI_SOAPENV)
timeStampNode.SetAttributeNode("ns10", NAMESPACEURI_WSSECURITY_WSSE)
timeStampNode.SetAttribute("Id", "_1")

Dim createdNode = xmlDoc.CreateElement("wsu", "Created", Nothing)
createdNode.InnerText = _createDate.ToString("yyyy-MM-ddTHH:mm:ssZ")
Dim expiresNode = xmlDoc.CreateElement("wsu", "Expired")
expiresNode.InnerText = _expireDate.ToString("yyyy-MM-ddTHH:mm:ssZ")
timeStampNode.AppendChild(createdNode)
timeStampNode.AppendChild(expiresNode)

mi crea un xmlElement diverso da quello voluto:

<Timestamp d1p1:ns10="" d1p2:ns10="" Id="_1" xmlns:d1p2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:d1p1="http://schemas.xmlsoap.org/soap/envelope/">
<Created>2016-03-07T12:12:54Z</Created>
<wsu xmlns="Expired">2016-03-07T12:17:54Z</wsu>
</Timestamp>

... qualcuno è così gentile da indicarmi dove sbaglio ? Grazie infinite.

Enzo
47 messaggi dal 27 ottobre 2014
Ciao a tutti (.... ma c'è qualcuno ??),

sono purtroppo ancora bloccato sul problema del collegamento al SIST Puglia.

Utilizzando la classe SignedXML, pur avendo ottenuto il blocco di Security perfettamente conforme a quello richiesto, il server mi risponde:

<faultstring>com.sun.xml.wss.XWSSecurityException: Verification of Signature with ID pvid_5002 failed, possible cause : proper canonicalizedsignedinfo was not produced.</faultstring>

C'è qualcuno che può darmi qualsiasi info su come ottenere un blocco security corretto?

Grazie per qualsiasi tipo di info che mi indicherete.

Il blocco Security da ottenere e simile a questo:

<wsse:Security s:mustUnderstand="1" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="cert">MIIEIzCCAwugAwI..............==</wsse:BinarySecurityToken>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<ec:InclusiveNamespaces PrefixList="s" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" />
</ds:CanonicalizationMethod>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<ds:Reference URI="#timestamp">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<ec:InclusiveNamespaces PrefixList="wsse s" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" />
</ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<ds:DigestValue>RVs0bliqnesdM/P4eOAEup5eFRE=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>FX9OxnY47YGl............==</ds:SignatureValue>
<ds:KeyInfo>
<wsse:SecurityTokenReference wsu:Id="STR-73C9CD3BFD78072C59145814871375874">
<wsse:Reference URI="#cert" />
</wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature>
<wsu:Timestamp wsu:Id="timestamp">
<wsu:Created>2016-03-22T09:53:08Z</wsu:Created>
<wsu:Expires>2016-03-22T09:58:08Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>

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.