My Application creates SAML Assertion SOAP header and create the SOAP request, it sends the request to Platform application before sending the request out to server. In platform, the SOAP request is deserialized for additional processing and then serialized. The problem arises because the SAML Assertion prefix namespace scope changed and failing SAML validation on server side.
Input to Platform application:
<SOAPEnvelope>
<saml2:Assertion xmlns:saml2="urn::oasis:saml:2.0::assertion"/>
</SOAPEnvelope>
Expect output to be exactly the same as the input, but indeed it is the following:
<SOAPEnvelope xmlns:saml="urn::oasis:saml:2.0::assertion">
<saml:Assertion />
</SOAPEnvelope>
This is caused by different xml serializers used in the different applications, My application uses the OpenSAML lib to create the SAML Assertion element, whereas the Platform used the Jaxb customized SOAP serializer.
I know there are ways to keep the xml prefix the same, but is there anyway that I could keep the saml namespace scope the same as well?