ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Identity Federation管理者ガイド
11gリリース1 (11.1.1)
B66693-04
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

11 ビジネス処理プラグイン用のOracle Identity Federationの構成

Oracle Identity Federationは、サーバーによって実行される操作のビジネス処理をカスタマイズするためのプラグイン・フレームワークを提供します。この章では、プラグイン機能について説明し、例を紹介します。

11.1 ビジネス処理プラグインについて

この項では、プラグイン・フレームワークのいくつかの要点について説明します。

11.1.1 ビジネス処理プラグインの基本フロー

プロセス・フローは次のようになります。

  • ビジネス・フローの様々なセクションで呼び出されるプラグインを実装します。

  • プラグインでは、操作の実行中に収集されたデータを分析し、追加のビジネス・ステップが必要かどうかを判断できます。

  • 追加のアクションを実行すべき場合は、プラグインはユーザーのリダイレクト先のURLをOracle Identity Federationに返します。

  • リダイレクションURLには、プラグインによって設定された問合せ文字列パラメータを含めることができます。

  • Oracle Identity FederationはrefIDによって参照される1つの問合せ文字列パラメータを追加します。これは、ユーザーがOracle Identity Federationに戻される際に送信されます。

  • 追加の操作が実行された場合、ユーザーはrefidパラメータとともに次のURLでOracle Identity Federationにリダイレクトされる必要があります。

    http(s)://OIF-HOST:OIF-PORT/fed/user?refid=VALUE_RETRIEVED_FROM_REDIRECT_URL
    

11.1.2 実装

ビジネス・プラグインを実装するために必要な作業は次のとおりです。

11.1.3 プラグインの構築、操作およびパラメータ

プラグインの構築

プラグインはoracle.security.fed.plugins.bizops.OperationListenerインタフェースを拡張し、public ListenerResult process(int operationType, OperationData params)メソッドを実装する必要があります。

このメソッドには2つの引数があります。1つ目には実行される操作のタイプを、2つ目にはこの操作に関連するパラメータを指定します。このパラメータはプラグインが判断する際に使用します。メソッドは、ステータスおよびオプションのredirectURLを含むListenerResultクラスを返します。ステータスがOKの場合、Oracle Identity Federationは操作を再開します。OKではない場合は、指定されたリダイレクションURLにユーザーをリダイレクトします。

操作

次の操作があります。

  • OperationTypes.BUSINESS_IDP_CREATE_PERSISTENT_FEDERATION: IdP側に永続フェデレーションが作成されることを示します。

  • OperationTypes.BUSINESS_IDP_CREATE_TRANSIENT_FEDERATION: IdP側に一時フェデレーションが作成されることを示します。

  • OperationTypes.BUSINESS_IDP_SSO: IdP側でSSO処理が実行されることを示します。

渡されるパラメータ

OperationDataオブジェクトで渡されるパラメータは次のとおりです。

  • BusinessProcessingConstants.DATA_STRING_PROVIDERID: サービス・プロバイダIDを参照します。タイプはStringです

  • BusinessProcessingConstants.DATA_STRING_USERID: ユーザーIDを参照します。タイプはStringです。

  • BusinessProcessingConstants.DATA_STRING_SESSIONID: セッションIDを参照します。タイプはStringです。

  • BusinessProcessingConstants.DATA_STRING_NAMEID_FORMAT: 作成されているフェデレーションの名前IDフォーマットを参照します。タイプはStringです。

  • BusinessProcessingConstants.DATA_STRING_PROTOCOL_VERSION: 実行されるプロトコルを参照します。タイプはStringです。

  • BusinessProcessingConstants.DATA_BOOLEAN_AUTHNREQUEST_ISPASSIVE: AuthnRequestからのIsPassiveフィールドを参照します。タイプはBooleanです

ListenerResultクラスの戻りステータス値は次のとおりです。

  • BusinessProcessingConstants.STATUS_OK: プラグインには特定のアクションは必要ないことを示します。

  • BusinessProcessingConstants.STATUS_REDIRECT: プラグインはユーザーをURLにリダイレクトする必要があることを示します。

11.2 ビジネス処理プラグインの構成

Oracle Identity Federation構成ファイルにプラグインを追加するには、次の手順を実行します。

  1. $DOMAIN_HOME/config/fmwconfig/servers/wls_oif1/applications/OIF_11.1.1.2.0/configuration/config.xmlファイルを開きます。

  2. 属性名がserverconfigであるConfig XML要素を見つけます。

  3. 属性名がbusinessprocessingpluginsであるPropertiesList XML要素を見つけます。

  4. Property XML子要素をPropertiesListに追加します。Property要素のテキスト子要素はプラグインのクラス名にし、この要素のタイプ属性はstringにする必要があります。

  5. 保存して終了します。

構成ファイルの例を次に示します。

