我使用rack-saml作为omniauth-shibboleth的中间件,以允许我的应用程序作为服务提供商工作。
我想知道如何为断言消费者服务(ACS)网址设置绑定?
目前我的ACS网址绑定是“任何'”。但是,我在rack-saml和omniauth-shibboleth中搜索了这个设置的位置,并且无法找到它。
我正在尝试让我的应用程序与testshib.org一起使用,希望将该应用程序与类似配置的身份提供程序(IdP)一起使用。
我已将我的元数据上传到testshib.org。我不确定如何实现他们的自定义shibboleth.xml文件;但是我的应用程序能够重定向到他们的IdP登录页面,并且Cookie由他们的IdP设置。
听到testhib.org日志中的一些错误。
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
非常感谢任何帮助。
答案 0 :(得分:0)
可能有更好的方法来做到这一点;但我通过覆盖Onelogin::Saml::Authrequest
(以及其他调用Onelogin::Saml::Authrequest
的类)然后在创建方法中将AssertionConsumerServiceURL
更改为AssertionConsumerService
来完成工作。
答案 1 :(得分:0)
@config['assertion_consumer_service_uri'] ||= "#{saml_sp_prefix}#{@config['protected_path']}"
因此,在你的config / rack-saml.yml中,你可以像这样配置它(你可能需要在uri中输入端口号导致问题):
assertion_consumer_service_uri: https://www.abc.edu/users/auth/shibboleth/callback
此外,您不应该从他们的shibboleth2.xml文件中获取任何内容,只需将其提供者的xml中的证书放入metadata.yml配置文件中:
---
idp_lists:
https://idp.testshib.org/idp/shibboleth:
certificate: |-
-----BEGIN CERTIFICATE-----
MIIEDjCCAvagAwIBAgIBADANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJVUzEV
...
8K/qhmFT2nIQi538n6rVYLeWj8Bbnl+ev0peYzxFyF5sQA==
-----END CERTIFICATE-----
saml2_http_redirect: https://idp.testshib.org/idp/profile/SAML2/Redirect/SSO