我开始在其中一个项目中使用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)在创建编码错误的请求时我做错了什么?
感谢
答案 0 :(得分:0)
1)我可以进行POST而不是GET吗?
是的,但支持POST绑定不仅仅是通过POST参数替换GET参数...... POST绑定上的签名嵌入在SAML消息上,而不是另一个GET参数。
2)在创建错误编码请求时我做错了什么? 感谢
AuthNRequest不仅是base64encoded,而且还是deflated。
你会发现这个线程很有趣: https://github.com/onelogin/ruby-saml/issues/124