将url参数转发到CAD

时间:2014-04-09 12:38:46

标签: java spring cas

有什么方法可以将我的JAVA客户端中的URL(查询参数)中的任何参数转发到CAS?

示例:http://www.myclient.com?name=A&age=23

目前,当我的请求被转发到CAS时,查询参数被删除,CAS不知道参数。我想将这些参数发送给CAS。

或者说我希望CAS收到的服务网址是包含所有参数的完整网址。

请建议。

1 个答案:

答案 0 :(得分:0)

在CasAuthenticationEntryPoint方法开始时,通过调用createServiceUrl(request,response)方法创建服务url。

此方法然后进一步调用

<code> 
    CommonUtils.constructServiceUrl(null, response, this.serviceProperties.getService(), null, this.serviceProperties.getArtifactParameter(), this.encodeServiceUrlWithSessionId);
</code>

参数:
请求HttpServletRequest
响应HttpServletResponse
为配置的服务URL提供服务(如果不为null,则使用此服务) serverName服务器名称,用于在服务参数为空时构建服务URL的服务器名称 artifactParameterName要删除的工件参数名称(即票证)
编码是否编码网址(即Jsession)。

constructServiceUrl - &gt;从HttpServletRequest或给定的serviceUrl构造服务URL。如果serviceUrl和serviceName都提供了serviceUrl。

在我的情况下,我在cas配置文件中提供了服务url,因此检入constructServiceUrl

<code>
    if (CommonUtils.isNotBlank(service)) {
                return encode ? response.encodeURL(service) : service;
            }
</code>

简单地发送回编码的服务URL ...而不附加查询字符串。 您还可以在上面看到,默认情况下,null请求对象被发送到constructServiceUrl,因此不会考虑查询参数。

解决方案: 我从CasAuthenticationEntryPoint扩展了CasAuthenticationEntryPoint并覆盖方法&#34; createServiceUrl&#34;因为它在超级班级受到保护......让它按照我想要的方式行事。