2

我在一个 jboss as7 实例上部署了两个 Web 应用程序。一个应用程序是基于 spring/maven 的,并使用 spring 安全性进行身份验证。另一个应用程序是不需要直接登录身份验证的 birt Web 应用程序。这两个应用程序由一个菜单链接连接,该链接仅在登录用户拥有管理角色时显示。所以 spring 应用程序是主应用程序,如果用户是经理,它会提供一个 birt Web 应用程序的链接。我的问题是 spring 应用程序是安全的(没有直接的 url 访问,用户需要登录等),但是如果有人知道应用程序的 url,则可以在不登录的情况下访问 birt 应用程序。我不想有两个单独的登录页面。我希望 spring 应用程序身份验证也确定对 birt 应用程序的访问,但我不清楚如何执行此操作。我在我的 birt 应用程序的 web.xml 文件和 jboss-web.xml 文件中添加了一个安全约束来为应用程序建立安全域。安全约束是否存在并没有区别,但安全域确实限制了通过 url 访问 birt 应用程序。那么从这里开始下一步是什么?如何从 spring 应用程序(jsessionid?)获取身份验证并使用它来允许用户访问包含 birt 应用程序的安全域?那么从这里开始下一步是什么?如何从 spring 应用程序(jsessionid?)获取身份验证并使用它来允许用户访问包含 birt 应用程序的安全域?那么从这里开始下一步是什么?如何从 spring 应用程序(jsessionid?)获取身份验证并使用它来允许用户访问包含 birt 应用程序的安全域?

如果有人想知道,这两个应用程序都在同一个域上……例如“域/springApp 或域/birtApp”。

4

3 回答 3

1

这里也有同样的问题,因为 birt.war 完全是一个单独的 webapp .. 它有自己的会话,所以任何人都可以通过 url 知道你的 birt.war 名称和报告名称,他们不仅可以在没有身份验证的情况下运行报告,还可以下载你的报告这又是一个安全问题(这里下载报告是指.rptdesign 文件,他们可以在其中看到您的查询)。

可能的解决方案是: -

1> 在您的 webapp 中集成 BIRT 报告引擎 3.7,并使用 servlet 生成报告 html 页面,然后在您的应用程序中显示。在这方面,缺点是它会为您运行的每个报告创建 html 文件,并且不会获得 Web 查看器的 ajax 功能和导出功能,如 excel、pdf 等。

2> 这对我不起作用,但你可以试一试。在你的 webapp 中集成 BIRT 3.7 web 查看器。我做了这个并且能够在我的 webapp 中显示 web 查看器,但这个链接也可以工作:report=report1.rptdesign">http://localhost:7110/myapp/frameset?_report=report1.rptdesign

我认为它会将此链接重定向到我的 webapp 登录页面,就像它对我的 webapp 中的任何其他页面所做的那样,但我得到了一个很大的否定。原因是单独的会话。

结论是从 birt 中提取 web 查看器并修改它以连接我的 webapp,这就像再次创建 birt。

哦!!这是 birt 3.7 集成的链接:http ://wiki.eclipse.org/Birt_3.7_Migration_Guide

于 2012-04-26T11:06:11.763 回答
0

一种选择是通过 spring 安全性保护 birt Web 应用程序(因此 birt 应用程序中需要另一个 spring 安全性配置)。birt 应用程序中的 spring 安全过滤器将检查传入会话中的 UserDetails 对象,以确定用户是否有权访问 birt Web 应用程序。

Spring Security -> app1 -> spring security -> birt app

这是一个关于堆栈溢出答案的相当大的讨论:)

于 2012-04-23T18:39:31.207 回答
0

看看选择你的 jboss sso和 tomcat 阀门的使用。

这可能会有所帮助。

问候

于 2012-04-23T22:13:51.443 回答