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

时间:2012-08-13 11:45:26

标签: redirect parameters goto agent openam

我在我的应用程序上使用OpenAM进行身份验证。我使用这样的URL访问我的应用程序:

http://my.company.com/appfolder/appservlet?lang=EN&user=test

首次访问时,OpenAM代理会使用此重定向网址捕获URL并将浏览器重定向到身份验证页面:

...openam/UI/Login?goto=http%3A%2F%2Fmy.company.com%3A8080%2Fappfolder

正确认证后,我最终被重定向到以下网址:

http://my.company.com/appfolder

这是逻辑,因为这是goto param中引用的URL。但它与原始版本不同:servlet和自定义参数(lang和用户)缺失。

知道如何配置我的代理以使其在重定向后保持servlet和params吗?

2 个答案:

答案 0 :(得分:0)

查看教程“使用OpenAM向网站添加身份验证”的this step

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

  

政策网址中的通配符*与“?”不匹配。如果你这样   希望允许提交GET参数,然后提交第二个策略   http://webserver.example.com/ *?*是必需的。

答案 1 :(得分:0)

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

无论如何,我可以通过重新编译J2EE代理来解决我的问题:我已经基于forgerock提供的v3.0.3构建了一个新的agent.jar。然后我用新的AmFilterRequestContext.class替换了goto,在此处可用的源代码构建: http://www.docjar.com/html/api/com/sun/identity/agents/filter/AmFilterRequestContext.java.html

使用这个新代理,我的System.out.println现在正确,重定向效果很好(我不需要定义任何策略)。

奇怪的是,我不明白为什么它现在有效!我找不到上面提到的java源和原始类的未编译版本之间的任何区别!我刚刚添加了一些goto来获取变量值和函数结果,并构建了jar。恢复我的jboss后,{{1}}是正确的。我会试着理解为什么当我有时间时这最终会起作用。

相关问题