我们使用
Spring SAML Security Extension在我们的应用程序中实现SAML.我们现在有以下问题:
我们的一位客户正在为其身份提供商提供包含参数的URL.元数据看起来像这样(为简洁起见,大量缩写):
Location="https://idp.example.com/login?parameter=value"/>
可以看出,有一个名为“parameter”的参数,其值为“value”.生成的重定向URL中不存在此参数.我调试了一下,发现SAMLProcessorImpl从绑定(HTTP重定向的HTTPRedirectDeflateEncoder)获取MessageEncoder并委托编码消息.编码器依次在其buildRedirectURL方法中执行以下操作:
// endpointURL is https://idp.example.com/login?parameter=value here
URLBuilder urlBuilder = new URLBuilder(endpointURL);
List> queryParams = urlBuilder.getQueryParams();
queryParams.clear(); // whoops
因此,出于某种原因,有意无条件地剥离参数.
为什么会出现这种情况?如何以最有效的方式解决这个问题?