我在一个jboss as7实例上部署了两个web应用程序。其中一个应用是基于spring/maven的,并使用spring security进行身份验证。另一个应用程序是birt web应用程序,不需要直接登录身份验证。这两个应用程序由单个菜单链接连接,仅当登录的用户拥有管理角色时才显示该菜单链接。因此,如果用户是经理,spring应用程序就是主应用程序,它提供了一个指向birt web应用程序的链接。我的问题是,spring应用程序是安全的(不需要直接访问url,用户需要登录等),但是如果有人知道应用程序的url,则无需登录就可以访问birt应用程序。我不想有两个单独的登录页面。我希望spring应用程序身份验证也能确定对birt应用程序的访问权限,但我不清楚如何做到这一点。我向我的birt应用程序的web.xml文件和jboss-web.xml文件添加了一个安全约束,以便为该应用程序建立安全域。无论安全约束是否存在,安全约束都没有区别,但是安全域确实限制通过url访问birt应用程序。那么下一步是什么呢?如何从spring应用程序获取身份验证(jsessionid?)并使用它来允许用户访问包含birt应用程序的安全域?
这两个应用都在同一个域名上...例如"domain/springApp or domain/birtApp“,如果有人想知道的话。
发布于 2012-04-26 19:06:12
这里也有同样的问题,因为birt.war完全是一个独立的webapp应用程序。它有自己的会话,所以任何人都可以通过url知道你的birt.war名称和报告名称,他们不仅可以在没有身份验证的情况下运行报告,还可以下载你的报告,这也是一个安全问题(这里的下载报告指的是.rptdesign文件,他们可以在其中看到你的查询)。
可能的解决方案是:-
1>将BIRT报表引擎3.7集成到您的use应用程序中,并使用servlet生成报表html页面,然后将其显示在您的应用程序中。在这方面,缺点是它会为你运行的每个报表创建html文件,不会让web查看器使用ajax功能和导出功能,如excel,pdf等。
2>这对我不起作用,但你可以试一下。将BIRT 3.7 web查看器集成到您的webapp中。我这样做了&能够在我的web应用程序中显示web查看器,但此链接也有效: report=report1.rptdesign">http://localhost:7110/myapp/frameset?_report=report1.rptdesign
我认为它会将这个链接重定向到我的webapp登录页面,就像它对我的webapp中的任何其他页面所做的那样,但我得到了一个很大的不。原因是单独的会话。
结论是从birt中提取web查看器并将其修改为与my webapp连接,这就像再次创建birt一样。
哦!!这里是BIRT3.7集成的链接:http://wiki.eclipse.org/Birt_3.7_Migration_Guide
发布于 2012-04-24 02:39:31
一种选择是通过spring安全来保护birt web应用程序(因此在birt应用程序中需要另一个spring安全配置)。birt应用程序中的spring安全过滤器将检查来自传入会话的UserDetails对象,以确定用户是否有权访问birt web应用程序。
Spring security -> app1 -> spring security -> birt应用程序
这是一个关于堆栈溢出答案的相当大的讨论:)
发布于 2012-04-24 06:13:51
看一看Choose your jboss sso和tomcat阀门的使用。
这可能会有所帮助。
问候
https://stackoverflow.com/questions/10286184
复制相似问题