从omniauth-saml故障回调中获取原始SAML响应

时间:2015-03-23 18:35:16

标签: ruby-on-rails-4 omniauth saml-2.0

我在rails 4.2中使用omniauth-saml 1.3.1和omniauth 1.2.2。它适用于我在openidp.feide.no上设置的测试身份提供程序(对于那些设置SAML服务提供程序的人来说,这是一个非常好的工具)。它甚至可以在生产中使用。

现在我正在尝试与我的客户建立一个IdP。当用户访问/ auth / saml时,会按预期将它们定向到客户端的IdP。用户可以使用他们的电子邮件/密码登录。

然后,IdP会响应我的SP,但是omniauth会重定向到失败回调。

here所示,收到错误消息“invalid_ticket”。但是,错误本身并没有传递给env["omniauth.error"]中的故障控制器操作,因为我应该在某处读取它(不幸的是我现在无法找到该文档)。

我希望有人会就如何弄清楚导致“invalid_ticket”发生的原因提出一些建议。是否有可能从IdP中看到原始SAML响应?

我应该注意,我需要在生产中找到这些信息,因为客户端的IdP指向我们的生产SP而我无法说服他们指出它可以做一些更广泛的测试(比如我的localhost dev机器)。但是,我可以写一些更多的日志记录或Honeybadger异常报告,如果这会有所帮助。

目前,当omniauth重定向到失败路由时,我向Honeybadger报告所有env["omniauth.*"]值和params,但我没有收到Omniauth message: invalid_ticket以外的任何信息。

非常感谢能够帮助我朝着正确方向前进的人!

1 个答案:

答案 0 :(得分:1)

您可能想尝试将其他环境添加到failure_raise_out_environments:

OmniAuth.config.failure_raise_out_environments = ['development', 'staging', 'production']

到您的初始化程序。您将在日志或Honeybadger中收到有意义的错误消息。

默认情况下,这些错误仅在开发环境中引发。