-
Notifications
You must be signed in to change notification settings - Fork 192
Description
I was using passport-saml since a long time and all was working fine until they upgraded crypto-xml to ^1.0.2. (from xml-crypto@0.10.1)
After 2 days banging my head on this i solved it, though i like to know if the changes from xml-crypto@0.10.1
it's all about the rsaml response attributes (examples below taken from various copies)
attributes on the incoming saml
<samlp:Response
Destination="blablabla"
ID="FIMRSP_50b75184-0168-1d14-b75b-951f7c61a75a"
InResponseTo="_78262119f68b5424897b"
IssueInstant="2019-01-15T08:53:37Z" Version="2.0"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
using crypto-xml 0.10.1 in the function to get the canonXML this produced
<saml:Assertion
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
ID="Assertion-uuid505be4ab-0168-12f2-b56e-e5decbef3937"
IssueInstant="2019-01-15T07:13:46Z"
Version="2.0">
with ^1.0.2 i suddenly got invalid signature, but the reason was that the digest no longer matched (invalid signature: for uri....)
the Assertion now produced
<saml:Assertion
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
ID="Assertion-uuid50634b8a-0168-1c5e-b8fc-e5decbef3937"
IssueInstant="2019-01-15T07:21:51Z"
Version="2.0">
so 2 attributes more xmlns:samlp and xmlns:ds
these are taken from the top level as i suppose but they are now generating me this invalid digest
(as i could understand , the incoming digest is calculated without those 2 attributes)
I fixed this by patching my saml reponse deleting the attributes xmlns:samlp and xmlns:ds and adding xmlns:ds to the Signature attribute not not mess up with the reference function
shortly the change from
var c14nOptions = {
ancestorNamespaces: ancestorNamespaces
};
to
var c14nOptions = {
inclusiveNamespacesPrefixList: ref.inclusiveNamespacesPrefixList,
ancestorNamespaces: ref.ancestorNamespaces
};
caused all the pain
is this what i did an acceptable solution, is there something that i'm missing. Of course i cannot change how our company generates the saml and calculates the digest
thanks