Search code examples
ruby-on-railsomniauthrackshibboleth

rack-saml Assertion Consumer Service binding


I am using rack-saml as middleware with omniauth-shibboleth to allow my app to work as a Service Provider.

I would like to know how to set the binding for an Assertion Consumer Service (ACS) url?

Presently my ACS url binding is 'any'. However, I have searched in rack-saml and omniauth-shibboleth to find where this is being set, and have not been able to find it.

I am trying to get my app working with testshib.org in hopes of using the app with a similarly configured Identity Provider (IdP).

I have uploaded my metadata to testshib.org. I am not sure how to implement their custom shibboleth.xml file; however my app is able to redirect to their IdP login page and cookies are set by their IdP.

Hear are some errors from the testhib.org logs.

20:14:15.864 - WARN [org.opensaml.saml2.binding.AuthnResponseEndpointSelector:206] - Relying party 'https://test_shib.com' requested the response to be returned to endpoint with ACS URL 'https://test_shib.com:443/auth/shibboleth/callback'  and binding 'any' however no endpoint, with that URL and using a supported binding,  can be found in the relying party's metadata 

20:14:15.864 - ERROR [edu.internet2.middleware.shibboleth.idp.profile.AbstractSAMLProfileHandler:447] - No return endpoint available for relying party https://test_shib.com

Any help would be greatly appreciated.


Solution

  • There may be a better way to do this; but I got things working by overriding Onelogin::Saml::Authrequest (and the other classes that called Onelogin::Saml::Authrequest) and then changing AssertionConsumerServiceURL to AssertionConsumerService in the create method.