zoukankan      html  css  js  c++  java
  • CAS做单点登陆(SSO)——集成BIEE 11g

    BIEE 11G和CAS集成零代码编写,只需配置。

    更改BIEE analytics应用的web.xml
    将analytics.war解包(使用7-zip或者Win-rar就可以),然后修改WEB-INF下的web.xml

    注:analytics.ear可以从$MV_HOME/Oracle_BI1/bifoundation/jee下找到,将analytics.ear解压之后得到analytics.war和analytics-ws.war

    修改过的web.xml,添加内容,如下:

    [html]
    <!-- ======================== 单点登录开始 ======================== --> 
        <!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置--> 
        <listener> 
            <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> 
        </listener> 
        <!-- 该过滤器负责用户的认证工作,必须启用它 --> 
        <filter> 
            <filter-name>CASFilter</filter-name> 
            <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class> 
            <init-param> 
                <param-name>casServerLoginUrl</param-name> 
                <param-value>https://sso.aurora-framework.org:8081/cas/login</param-value> 
                <!--这里的server是服务端的IP--> 
            </init-param> 
            <init-param> 
                <param-name>serverName</param-name> 
                <param-value>http://sso.aurora-framework.org:9704</param-value> 
            </init-param> 
        </filter> 
        <filter-mapping> 
            <filter-name>CASFilter</filter-name> 
            <url-pattern>/*</url-pattern> 
        </filter-mapping> 
        <!-- 该过滤器负责对Ticket的校验工作,必须启用它 --> 
        <filter> 
            <filter-name>CAS Validation Filter</filter-name> 
            <filter-class> 
                org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class> 
            <init-param> 
                <param-name>casServerUrlPrefix</param-name> 
                <param-value>https://sso.aurora-framework.org:8081/cas</param-value> 
            </init-param> 
            <init-param> 
                <param-name>serverName</param-name> 
                <param-value>http://sso.aurora-framework.org:9704</param-value> 
            </init-param> 
        </filter> 
        <filter-mapping> 
            <filter-name>CAS Validation Filter</filter-name> 
            <url-pattern>/*</url-pattern> 
        </filter-mapping> 
        <!-- 
            该过滤器负责实现HttpServletRequest请求的包裹, 
            比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。 
        --> 
        <filter> 
            <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> 
            <filter-class> 
                org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class> 
        </filter> 
        <filter-mapping> 
            <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> 
            <url-pattern>/*</url-pattern> 
        </filter-mapping> 
        <!-- 
            该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 
            比如AssertionHolder.getAssertion().getPrincipal().getName()。 
        --> 
        <filter> 
            <filter-name>CAS Assertion Thread Local Filter</filter-name> 
            <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class> 
        </filter> 
        <filter-mapping> 
            <filter-name>CAS Assertion Thread Local Filter</filter-name> 
            <url-pattern>/*</url-pattern> 
        </filter-mapping> 
        <!-- ======================== 单点登录结束 ======================== -->

    <!-- ======================== 单点登录开始 ======================== -->
    <!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置-->
    <listener>
      <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
    </listener>

    <!-- 该过滤器负责用户的认证工作,必须启用它 -->
    <filter>
      <filter-name>CASFilter</filter-name>
      <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
      <init-param>
       <param-name>casServerLoginUrl</param-name>
       <param-value>https://sso.aurora-framework.org:8081/cas/login</param-value>
       <!--这里的server是服务端的IP-->
      </init-param>
      <init-param>
       <param-name>serverName</param-name>
       <param-value>http://sso.aurora-framework.org:9704</param-value>
      </init-param>
    </filter>
    <filter-mapping>
      <filter-name>CASFilter</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- 该过滤器负责对Ticket的校验工作,必须启用它 -->
    <filter>
      <filter-name>CAS Validation Filter</filter-name>
      <filter-class>
       org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
      <init-param>
       <param-name>casServerUrlPrefix</param-name>
       <param-value>https://sso.aurora-framework.org:8081/cas</param-value>
      </init-param>
      <init-param>
       <param-name>serverName</param-name>
       <param-value>http://sso.aurora-framework.org:9704</param-value>
      </init-param>
    </filter>
    <filter-mapping>
      <filter-name>CAS Validation Filter</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--
      该过滤器负责实现HttpServletRequest请求的包裹,
      比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。
    -->
    <filter>
      <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
      <filter-class>
       org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--
      该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。
      比如AssertionHolder.getAssertion().getPrincipal().getName()。
    -->
    <filter>
      <filter-name>CAS Assertion Thread Local Filter</filter-name>
      <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>CAS Assertion Thread Local Filter</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- ======================== 单点登录结束 ======================== -->

    其中serverName是biee analytics的地址和端口,当前配置cas项目和biee在同一台机器上,所以用相同的,请更加项目实际情况,修改为biee实际部署的机器地址。

    添加证书
    Biee作为一个应用安装在weblogic服务器上,weblogic使用的jvm不一定是系统安装的,可以在这里(console->bifoundation->环境->服务器->bi_server1->密钥库)找到weblogic使用的jvm:

    \

    修改“java标准信任密钥库密码短语”,输入默认密码changeit。

    并把上文中提到的aurora.crt文件导入到“java标准信任密钥库”指定的目录中,这里是“D:/BIEE11116/jrockit_160_24_D1.1.2-4/jre/lib/security/cacerts”。所以完整语句是:

    [java]
    keytool -import -keystore "D:/BIEE11116/jrockit_160_24_D1.1.2-4/jre/lib/security/cacerts" -file E:/tomcat/tomcat7/keystore/aurora.crt -alias aurora

    keytool -import -keystore "D:/BIEE11116/jrockit_160_24_D1.1.2-4/jre/lib/security/cacerts" -file E:/tomcat/tomcat7/keystore/aurora.crt -alias aurora

    注意:如果weblogic使用的jvm不是sun公司提供的,那么导入没有问题,在运行时,会报证书已经破损的错误。此时需要修改$MV_HOME\user_projects\domains\bifoundation_domain\bin\setDomainEnv.cmd(这里是windows,如果是unix应该找到setDomainEnv.sh)文件,在末尾添加

    [java]
    set JAVA_OPTIONS=%JAVA_OPTIONS% -Dfile.encoding=GBK -DUseSunHttpHandler=true 

    set JAVA_OPTIONS=%JAVA_OPTIONS% -Dfile.encoding=GBK -DUseSunHttpHandler=true

    修改完毕之后还需要将CAS client的jar包(如:cas-client-core-3.2.1.jar)到WEB-INF/lib

    修改完毕之后,使用JDK自带的jar 进行重新打包,

    例如:

    [java]
    jar -cf analytics.war .

    jar -cf analytics.war .

    然后在将analytics.war及analytics-ws.war以及之前同级目录下的META-INF文件夹一同打包成analytics.ear

    例如:

    [java]
    jar -cf analytics.ear .

    jar -cf analytics.ear .

    之后在到weblogic console中重新部署该应用,并启动。

    在到em里对BI启用SSO

    如下图所示:

    激活更改,重启opmn所有组件就OK了。

    访问BIEE

    自动跳转为

    把biee页面作为iframe嵌入到java web项目页面中

    默认情况下,出于安全的考虑,BIEE 11g是不能直接嵌入iframe中的,会提示“OBIEE content can not be displayed in the IFrame”。

    如果有这方面的需要,我们需要进行如下配置:

    修改$MV_HOME/instances/instance1/config/OracleBIPresentationServicesComponent/coreapplication_obips1目录下的instanceconfig.xml

    在Security标签内加入allow。

    如下图所示:

    \

    [html]
    <Security> 
        <InIFrameRenderingMode>allow</InIFrameRenderingMode> 
        <ClientSessionExpireMinutes>210</ClientSessionExpireMinutes> 
    </Security> 

    <Security>
    <InIFrameRenderingMode>allow</InIFrameRenderingMode>
    <ClientSessionExpireMinutes>210</ClientSessionExpireMinutes>
    </Security>

    注:

    InIFrameRenderingMode有三种取值,分别是prohibit、sameDomainOnly、allow  大家可以根据自己的实际需要选择对应的值
    详情请

    修改$MV_HOME/Oracle_BI1/bifoundation/web/app/WEB-INF 目录下的web.xml
    添加如下内容:

    [html]
    oracle.adf.view.rich.security.FRAME_BUSTING 
    never

    oracle.adf.view.rich.security.FRAME_BUSTING
    never
    效果如下:

    \
    修改完之后重启BI服务即可,如果还不行,请清除浏览器缓存。

    页面中嵌入BIEE
    在页面中添加

    [html]
    <iframe id="biee" frameborder="no" width="1170" height="545" src="http://sso.aurora-framework.org:9704/analytics/saw.dll?bieehome" style="broder:none;margin:0;padding:0;" />

    <iframe id="biee" frameborder="no" width="1170" height="545" src="http://sso.aurora-framework.org:9704/analytics/saw.dll?bieehome" style="broder:none;margin:0;padding:0;" />
    效果如下:

    \

  • 相关阅读:
    在Postman用post方式请求webapi
    C#控制台为输出内容设置背景色和字体颜色
    不卡界面,实现文件上传
    编译后的dll,xml,pdb分别是什么内容,各有什么用处?
    C#的dynamic解析xml
    Oracle中的正则表达式
    oracle中 connect by 递归查询用法
    oracle中 listagg() WITHIN GROUP () 行转列函数的使用
    oracle中dualde使用
    MYSQL基本命令
  • 原文地址:https://www.cnblogs.com/jerryxing/p/3044816.html
Copyright © 2011-2022 走看看