Skip to content

Auth.processSLO() should fast-fail on non-GET requests #299

@veselov

Description

@veselov

Signatures generated for logout response in opensaml (2.6.6) can not be validated by java-saml.

I'm still in the process of investigating this, and not really sure who to blame.

The reason for signature mismatch is that Opensaml puts the original message contents into the signing buffer, and java-saml uses base64 encoded version of it. It actually seems to use percent-encoded base64 encoded message.

However, I also could not validate the message using https://www.samltool.com/validate_logout_res.php. Interestingly, the latter doesn't accept base64 logout response contents.

I also can't find where is this described in SAML documentation. That documentation only talks about XML signatures, which whatever is being used here is not.

I'm loaded with questions, though:

  • Where is this method of signing documented (as part of SAML documentation suite)?
  • Why not just use the XML signature of the logout response XML?
  • Verifying signature using percent-encoded string sounds suspicious. At least from the perspective that online validator takes only XML/Deflated String (whatever it is), and recreating percent-encoding is not possible, as too many variations (simplest is the letter case of the hex characters) are allowed in it (unless, of course, the spec mandates that percent encoding is done in a specific way. On the other hand, that encoding is done by a browser, as it's submitting an HTML form, so it can encode it arbitrarily).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions