我已经阅读了SAML SSO中的relayState
参数,以及SP如何通过使用relayState
将用户重定向回原始传入URL,但据我所知,HTTP重定向仅适用于GET请求。
我想知道POST、PUT和DELETE请求是否也可以这样做,因为这些请求通常也会在请求体中附带数据。我曾想过为POST请求返回一个自提交表单,但这对任何其他HTTP谓词都不起作用,而且原始请求也必须是基于表单的请求,除非框架支持类似地处理所有类型的参数(查询字符串、表单字段、json元素(。我也想过让前端重构原始请求,并用AJAX将其发送回SP,但我不确定AJAX是否真的能更新浏览器的当前页面地址。
最终,我的折衷解决方案是只中继URL,只使用GET谓词来呈现全新的页面,而对于任何其他请求,则使用referrer URL进行中继。这意味着对于后者,用户在登录SSO流之前最后一次看到的页面后,必须再次手动执行任务。
不确定行业中的常见做法是什么。
谢谢!
您需要在SP端维护/保存POST数据,并在SAML流成功后重新使用它们。SAML本身并不提供任何实现这一点的手段。