BIEE 11 g集積オープンソースCAS実現SSO

13821 ワード

CASおよびSSOの原理については、以下の記事を参照してください.
 
---20120824更新開始----
Webを必要とします.xmlの次の部分を削除します.そうしないと、ダッシュボードTABページを切り替えるときにエラーが発生します.
また、以下の部分を削除する後も、URLにsawが含まれないことが解決する.dll?bieehome接尾辞は間違った問題を報告します!
- <!--                ,    。 
  --> 
- <filter>
  <filter-name>CAS Single Sign Out Filter</filter-name> 
  <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> 
  </filter>
- <filter-mapping>
  <filter-name>CAS Single Sign Out Filter</filter-name> 
  <url-pattern>/*</url-pattern> 
  </filter-mapping>

---20120824更新終了----
 
 
 
SSO(Single Sign-on) in Action
http://www.blogjava.net/security/archive/2006/10/02/sso_in_action.html
 
自分でCASサーバーを構築することについて
次の文書を参照してください.
JAVA CASワンポイントログイン(SSO)チュートリアル
http://www.cnblogs.com/mylitboy/archive/2011/07/15/2155634.html
CASサーバがSSLを有効にしている場合は、クライアント(つまりBIEEアプリケーションがあるサーバであるweblogic)に証明書をインポートする必要があります.証明書をインポートする方法は、上記の文書を参照してください.
 
 
CASとBIEE 11 gの統合について説明します
 
CASは主にfilterを追加することで要求をブロックするため、BIEE analyticsアプリケーションのwebを手動で変更する必要がある.xml、必要なfilterを追加します.
 
これをwarはパケットを解く(7-zipまたはWin-rarを使えばよい)、WEB-INF下のwebを修正する.xml
注意:analytics.earは$MVからHOME/Oracle_BI 1/bifoundation/jeeで見つけ、analytics.解凍してanalyticsを得るwarとanalytics-ws.war
修正したwebxmlは次のとおりです.
  <?xml version="1.0" encoding="UTF-8" ?> 
- <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
- <filter>
  <filter-name>ApplCoreSessionIntegrationFilter</filter-name> 
  <filter-class>com.siebel.analytics.web.integration.ApplCoreSessionIntegrationFilter</filter-class> 
  </filter>
- <filter>
  <filter-name>HyperionCSSAuthenticatorFilter</filter-name> 
  <filter-class>com.siebel.analytics.web.integration.HyperionCSSAuthenticatorFilter</filter-class> 
  </filter>
- <filter>
  <filter-name>LoadBalancerHTTPFilter</filter-name> 
  <filter-class>com.siebel.analytics.web.integration.LoadBalancerHTTPFilter</filter-class> 
- <init-param>
  <param-name>oracle.bi.presentation.loadbalance.ServerKeySources</param-name> 
  <param-value>GET,POST,COOKIE,SESSION</param-value> 
  </init-param>
  </filter>
- <filter>
  <filter-name>AddStaticHeadersFilter</filter-name> 
  <filter-class>com.siebel.analytics.web.integration.AddStaticHeadersFilter</filter-class> 
- <init-param>
  <param-name>oracle.bi.presentation.staticheaders.1.name</param-name> 
  <param-value>Cache-Control</param-value> 
  </init-param>
- <init-param>
  <param-name>oracle.bi.presentation.staticheaders.1.value</param-name> 
  <param-value>max-age=3600</param-value> 
  </init-param>
  </filter>
- <!--   <filter>
    <filter-name>AddStaticServerVariables</filter-name>
    <filter-class>com.siebel.analytics.web.integration.AddStaticHeadersFilter</filter-class>
    <init-param>
      <param-name>oracle.bi.presentation.staticservervariables.1.name</param-name>
      <param-value>SERVERVARIABLE_NAME</param-value>
    </init-param>
    <init-param>
      <param-name>oracle.bi.presentation.staticservervariables.1.value</param-name>
      <param-value>SERVERVARIABLE_VALUE</param-value>
    </init-param>
  </filter>

  --> 
- <filter>
  <filter-name>FirewallFilter</filter-name> 
  <filter-class>com.siebel.analytics.web.integration.FirewallFilter</filter-class> 
- <!--  
	    Uncomment AllowedRequests param below to allow only SOAP requests and prohibit UI ones
	    Uncomment ProhibitedRequests param below  to prhibit SOAP requests and allow UI  ones	
	   
  --> 
- <!--       <init-param>
         <param-name>oracle.bi.presentation.AllowedRequests</param-name>
         <param-value>SOAP</param-value>
      </init-param>
      <init-param>
         <param-name>oracle.bi.presentation.ProhibitedRequests</param-name>
         <param-value>SOAP</param-value>
      </init-param>
      
  --> 
  </filter>
- <!--    <filter-mapping>
      <filter-name>FirewallFilter</filter-name>
      <servlet-name>SAWBridge</servlet-name>
   </filter-mapping>
   
  --> 
- <!--   <filter-mapping>
    <filter-name>AddStaticServerVariables</filter-name>
    <servlet-name>SAWBridge</servlet-name>
  </filter-mapping>


  --> 
- <!--  ========================        ======================== 
  --> 
- <!--        ,              ,    
  --> 
- <listener>
  <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> 
  </listener>
- <!--                ,    。 
  --> 
- <filter>
  <filter-name>CAS Single Sign Out Filter</filter-name> 
  <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class> 
  </filter>
- <filter-mapping>
  <filter-name>CAS Single Sign Out Filter</filter-name> 
  <url-pattern>/*</url-pattern> 
  </filter-mapping>
- <!--               ,      
  --> 
- <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.test.com:8443/cas-server-webapp-3.5.0/login</param-value> 
- <!--    server     IP
  --> 
  </init-param>
- <init-param>
  <param-name>serverName</param-name> 
  <param-value>http://demo.us.oracle.com: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.test.com:8443/cas-server-webapp-3.5.0</param-value> 
  </init-param>
- <init-param>
  <param-name>serverName</param-name> 
  <param-value>http://demo.us.oracle.com: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>
  <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 HttpServletRequest Wrapper Filter</filter-name> 
  <url-pattern>/*</url-pattern> 
  </filter-mapping>
- <!--  ========================        ======================== 
  --> 
- <filter-mapping>
  <filter-name>LoadBalancerHTTPFilter</filter-name> 
  <servlet-name>SAWBridge</servlet-name> 
  </filter-mapping>
- <filter-mapping>
  <filter-name>ApplCoreSessionIntegrationFilter</filter-name> 
  <servlet-name>SAWBridge</servlet-name> 
  </filter-mapping>
- <filter-mapping>
  <filter-name>HyperionCSSAuthenticatorFilter</filter-name> 
  <servlet-name>SAWBridge</servlet-name> 
  </filter-mapping>
- <!--   
   <filter-mapping>
      <filter-name>AddStaticHeadersFilter</filter-name>
      <url-pattern>/res/*</url-pattern>
   </filter-mapping>
   
  --> 
- <servlet>
  <servlet-name>SAWBridge</servlet-name> 
  <servlet-class>com.siebel.analytics.web.SAWBridge</servlet-class> 
- <init-param>
  <param-name>oracle.bi.presentation.sawserver.Host</param-name> 
  <param-value>localhost</param-value> 
  </init-param>
- <init-param>
  <param-name>oracle.bi.presentation.sawserver.Port</param-name> 
  <param-value>9710</param-value> 
  </init-param>
- <init-param>
  <param-name>oracle.bi.presentation.biapplication</param-name> 
  <param-value>coreapplication</param-value> 
  </init-param>
  </servlet>
- <servlet>
  <description>Hyperion Related Content request handler</description> 
  <display-name>RelatedContent</display-name> 
  <servlet-name>RelatedContent</servlet-name> 
  <servlet-class>oracle.bi.server.workspace.RelatedContent</servlet-class> 
- <init-param>
  <param-name>oracle.bi.presentation.relatedContent.dimensionMappingFilePath</param-name> 
  <param-value>${oracle.domain.config.dir}/biinstances/${oracle.bi.application}/FRDimensionsMapping.properties</param-value> 
  </init-param>
- <init-param>
  <param-name>oracle.bi.presentation.relatedContent.SAWServlet</param-name> 
  <param-value>saw.dll</param-value> 
  </init-param>
  </servlet>
- <servlet-mapping>
  <servlet-name>SAWBridge</servlet-name> 
  <url-pattern>/saw.dll/*</url-pattern> 
  </servlet-mapping>
- <servlet-mapping>
  <servlet-name>RelatedContent</servlet-name> 
  <url-pattern>/RelatedContent</url-pattern> 
  </servlet-mapping>
- <login-config>
  <auth-method>CLIENT-CERT</auth-method> 
  </login-config>
- <mime-mapping>
  <extension>xsd</extension> 
  <mime-type>text/xml</mime-type> 
  </mime-mapping>
- <mime-mapping>
  <extension>xml</extension> 
  <mime-type>text/xml</mime-type> 
  </mime-mapping>
- <mime-mapping>
  <extension>js</extension> 
  <mime-type>text/javascript</mime-type> 
  </mime-mapping>
- <mime-mapping>
  <extension>css</extension> 
  <mime-type>text/css</mime-type> 
  </mime-mapping>
- <mime-mapping>
  <extension>png</extension> 
  <mime-type>image/png</mime-type> 
  </mime-mapping>
- <mime-mapping>
  <extension>swf</extension> 
  <mime-type>application/x-shockwave-flash</mime-type> 
  </mime-mapping>
- <welcome-file-list>
  <welcome-file>default.jsp</welcome-file> 
  </welcome-file-list>
  </web-app>

 
注:sso.test.comはCASサーバーがあるサーバーのドメイン名、demo.us.oracle.comはBIEEサービスがあるサーバのドメイン名です.
皆さんは自分の実情に合わせて変更してください!
 
修正後、CASクライアントのjarパッケージ(cas-client-core-3.2.1.jarなど)をWEB-INFのlibディレクトリに配置する必要があります.
 
 
修正後、JDKが持参したjarを使って再パッケージし、
例:jar-cf analytics.war .
そしてanalytics.war及びanalytics-ws.warは、以前の同級ディレクトリのMETA-INFフォルダとともにanalyticsにパッケージ化されています.ear
例:jar-cf analytics.ear .
 
その後、weblogic consoleにアプリケーションを再配置し、起動します.
 
さらに、CASに接続されているユーザ認証ライブラリ(AD、LDAP、またはデータベース)に接続するためのセキュリティ領域にProviderを新規作成することも重要です.
BIEEはCAS認証に合格したユーザー名を持ってこのProviderに問い合わせているので、存在しなければログインできません.
 
 
最後にemでBIに対してSSOを有効にする
次の図に示します.
 
 
変更をアクティブにし、opmnのすべてのコンポーネントを再起動すればOKです.
 
次にhttp://xxxxx:9704/analytics/saw.dll?bieehomeBIEEにアクセスすればいい!
 
注意:urlは必ず後ろのsawを持ってきてください.dll?bieehome接尾辞、さもなくば間違いを報告します!