Erstellen Sie eine SOAP-Nachricht mit Assertion Saml2 im Header mit c # -Code
Ich habe einen Regierungswebserver mit einem exponierten Dienst, den ich nutzen muss. Bisher habe ich für andere Dienste desselben Webservers Folgendes getan: Ich habe eine benutzerdefinierte Bindung erstellt, die einen Header nur mit dem Sicherheitstag erstellt. Dies ist der Code:
var sec = new AsymmetricSecurityBindingElement(
new X509SecurityTokenParameters(X509KeyIdentifierClauseType.Any, SecurityTokenInclusionMode.Never),
new X509SecurityTokenParameters(X509KeyIdentifierClauseType.Any, SecurityTokenInclusionMode.AlwaysToRecipient));
sec.MessageSecurityVersion = MessageSecurityVersion.WSSecurity10WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10;
sec.SecurityHeaderLayout = SecurityHeaderLayout.Strict;
sec.IncludeTimestamp = true;
sec.SetKeyDerivation(false);
sec.KeyEntropyMode = System.ServiceModel.Security.SecurityKeyEntropyMode.ServerEntropy;
sec.EnableUnsecuredResponse = true;
CustomBinding myBinding = new CustomBinding();
myBinding.Elements.Add(sec);
myBinding.Elements.Add(new TextMessageEncodingBindingElement(MessageVersion.Soap11, Encoding.UTF8));
myBinding.Elements.Add(new HttpsTransportBindingElement());
Dies ist das Ergebnis von CustomBinding ().
<s:Header><VsDebuggerCausalityData xmlns="http://schemas.microsoft.com/vstudio/diagnostics/servicemodelsink">uIDPowknFB+N96ZEtO/wdI2E9acAAAAAcJdp/1Hm1EmYTKrs1mDzIDxAUSKqP+BEuW7DUbd1RNIACQAA</VsDebuggerCausalityData>
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<u:Timestamp u:Id="uuid-a770c99d-342d-4dea-8b28-271df0df9703-1">
<u:Created>2020-11-14T09:48:00.479Z</u:Created>
<u:Expires>2020-11-14T09:53:00.479Z</u:Expires>
</u:Timestamp>
<o:BinarySecurityToken u:Id="uuid-7f91b027-5e8e-49e2-a949-9dc6a0401d65-2" 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">MIIDazCCAlOgAwIBAgIRAPKGGHjqSqN9VY2jLOK8CHAwDQYJKoZIhvcNAQELBQAwGTEXMBUGA1UEAwwOSU5GT1NFUlZJQ0UgQ0EwHhcNMjAxMTA5MTgxNDIyWhcNMjExMTA5MTgxNDIyWjAhMR8wHQYDVQQDDBYwNDE5NTM3MDc1Ni5pbmZvbGVvLml0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvWK6lK+M81GFV76L7MnvRDEXT0BDE81d8rQxDwyR3OG7XptWYyB/eXqdFpO4xJSGbeM3HTFCmXCPNtIGiXa616FoJJe3xib2uqkwbgWDnAV1l5riEPN+NeHXHqy3tF93wjJtGKdvpUt1IomdMRFaL2Y3O5Z2O3g130SmkVoZR0K7BO9mJrbuWvWwInsgLJo53LWlqcytUgu0d5GEltHfnYP6H/Mmvh284u+eK8GXmA98OaqiDl52U2s+VTN+4d6jcu6QxzT3GalHTqFNeyOlizrOrGqikhffDoXUUD4/c2Gii8gt4cJIY4Z37Oh3EfU6QGbLeRcbgvV8SfjbWdRMDwIDAQABo4GlMIGiMAkGA1UdEwQCMAAwHQYDVR0OBBYEFAkNSQwW6m9g01vxfzoWa/kLrvB4MFQGA1UdIwRNMEuAFEDoBmFhkW41rnT6tGo9UBx9BSuXoR2kGzAZMRcwFQYDVQQDDA5JTkZPU0VSVklDRSBDQYIUSYtO6hW7zhobRiowSC2OLyESy5owEwYDVR0lBAwwCgYIKwYBBQUHAwIwCwYDVR0PBAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBAQCnBmAodKz10kL3uHLoqWk7oraHM7djBEyrcdXh795k4dCCiaYWg4ZR1MZJVVtSd+YEhfBOuDyhd3R+hZoG1BY4AweYZIp/j+SvhBnqUZ/bbfY2Z2deFJoAAuDt0K0xuzcqE6M9lUpGT8xkw5hL7B8VtBQEgS0mj6DNk3Fwd39RCWfraEcfBMeceejfS9w7u6Jb1bXvpRH8bKnaOaz3vIVrmoN35LCuyUxnwIqPf/SqRjnIoagIb85+MNdBx9jJ80+SD0P8F/hev+kz8QyELiLPClw+4a9E0OOUYhhJBHSUCCwMOvXV+7g+ZYHLd+Lwg2zs2cc3CDDJIw/b8GONoFdP
</o:BinarySecurityToken>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#uuid-a770c99d-342d-4dea-8b28-271df0df9703-1">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>43xZllvfRz3QmOcPI2oMopJ6Z0U=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>hA6yVephrqRX1U0w==</SignatureValue>
<KeyInfo>
<o:SecurityTokenReference><o:Reference ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" URI="#uuid-7f91b027-5e8e-49e2-a949-9dc6a0401d65-2"/></o:SecurityTokenReference>
</KeyInfo>
</Signature>
</o:Security>
</s:Header>
Als sie mich baten, das Assertion Header Security-Tag vor dem Header einzufügen, habe ich eines wie folgt erstellt:
Saml2Assertion oAssertion = new Saml2Assertion(new Saml2NameIdentifier("MY"));
oAssertion.Subject = new Saml2Subject(new Saml2NameIdentifier("ident"));
Saml2Conditions asCondition = new Saml2Conditions();
asCondition.NotBefore = DateTime.Now;
asCondition.NotOnOrAfter = DateTime.Now.AddMinutes(15);
oAssertion.Conditions = asCondition;
Saml2AuthenticationStatement asAuthnStatement = new Saml2AuthenticationStatement(new Saml2AuthenticationContext());
oAssertion.Statements.Add(asAuthnStatement);
Was ich mit C # -Code tun möchte, ist, die im Header erstellte Assertion einzufügen, zum Beispiel wie folgt:
myBinding.Elements.Add(oAssertion);//Obviously this is an example that cannot work!
Am Ende möchte ich eine solche Anfrage erhalten (Der Body wird bereits durch Aufrufen der Wsdl-Klasse erstellt):
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" saml:ID="identity-assertion" saml:IssueInstant="2018-12-18T13:03:19.885+0100" saml:Version="2.0" wsu:Id="identity-assertion" xsi:schemaLocation="urn:oasis:names:tc:SAML:2.0:assertion saml-schema-assertion-2.0.xsd">
<saml:Issuer>Company</saml:Issuer>
<saml:Subject>
<saml:NameID>02942630753</saml:NameID>
</saml:Subject>
<saml:Conditions NotBefore="2018-12-18T13:03:19.885+0100" NotOnOrAfter="2018-12-20T13:03:19.885+0100"/>
<saml:AuthnStatement AuthnInstant="2018-12-18T13:03:19.885+0100">
<saml:AuthnContext>
<saml:AuthnContextDecl/>
<saml:AuthenticatingAuthority/>
</saml:AuthnContext>
</saml:AuthnStatement>
<saml:AttributeStatement/>
</saml:Assertion>
<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" saml:ID="authorization-assertion" saml:IssueInstant="2018-12-18T13:03:19.885+0100" saml:Version="2.0" wsu:Id="authorization-assertion" xsi:schemaLocation="urn:oasis:names:tc:SAML:2.0:assertion saml-schema-assertion-2.0.xsd">
<saml:Issuer/>
<saml:Subject>
<saml:NameID>02942630753</saml:NameID>
</saml:Subject>
<saml:Conditions NotBefore="2018-12-18T13:03:19.885+0100" NotOnOrAfter="2018-12-20T13:03:19.885+0100"/>
<saml:AuthzDecisionStatement Decision="Permit" Resource="https://wsit-virtasl.rmmg.rsr.rupar.puglia.it:8181/aslba/IDocumentService">
<saml:Action Namespace="http://www.sist.puglia.it/Schemas/PDD_SIST/SCATEL/FSE/">addDocument</saml:Action>
</saml:AuthzDecisionStatement>
<saml:AttributeStatement/>
</saml:Assertion>
<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" saml:ID="applicative-assertion" saml:IssueInstant="2018-12-18T13:03:19.885+0100" saml:Version="2.0" wsu:Id="applicative-assertion" xsi:schemaLocation="urn:oasis:names:tc:SAML:2.0:assertion saml-schema-assertion-2.0.xsd">
<saml:Issuer>Company</saml:Issuer>
<saml:Subject>
<saml:NameID>02942630753</saml:NameID>
</saml:Subject>
<saml:Conditions NotBefore="2018-12-18T13:03:19.885+0100" NotOnOrAfter="2018-12-20T13:03:19.885+0100"/>
<saml:AuthnStatement AuthnInstant="2018-12-18T13:03:19.885+0100">
<saml:AuthnContext>
<saml:AuthnContextDecl/>
<saml:AuthenticatingAuthority/>
</saml:AuthnContext>
</saml:AuthnStatement>
<saml:AttributeStatement>
<saml:Attribute Name="urn:oasis:names:tc:sist:1.0:subject:subject-application-id" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">APPNAME</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="urn:oasis:names:tc:sist:1.0:subject:subject-application-vendor" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">CODICES</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="urn:oasis:names:tc:sist:1.0:subject:subject-application-version" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">5</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="urn:oasis:names:tc:sist:1.0:subject:subject-application-nonce" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">Lz40oj9kDP8pvM2EFdbk</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="urn:oasis:names:tc:sist:1.0:subject:subject-application-digest" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">FjZuq3R5dkXIpAUL4+a2g0UGS/E=</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="urn:oasis:names:tc:sist:1.0:subject:subject-application-created" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">2018-12-19T13:03:19.886</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="urn:oasis:names:tc:xacml:1.0:resource:resource-id" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">CLRERT68P01T556Y</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="urn:oasis:names:tc:xacml:1.0:action:action-id" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">C</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="urn:oasis:names:tc:xacml:1.0:subject:subject-id" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">02942630753</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="urn:oasis:names:tc:xacml:2.0:subject:role" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">RIS000055</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="urn:oasis:names:tc:xspa:1.0:subject:organization-id" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">160000</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="urn:oasis:names:tc:xspa:1.0:subject:organization" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">SOFTWARE HOUSE EMITTENTE</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="urn:oasis:names:tc:xspa:1.0:resource:patient:consent" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">true</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="urn:oasis:names:tc:xspa:1.0:resource:patient:hl7:confidentiality-code" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">false</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="urn:oasis:names:tc:xspa:1.0:environment:locality" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml:AttributeValue xsi:type="xs:string">160000-SOFTWARE HOUSE EMITTENTE</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
<Action xmlns="http://www.w3.org/2005/08/addressing">http://www.openweb.com/Schemas/PDD_SIST/FSE/addDocument</Action>
<MessageID xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:556111ac-162d-4b27-8140-b5f558ff14b9</MessageID>
<To xmlns="http://www.w3.org/2005/08/addressing">https://wsit-vrt.com:8081/DcSrv</To>
<ReplyTo xmlns="http://www.w3.org/2005/08/addressing">
<Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
</ReplyTo>
</soap:Header>
<soap:Body>
<addDocument xmlns="http://www.openweb.com/Schemas/PDD_SIST/FSE/">
<document>
<document>++++++++++PC9hZG1pbmlzdHJhdGl2ZUdlbmRlYisbYxktjFzkfSLJiRYExMeKA46kAAAAAAAA=</document>
<documentName>documentname</documentName>
<status>Approved</status>
<binaryDocument>++//3fuacM//YFIq7HgX/+13dQhABsdXTVCRDFFOTg0Pl0KICAvU2l6ZSAzMjgKPj4Kc3RhcnR4cmVmCjEwMzI2MgolJUVPRgo=</binaryDocument>
<binaryName>filename.pdf</binaryName>
</document>
</addDocument>
</soap:Body>
</soap:Envelope>
Wie kann ich dies mit dem c # -Code erreichen? Verstehe ich den Ansatz falsch? Ich habe gesehen, dass andere das gleiche Problem wie ich mit meinem eigenen Webdienst haben, aber ich habe keine gültige Lösung gefunden. Danke euch allen.
Antworten
Versuchen
AddressHeader.CreateAddressHeader()