0

我正在使用 rack-saml 作为带有omniauth-shibboleth 的中间件,以允许我的应用程序作为服务提供者工作。

我想知道如何为断言消费者服务 (ACS) url 设置绑定?

目前我的 ACS url 绑定是“任何”。但是,我在 rack-saml 和 omniauth-shibboleth 中进行了搜索,以找到设置的位置,但无法找到它。

我正在尝试让我的应用程序与 testhib.org 一起使用,以希望将该应用程序与配置类似的身份提供程序 (IdP) 一起使用。

我已将我的元数据上传到 testhib.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

任何帮助将不胜感激。

4

2 回答 2

0

可能有更好的方法来做到这一点;但是我通过覆盖Onelogin::Saml::Authrequest(以及其他调用的类Onelogin::Saml::Authrequest)然后在 create 方法中更改AssertionConsumerServiceURL为来使事情正常进行。AssertionConsumerService

于 2013-12-15T17:37:19.953 回答
0

在 lib/rack/saml.rb 你会发现:

 @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
于 2017-04-19T18:57:17.813 回答