在做BIEE与其它系统集成的时候,经常需要把BIEE的页面用Iframe嵌入其它系统中(比如业务系统),在接合SSO,那么用户就可以直接在业务系统中查看BI报表而无需
二次登录了。
默认情况下,出于安全的考虑(clickjacking),BIEE 11g是不能直接嵌入iframe中的,
会提示“OBIEE content can not be displayed in the IFrame”
如果有这方面的需要,我们需要进行如下配置:
修改MV_HOME/instances/instance1/config/OracleBIPresentationServicesComponent/coreapplication_obips1目录下的instanceconfig.xml
在Security标签内加入<InIFrameRenderingMode>allow</InIFrameRenderingMode>
如下图所示:
<Security> <InIFrameRenderingMode>allow</InIFrameRenderingMode> <!--This Configuration setting is managed by Oracle Enterprise Manager Fusion Middleware Control--> <ClientSessionExpireMinutes>30</ClientSessionExpireMinutes> </Security>
注:InIFrameRenderingMode有三种取值,分别是prohibit、sameDomainOnly、allow 大家可以根据自己的实际需要选择对应的值
详情请参阅B.1.1 Protecting Pages in Oracle BI EE from Attack
修改MV_HOME/Oracle_BI1/bifoundation/web/app/WEB-INF 目录下的web.xml
添加如下内容:
<context-param>
<param-name>oracle.adf.view.rich.security.FRAME_BUSTING</param-name>
<param-value>never</param-value>
</context-param>
最终如下图所示:
<servlet-mapping> <servlet-name>RelatedContent</servlet-name> <url-pattern>/RelatedContent</url-pattern> </servlet-mapping> <context-param> <param-name>oracle.adf.view.rich.security.FRAME_BUSTING</param-name> <param-value>never</param-value> </context-param> <login-config> <auth-method>CLIENT-CERT</auth-method> </login-config>
修改完之后重启BI服务即可,如果还不行,请清除浏览器缓存。