Redirect OpenAM登录重定向后自定义URL参数丢失

Redirect OpenAM登录重定向后自定义URL参数丢失,redirect,parameters,goto,agent,openam,Redirect,Parameters,Goto,Agent,Openam,我正在使用OpenAM对我的应用程序进行身份验证。我使用以下URL访问我的应用程序: http://my.company.com/appfolder/appservlet?lang=EN&user=test 在首次访问时,OpenAM代理捕获URL并使用此重定向URL将我的浏览器重定向到身份验证页面: ...openam/UI/Login?goto=http%3A%2F%2Fmy.company.com%3A8080%2Fappfolder 经过正确的身份验证后,我最终被重定向到以下

我正在使用OpenAM对我的应用程序进行身份验证。我使用以下URL访问我的应用程序:

http://my.company.com/appfolder/appservlet?lang=EN&user=test
在首次访问时,OpenAM代理捕获URL并使用此重定向URL将我的浏览器重定向到身份验证页面:

...openam/UI/Login?goto=http%3A%2F%2Fmy.company.com%3A8080%2Fappfolder
经过正确的身份验证后,我最终被重定向到以下URL:

http://my.company.com/appfolder
这是逻辑,因为这是goto param中引用的URL。但它和原来的不一样:servlet和自定义参数(lang和user)丢失了

您知道如何配置我的代理,使其在重定向后保留servlet和参数吗?

请阅读教程“使用OpenAM向网站添加身份验证”

在“创建访问策略”->“通配符匹配”一节中,您的答案是:

策略URL中的通配符*与“?”不匹配。如果你 希望允许提交GET参数,然后为提交第二个策略 *?*是必需的


谢谢你的回答。正如我在之前的评论中提到的,添加新政策并不能解决我的问题。实际上,我不确定策略如何解决这个问题,因为
goto
参数是由J2EE代理生成的,它在应用策略之前起作用(据我所知……我可能错了)

无论如何,我可以通过重新编译J2EE代理来解决我的问题:我已经基于forgerock提供的v3.0.3构建了一个新的
Agent.jar
。然后,我将AmFilterRequestContext.class替换为一个新的,基于此处提供的源代码构建的类:

有了这个新代理,我的
goto
现在是正确的,重定向工作正常(并且我不需要定义任何策略)


奇怪的是,我不明白为什么它现在能工作!我在上面提到的java源代码和原始类的未编译版本之间找不到任何区别!我只是添加了一些
System.out.println
来获取变量值和函数结果,并构建了jar。重新启动jboss后,
goto
是正确的。当我有时间的时候,我会试着去理解为什么这最终会起作用。

谢谢你的回复。不幸的是,它并没有解决问题:我尝试使用
http://my.company.com/*
http://my.company.com/*?*
http://my.company.com/appfolder/*
http://my.company.com/appfolder/*?*
,但代理始终构建一个没有servlet或参数的goto参数。奇怪的是,在身份验证之后,如果我输入应用程序的完整URL,然后使用
…openam/UI/Logout
注销,那么下一个openam重定向将包括servlet和参数。