Redirect OpenAM登录重定向后自定义URL参数丢失
我正在使用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 经过正确的身份验证后,我最终被重定向到以下
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和参数。