我正在一个jboss as7实例上部署两个Web应用程序。一个应用程序是基于spring / maven的,并使用spring security进行身份验证。另一个应用程序是一个birt web应用程序,不需要直接登录身份验证。这两个应用程序通过单个菜单链接连接,该链接仅在登录用户拥有管理角色时显示。所以spring应用程序是主应用程序,如果用户是经理,它提供了一个指向birt web应用程序的链接。我的问题是spring应用程序是安全的(没有直接URL访问,用户需要登录等)但是如果有人知道应用程序的URL,则可以在不登录的情况下访问birt应用程序。我不想有两个单独的登录页面。我希望spring app身份验证还可以确定对birt应用程序的访问权限,但我不清楚如何执行此操作。我在我的birt应用程序的web.xml文件和jboss-web.xml文件中添加了一个安全约束,以便为应用程序建立安全域。无论安全约束是否存在,安全约束都没有区别,但安全域确实通过URL限制对birt应用程序的访问。那么下一步又是什么呢?如何从spring应用程序中获取身份验证(jsessionid?)并使用它来允许用户访问包含birt应用程序的安全域?
两个应用都在同一个域上......例如“domain / springApp或domain / birtApp”,如果有人想知道的话。
答案 0 :(得分:1)
这里也有同样的问题,因为birt.war完全是一个单独的webapp ..它有自己的会话,所以任何人都知道你的birt.war名称&通过网址报告名称,他们不仅可以在没有身份验证的情况下运行报告,还可以下载您的报告,这也是一个安全问题(此处下载报告意味着.rptdesign文件,他们可以在其中查看您的查询)。
可能的解决方案是: -
1>在您的webapp中集成BIRT报告引擎3.7,&使用servlet生成报告html页面然后在你的应用程序中显示。在这方面,缺点是它为每个报告创建了html文件。不会让网络观众ajax功能&导出功能,如excel,pdf等。
2 - ;这对我不起作用,但你可以尝试一下。在您的webapp中集成BIRT 3.7 Web查看器。我做了这个&能够在我的webapp中显示Web查看器,但此链接也正常工作:report = report1.rptdesign"> http:// localhost:7110 / myapp / frameset?_report = report1.rptdesign
我认为它会将此链接重定向到我的webapp登录页面,就像我在webapp中的任何其他页面一样,但我得到了一个很大的NO。原因是单独的会议。
结论是从birt& amp;提取web查看器。修改它以连接我的webapp,就像再次创建birt一样。
哦!这是birt 3.7集成的链接:http://wiki.eclipse.org/Birt_3.7_Migration_Guide
答案 1 :(得分:0)
一种选择是通过弹簧安全保护birt web应用程序(因此birt应用程序中需要另一个弹簧安全配置)。 birt应用程序中的spring安全过滤器将检查传入会话中的UserDetails对象,以确定用户是否有权访问birt Web应用程序。
Spring security - > app1 - >弹簧安全 - > birt app
对于堆栈溢出答案,这是一个相当大的讨论:)
答案 2 :(得分:0)