ruby-saml SAMLRequest作为POST而不是GET

时间:2017-08-07 13:55:10

标签: ruby-on-rails single-sign-on saml-2.0 ruby-saml

我开始在其中一个项目中使用ruby-saml。我正在使用的IDP期望POST用于包含SAMLRequest的HTTP主体的身份验证请求。查看authrequest.rb的源代码,create方法只能执行GET而不是POST。

我决定调用create_params并获取我可以在视图中使用的base64令牌来执行POST。 当我使用以下代码时


      params = {}
      request = OneLogin::RubySaml::Authrequest.new

      token = request.create_params(saml_settings, params)
      p token
      p token["SAMLRequest"]
      p decode(token["SAMLRequest"])

当我尝试使用base64decode.org或调用解码方法时,我得到的编码不正确。

1)我可以进行POST而不是GET吗?
2)在创建编码错误的请求时我做错了什么?
感谢

1 个答案:

答案 0 :(得分:0)

  

1)我可以进行POST而不是GET吗?

是的,但支持POST绑定不仅仅是通过POST参数替换GET参数...... POST绑定上的签名嵌入在SAML消息上,而不是另一个GET参数。

  

2)在创建错误编码请求时我做错了什么?   感谢

AuthNRequest不仅是base64encoded,而且还是deflated。

尝试使用Base64 Decode + Inflate

你会发现这个线程很有趣: https://github.com/onelogin/ruby-saml/issues/124