Force escape downcasing for Azure SLO #627
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I followed the Single Log Out guide for my Azure AD integration and it worked all good until implementing that
idp_logout_request
method where I received requests from Azure to log out a user.The requests come signed and trying to validate the signature it was failing, then I realised that the problem is that they are encoding the request parameters with downcase encoding characters (like using
%2f
instead of%2F
) and they use the parameters downcased to generate the signature, therefore in validation time, when signed parameters are restored withCGI.escape
they were different than the originals sent by Azure (all upcased).To solve this problem, I added a
force_escape_downcasing
option forOneLogin::RubySaml::SloLogoutrequest.new
, so all the signature verification is done with downcased encoded parameters.I'm not sure where to add in the readme this option, specially because the SLO example I followed isn't verifying signed requests, but I'm open to suggestions.