<FederationConfig xmlns="http://xmlns.oracle.com/fed/schema/oif-11_2.xsd" version="0" activationenabled="false">
   <Config name="serverconfig">
        ...
       <PropertiesList name="businessprocessingplugins">
          <Property type="string">oracle.security.fed.plugins.BusinessProcessingSample</Property>
       </PropertiesList>
        ...
   </Config>
   ...
</FederationConfig>

11.3 プラグインのパッケージ化

プラグインをパッケージ化するには、次の手順を実行します。

  1. プラグインをjarファイルに追加します。

  2. jarファイルをOracle WebLogic Serverのlibディレクトリにコピーします。

    Oracle/Middleware/user_projects/domains/IDMDomain/lib
    
  3. 必要な他のjarファイルを同じディレクトリにコピーします。

    • oif.jarOracle/Middleware/Oracle_IDM1/fed/jlib/からOracle/Middleware/user_projects/domains/IDMDomain/libにコピーします。


      注意:

      パッチ・セットを適用するたびに、この手順を繰り返します。

    • commons-httpclient-3.1.jarを同じディレクトリにコピーします。

    • commons-codec-1.2.jarを同じディレクトリにコピーします。

環境構成の詳細は、『Oracle Fusion Middleware管理者ガイド』の環境変数の設定に関する項を参照してください。

11.4 JavaEEセキュリティの構成

次の場所にあるWebLogicポリシー・ファイルを更新します。

Oracle/Middleware/wlserver_10.3/server/lib/weblogic.policy

このファイルに次の行を追加します。

grant codeBase "file:${user.domain}/lib/-" {
  permission java.security.AllPermission;
  };
  grant codeBase
  "file:/home/oracle/Oracle/Middleware/user_projects/domains/IDMDomain/lib/-"
  {
  permission java.security.AllPermission;
  };

11.5 プラグインとリダイレクト・ページの例

サンプル・プラグインは、次のようになります。

package oracle.security.fed.plugins;
 
import java.net.URLEncoder;
import java.util.Set;
import java.util.HashSet;
 
import oracle.security.fed.plugins.bizops.BusinessProcessingConstants;
import oracle.security.fed.plugins.bizops.BusinessProcessingException;
import oracle.security.fed.plugins.bizops.ListenerResult;
import oracle.security.fed.plugins.bizops.OperationData;
import oracle.security.fed.plugins.bizops.OperationListener;
import oracle.security.fed.plugins.bizops.OperationTypes;
 
// in this example, the plug-in will redirect the user to an external page the first time a user 
// creates a persistent federation. Later on, if the user creates another federation (with the same
// provider or another one), the plug-in will not redirect the user anymore.
// Note: restarting the server will wipe out the cached information from the plug-in, resetting the data
// indicating whether or not any user was already redirected to the external page.
 
public class BusinessProcessingSample implements OperationListener {
 
    private Set licenseAgreements = new HashSet();
 
    public ListenerResult process(int operationType, OperationData params)
        throws BusinessProcessingException {
        ListenerResult result = new ListenerResult(BusinessProcessingConstants.STATUS_OK);
 
        switch(operationType)
        {
            case OperationTypes.BUSINESS_IDP_CREATE_PERSISTENT_FEDERATION:
                   String userid = params.getStringProperty(BusinessProcessingConstants.DATA_STRING_USERID);
                   if (!licenseAgreements.contains(userid))
                   {
                       // redirect to remote page
                       result.setStatus(BusinessProcessingConstants.STATUS_REDIRECT);
 
                       StringBuffer sb = new StringBuffer();
                       sb.append("http://WEB-SERVER-HOST:WEB-SERVER-PORT/businesstest.jsp?providerid=");
                       sb.append(URLEncoder.encode(params.getStringProperty(BusinessProcessingConstants.DATA_STRING_PROVIDERID)));
                       sb.append("&userid=");
                       sb.append(URLEncoder.encode(params.getStringProperty(BusinessProcessingConstants.DATA_STRING_USERID)));
                       result.setRedirectURL(sb.toString());
 
                       // add the user to the license agreement set
                       licenseAgreements.add(userid);
                   }
                   break;
        }
 
        return result;
    }
}

次に、サンプル・リダイレクト・ページを示します。

<%@ page language="java"
    import="java.net.*"%>
<%
// Set the Expires and Cache Control Headers
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "Thu, 29 Oct 1969 17:04:19 GMT");
 
String providerid = request.getParameter("providerid");
String userid = request.getParameter("userid");
String refid = request.getParameter("refid");
 
String returnurl = "http://OIF-HOST:OIF-PORT/fed/user?refid=" + URLEncoder.encode(refid);
%>
 
<html>
<body>
License Agreeement approved for:
ProviderID = <%=providerid%>
<BR>
UserID = <%=userid%>
<BR>
<a href="<%=returnurl%>">Click here to resume flow</a>
 
</body>
</html>

11.6 ビジネス処理プラグインAPI

ビジネス処理プラグインAPI(javadoc)は次のページから入手できます。

Oracle Fusion Middleware Oracle Identity Federationビジネス処理プラグインJava APIリファレンス