So habe ich ein sehr ähnliches Problem mit diesem Beitrag hier. SOAP KeyInfo valuesHinzufügen von KeyInfo-Referenz in SOAP-Anfrage
Ich möchte eine Referenz in KeyInfo hinzufügen, aber ich kann nicht scheinen, einen Weg zu finden, um es durch Code zu tun. Hier
ist, was die erwartete Ausgabe sein sollte:
<KeyInfo>
<wsse:SecurityTokenReference>
<wsse:Reference URI="#SecurityTest" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
</wsse:SecurityTokenReference>
</KeyInfo>
Und ich habe dies tun oben, wo sie versucht, von verweisen:
<wsse:BinarySecurityToken ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"
EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
wsu:Id="SecurityTest">Base64CertStuffBlahblah
</wsse:BinarySecurityToken>
Jeder Versuch, den Teil nur KeyInfo Schaffung erlaubt Ich füge einen Gegenstand ein, wie einen Schlüssel, um diesen Teil zu füllen, aber ich möchte nur eine Referenz. Mit diesem Code arbeite ich, aber ich erstelle gerade nicht das, was ich will.
//This creates a X509 clause but it's as far as I've got.
//The "keyInfoData" needs to be of a different type to allow custom reference?
var signer = new SignedXmlWithId(doc) {SigningKey = Key};
KeyInfo keyInfo = new KeyInfo();
KeyInfoX509Data keyInfoData = new KeyInfoX509Data();
keyInfoData.AddCertificate(cert);
keyInfo.AddClause(keyInfoData);
signer.KeyInfo = keyInfo;
Vielen Dank für die Suche, jede Hilfe wäre willkommen.