BIEE开发的报表经常会与现有系统集成 ,通常可以用iframe的方式嵌入到需要集成的系统,在这里有两种方式可以集成
:
1,通过SSO,将BI与业务集成做单点登录,可以参考类似“BI
与CAS的文章”,这类文章很多。这种方式的安全性比较好。
2,直接在集成的URL中带上NQUser、NQPassword在没有安全性要求不高的情况下是最简单经济的一种方式,需要注意的是需要集成的系统与BI在同一个域中,不然会出现二次登录的情况
。
默认情况下BIEE不能直接使用iframe
,需要修改一些配置来达成我们的目的,步骤如下:
1、修改$BI_HOME/instances/instance1/config/OracleBIPresentationServicesComponent/coreapplication_obips1/目录下的instanceconfig.xml
找到<Security>...</Security>这一段,如下:<Security>
<!--This Configuration setting is managed by Oracle Enterprise Manager Fusion Middleware
Control--><ClientSessionExpireMinutes>210</ClientSessionExpireMinutes></Security>
添加:
<InIFrameRenderingMode>allow</InIFrameRenderingMode>
完成后<Security>...</Security>段的内容为:
<Security>
<!--This Configuration setting is managed by Oracle Enterprise Manager Fusion Middleware Control--><InIFrameRenderingMode>allow</InIFrameRenderingMode><ClientSessionExpireMinutes>210</ClientSessionExpireMinutes></Security>
2、修改$BI_HOME/home/oraclebi/biee/Oracle_BI1/bifoundation/web/appv2/web.xml
这里注意一下:appv2,可能您的实际环境是app,目前我的版本是11.1.1.7,似乎11.1.1.6是app,具体原因也没深究了,只要路径对了就可以了。
添加以下内容:
<context-param>
<param-name>Oracle.adf.view.rich.security.FRAME_BUSTING</param-name><param-value>never</param-value>
</context-param>
修改完之后重启BI服务并清除浏览器缓存,若还是出现“OBIEE content can not be displayed in the IFrame”
可能您是使用的方式2的集成 ,并且直接通过IP的方式而不是通过域名的方式来访问的,当您再次访问就OK了,这也就是我在开头提到的“二次登录的情况”,需要注意。
总结:通过IFrame方式集成biee,最好是通过做单点登录(SSO)的方式,安全性高;若无条件的话只能简单集成,需要注意被集成系统与BIEE服务器需要通过域名访问的方式进行交互。