ヘッダーをスキップ
Oracle Access Manager統合ガイド
10g(10.1.4.3)
B55481-01
  目次
目次
索引
索引

戻る
戻る
次へ
次へ
 

5 Oracle Application Server 10g: OC4Jとの統合

この章では、認証および認可を目的とするOracle Access ManagerとOracleAS Single Sign-On 10gの統合方法を説明します。Oracle Access ManagerとOracleAS Single Sign-Onのいずれかを認証エンジンにすることができます。

この統合を行うと、Oracle E-Business Suit、Oracle Forms、Portal、およびその他のアクセス・システムの保護リソースなど、Oracle ApplicationServer上で稼働するWebベースの全アプリケーションで、アイデンティティ管理機能を使用できるようになります。

この章では、次の内容について説明します。


注意:

この章には、Oracle Fusion Middlewareのシングル・サインオンの構成に関する説明は含まれません。これらの詳細は、『Oracle Fusion Middlewareセキュリティ・ガイド』を参照してください。

5.1 統合概要および環境の準備

この項では、次の内容について説明します。

5.1.1 Oracle Application Serverのサポートされる認証スキーム

Oracle Access Managerは、OracleAS 10gの認証およびシングル・サインオンを提供します。これにより、単一のユーザー名およびパスワード(ならびに任意でレルムID)を使用してOracle Application Serverおよびその他のWebアプリケーションのすべての機能にログインできます。統合では、次の認証スキームを使用します。

  • フォーム・ベース

  • Basic

  • カスタム

  • 統合Windows認証

5.1.2 OracleAS 10gインフラストラクチャ

OracleAS 10gアプリケーションでは、Oracleおよびその他のパートナ・アプリケーション向けシングル・サインオンの同様のインフラストラクチャおよびセキュリティ・フレームワークを提供します。Oracle Access Managerシングル・サインオンのOracleAS 10gへの統合では、次のコンポーネントを使用します。

OracleAS Single Sign-On Server: Oracleアプリケーションが、他のアプリケーションからの認証を受けることが可能になります。アクセス・システムの保護アプリケーションおよびOracleAS 10gシングル・サインオン・フレームワーク内で保護されるアプリケーション間のシングル・サインオンを有効にできます。これにより、単一のユーザー名およびパスワード(ならびに任意でレルムID)を使用してOracle Application Serverおよびその他のWebアプリケーションのすべての機能にログインできます。

Oracle HTTP Server: OracleAS 10gのWebサーバー・インタフェースです。Oracle HTTP Serverは、Oracle Access ManagerおよびOracleAS 10g間の統合ポイントです。


注意:

Oracle HTTP Server向け10g(10.1.4.2)WebGateを使用する必要があります。

Oracle Internet Directory (OID): OracleAS 10gアプリケーションのユーザー・リポジトリとして機能するLDAPディレクトリ。Oracle Internet Directoryは、他の接続ディレクトリと同期できます。

5.1.3 統合アーキテクチャ

図5-1は、Oracle Access ManagerおよびOracle Application Server間の統合を示しています。

図5-1 Oracle Access ManagerおよびOracle Application Serverの統合アーキテクチャ

統合アーキテクチャ
「図5-1 Oracle Access ManagerおよびOracle Application Serverの統合アーキテクチャ」の説明

プロセスの概要: Oracle Access ManagerのOracle Application Serverとの統合

  1. Oracle Access Managerにより保護されたアプリケーションまたはWebリソースにアクセスしようとすると、WebGateによりリクエストが捕捉されます。

  2. WebGateは、アクセス・サーバーのセキュリティ・ポリシーに対して、リソースが保護されているかどうかを判断するようリクエストします。

  3. リソースが保護されている場合、WebGateはユーザーに認証を指示します。

  4. ユーザーが入力した資格証明が、認証目的でディレクトリとの照合により検証されます。

  5. 認証に成功すると、暗号化されたOracle Access Managerのシングル・サインオンCookieがユーザーのブラウザに設定されます。

  6. 認証に成功した後、アクセス・システムにより、リソースに対して構成されたポリシーを適用することによりユーザーが認可されるかどうかが決定されます。

  7. 認可に成功すると、アクセス・システムはセキュリティ・ポリシーで定義されているアクションを実行し、OracleAS 10gのユーザーIDにマップするHTTPヘッダー変数を設定します。

  8. OracleAS Single Sign-On ServerはOracle Access Managerのヘッダー変数を認識し、ユーザーを認可し、Oracleシングル・サインオンCookieを設定します。


注意:

Oracle Internet DirectoryをOracle Access Managerディレクトリと同期して、ユーザー・データを最新に保つ必要があります。Oracle Internet Directoryにより同期が実行されます。

5.1.4 サポートされている統合

最新のサポート情報は、Oracle Technology Network(OTN)を参照してください。

最新の動作確認の詳細を検索する手順

  1. Oracle Technology Networkに移動します。

    http://www.oracle.com/technology/software/products/ias/files/fusion_certification.html
    
  2. 「Oracle Identity and Access Management」を探し、最新のOracle Access Manager動作確認のスプレッドシートへのリンクをクリックします。次に例を示します。

    System Requirements and Supported Platforms for Oracle Access Manager 10gR3 (xls)

    http://www.oracle.com/technology/products/id_mgmt/coreid_acc/pdf/
    oracle_access_manager_certification_10.1.4_r3_matrix.xls

5.1.5 環境の準備

次のタスクの概要では、シングル・サインオンの構成準備の要件を一覧表示します。

タスクの概要: 環境の準備

  1. OracleAS 10gをインストールします。

  2. OracleAS 10gインフラストラクチャをインストールします。次のコンポーネントが含まれています。

    • Oracle Application Server Metadata Repository

    • OracleAS Single Sign-On Server

    • Oracle Internet Directory(Lightweight Directory Access Protocol(LDAP))


    注意:

    OracleインフラストラクチャおよびOracle Access Managerをインストールするサーバーは、hostname.domain.netなど、完全修飾ドメイン名にする必要があります。

  3. Oracle Access Managerのコンポーネントをインストールし、設定します。

    詳細は、『Oracle Access Managerインストレーション・ガイド』を参照してください。次をインストールします。

    • アイデンティティ・サーバー

    • WebPass

    • ポリシー・マネージャ

    • アクセス・サーバー

  4. Oracle HTTP Serverをホストするコンピュータで、『Oracle Access Managerインストレーション・ガイド』の説明に従ってOracleAS 10gとともに使用するWebGateをインストールし、次のいずれかのオプションを選択してWebサーバー構成ファイルを更新します。

    • Web Serverの自動更新: 『Oracle Access Managerインストレーション・ガイド』に説明されているように、WebGateのインストール時に自動的にWebサーバー構成ファイル(Oracle HTTP Server httpd.conf)を更新するには、「はい」をクリックします。

    • Web Serverの手動更新: 次のいずれかの方法を使用します。

      WebGateのインストール後にOracle HTTP Server httpd.confファイルを検索し、ファイルの最後にWebGateエントリを追加し、インフラストラクチャ端末で次のコマンドを実行します。

      opmnctl restartproc process-type=HTTP_Server

      または、Oracle Enterprise Managerコンソールを使用して、次を実行します。

      a. Oracle Enterprise Managerを起動します。

      b. OracleインフラストラクチャをホストするOracle Application Serverを選択します。

      c. WebGateをホストするHTTPサーバーを選択します。

      d. 「拡張サーバー・プロパティ」に移動します。

      e. 構成ファイルのリストから、更新用のhttpd.confファイルを選択します。

      f. ファイルの最後にWebGateエントリをインクルードします。

  5. Webサーバー構成ファイルの更新後、Oracle HTTP Serverを再起動します。

  6. サード・パーティ・アクセス管理システムとの統合のためにOracleAS Single Sign-Onを構成します。

    詳細は、Oracle Technology Network(http://www.oracle.com/technology/documentation/oim1014.html)にある『Oracle Application Server Single Sign-On管理者ガイド』の関連する章を参照してください。

  7. Cookieを許可するようWebブラウザを構成します。

  8. 「OracleAS 10gとのシングル・サインオン」に進みます。

5.2 OracleAS 10gとのシングル・サインオン

Oracle Access ManagerをOracleAS 10g Application Serverと統合すると、OracleASの各アプリケーションの構成が個別に提供されます。この統合では、サード・パーティ・アクセス管理システムとの統合のためにOracleAS 10gを構成し、Oracle Access Managerのログアウトを構成する必要があります。

統合用にOracleAS 10gを設定するには、次の手順を実行します。

タスクの概要: Oracle Access ManagerのOracleAS 10gとの統合

  1. 「環境の準備」で説明するように、コンピュータを設定します。

  2. OracleASを設定します。

  3. 「OracleAS 10gとの統合のためのOracle Access Manager 10g(10.1.4.3)の構成」の説明に従って、Oracle Access Managerを設定します。

  4. 「OracleASとの統合テスト」で説明するように、統合をテストします。

5.2.1 シングル・サインオンの有効化

Oracle Access ManagerおよびOracleAS 10gの統合のためのシングル・サインオンの有効化では、次に説明するように、Javaクラスを作成し、policy.propertiesファイルを編集します。

5.2.1.1 統合用のJavaクラスの作成方法

統合用にシングル・サインオンを有効化する最初ステップでは、Oracle Access Managerのヘッダー変数を検索するJavaクラスをコーディングします。


注意:

この例では、アイデンティティ・システムとアクセス・システムをインストールおよび設定済で、アクセス・システムにポリシー・ドメインを作成し、ユーザーのIDでヘッダー変数を設定する認可アクションを定義し、グローバル・ログアウトを構成していることを前提としています。詳細は、「シングル・サインオン・ログインURLの保護方法」および「OracleAS Single Sign-Onおよびアクセス・サーバーからのグローバル・ログアウトの実装方法」を参照してください。

JAVAクラスをコード化してOracle Access Managerヘッダー変数を検索する手順

  1. アクセス・システムで、次のURLを保護するルールを作成します。

    /sso/auth/

    /pls/orasso/orasso.wwsso_app_admin.ls_login

    詳細は、「シングル・サインオン・ログインURLの保護方法」を参照してください。

  2. パッケージ用のJavaファイルを作成します。

    ヘルプ用に、「SSOOblixAuth.java」(または次の場所にあるSample Filesセクション#SSOOblixAuth.java)のソース・コードをコピーします。

    ORCLE_HOME/sso/lib

    ファイルをSSOOblixAuth.javaという名前で保存します。コンパイルする前に、このパッケージ・ディレクティブを追加する必要があります。

    package oblix.security.ssoplugin;

  3. ファイルをコンパイルし、クラスパスにORACLE_HOME/sso/lib/ipastoolkit.jarを含めます。サンプル・ファイルSSOOblixAuth.javaが次のようにコンパイルされます。

    ORACLE_HOME/jdk/bin/javac -classpath ORACLE_HOME/sso/lib/ipastoolkit.jar:ORACLE_HOME/lib/servlet.jar -d ORACLE_HOME/sso/plugin SSOOblixAuth.java

    Linuxの場合は、コロンのセパレータ(":")が適切です。Windowsでは、セパレータにセミコロン(";")を使用します。

    このコマンドにより、SSOOblixAuth.classが作成され、ディレクトリORACLE_HOME/sso/plugin/oblix/security/ssopluginに置かれます。

  4. 次に、次の場所にあるpolicy.propertiesファイルを編集して、統合用のJavaクラスを登録する必要があります。

    OracleAS_install_dir/sso/conf

    OracleAS_install_dirは、OracleAS Single Sign-Onインフラストラクチャがインストールされるディレクトリです。

  5. OracleAS Single Sign-On policy.propertiesファイルで、簡易認証プラグインを前のステップで作成したプラグインに置換します。このクラス内で、行MediumSecurity_AuthPluginにナビゲートします。

    MediumSecurity_AuthPlugin = oracle.security.sso.server.auth.SSOServerAuth

    既存の行をコメント化し、次のように新規の行を追加して作成したJavaクラスを登録します。

    MediumSecurity_AuthPlugin = oblix.security.ssoplugin.SSOOblixAuth

    policy.propertiesを編集する際に、行の最後に空白を挿入しないように注意してください。

  6. ファイルを保存します。

  7. シングル・サインオンの中間層を再起動し、OC4JインスタンスOC4J_SECURITYを再起動して、変更を有効にします。

    ORACLE_HOME/opmn/bin/opmnctl restartproc process-type=HTTP_Server

    ORACLE_HOME/opmn/bin/opmnctl restartproc process-type=OC4J_SECURITY

  8. 統合されたシステムをテストします。

5.2.2 委任管理サービスの統合

委任管理サービス(DAS)は、次のコンポーネントを含む統合インフラストラクチャである、Oracle Identity Management 10gの一部です。

  • Oracle Internet Directory: LDAP V3コンプライアンス・ディレクトリ・サービスです。

  • 委任管理サービス(DAS)10g: ユーザーおよびアプリケーション管理者による、信頼できるプロキシ・ベースのディレクトリ情報管理を提供するOracle Internet Directoryコンポーネントです。

  • Oracle Directory Integration Service: Oracle Internet Directory、他のディレクトリ、およびユーザー・リポジトリ間の同期化を可能にするOracle Internet Directoryコンポーネントです。

  • Provisioning Integration Service: Oracleドキュメントに説明されているように、サービスの自動プロビジョニングを提供するOracle Internet Directoryコンポーネントです。

委任管理サービスは、OracleAS 10gインフラストラクチャのインストール時にデフォルトでインストールされ、自動的に統合されます。Oracle Access Managerをシングル・サインオンと統合すると、委任管理サービスにアクセスするために追加のステップを行う必要はありません。

委任管理サービスのリンクは次のとおりです。

http://infra-computer-name:port/oiddas


注意:

Create/EditユーザーおよびCreate/Editグループ・ポートレットの使用時にエラーが発生した場合は、委任管理サービスをインフラストラクチャから中間層に移動してください。詳細は、「ポータルの統合」を参照してください。

5.2.3 ポータルの統合

Oracle Application Server Portalを使用すると、セルフサービスの統合されたEnterprise Information Portals(EIPs)の構築、デプロイおよびメンテナンスを行えます。カスタマイズされたポータル・ページに異なるプロバイダの情報を表示し、エンタープライズ検索およびディレクトリ参照のフィールドを含められます。

ポータル・ページは複数のポートレットで構成されます。各ポートレットは、Webベースのリソースへの動的アクセスを提供するポータル・ページの1つのリージョンです。

Oracle Access Managerシングル・サインオンをOracleAS 10gと統合すると、ユーザーは次のようにポータルにアクセスできるようになります。

http://midtier_home:port/pls/portal


注意:

Create/EditユーザーおよびCreate/Editグループ・ポートレットは、このポータルからDASを呼び出します。Create/EditユーザーおよびCreate/Editグループ・ポートレットの使用時にエラーが発生した場合は、DASをインフラストラクチャから中間層に移動する必要があります。

5.2.4 Forms用のシングル・サインオンの有効化

Oracle Application Server Forms Servicesは、複雑なトランザクションFormsアプリケーションをインターネットにデプロイするために使用する、中間層アプリケーション・フレームワークです。

Oracle Access ManagerをOracleAS 10gと統合する場合、Forms用にシングル・サインオンを有効化する必要があります。シングル・サインオンをForms用に有効化すると、Oracle Access Managerが認証を処理します。ユーザーはシングル・サインオンのログイン・ページまたはFormsによって、スキーマ・ユーザーIDとパスワードを入力するようにチャレンジを受けません。

Forms用にシングル・サインオンを有効化する手順

  1. 次のディレクトリにあるforms90.confファイルを検索します。

    midtier_home/forms90/server

  2. forms90.confファイルの最後に次の行を追加します。

    <IfModule mod_osso.c>
       <Location /forms90/f90servlet>
          require valid-user
          AuthType Basic
       </Location>
    </IfModule>
    
  3. OC4J_BI_FORMSおよびFormsサーバーを再起動して、変更を有効にします。

    次に、Oracle Internet Directoryユーザー向けResource Access Descriptor(RAD)を作成します。RADをグローバル・レベルで作成して、すべてのユーザーが同一のRADを使用してリソースにアクセスできるようにすることができます。または、RADを各ユーザーに対して作成することもできます。

  4. Oracle Internet Directoryユーザー向けにResource Access Descriptor(RAD)を作成して、LDAPユーザーをデータベース・スキーマにマップします。

    次のステップは、formsweb.cfgファイル(デフォルト構成)でグローバル・レベルで実行することも、アプリケーション・レベルで実行して個々のアプリケーションのシングル・サインオンを有効にすることもできます。

  5. Enterprise Managerを使用してformsweb.cfgファイルを更新し、ssoModeをtrueに設定してアプリケーションのシングル・サインオンを有効にします。

    たとえば、個々のアプリケーションのシングル・サインオンを有効にするには、次のようにします。

    [myApp]
    form=myFmxs
       ssoMode=true
    

    詳細は、『Oracle Application Server Forms Services利用ガイド』の第6章を参照してください。

  6. 次のURLに移動して、この実装をテストします。

    http://midtier_home:port/forms90/f90servlet?config=default
    

5.2.5 Reports Servicesの統合

Oracle Application Server Reports Servicesにより、Oracleドキュメントに説明されているように、OracleAS 10gにレポートをデプロイできます。

Reportsはすぐに使用可能な有効化されたシングル・サインオンで、Oracle Access ManagerをOracleAS 10gと統合すると、それ以上のステップを実行することなく動作します。

保護されたレポート・ページへのアクセス手順

  1. ブラウザを次のURLにポイントします。

    http://computer:port/reports/rwservlet/showenv

  2. WebGateにチャレンジを受けてログインします。

  3. 認証された場合、Oracle Reportsの環境設定(シングル・サインオンの保護されたページ)を表示できることを確認します。

詳細は、『Oracle Application Server Reports ServicesレポートWeb公開ガイド』の第10章を参照してください。

5.2.6 Oracle Internet DirectoryおよびOracle Access Manager LDAPディレクトリの同期化

Oracle Access Managerとの統合のためにOracleAS 10gを構成する次のステップでは、Oracle同期化ツールを使用して、Oracle Access Managerで使用するOracle Internet DirectoryおよびLDAPディレクトリ・サーバー間でユーザー情報を同期化します。

この同期化ツールおよびプロセスの詳細は、Oracle Internet Directoryのドキュメントを参照してください。


注意:

ディレクトリを同期化せずに統合をテストするには、ログイン目的でOracle管理者(orcladmin)をOracle Access Manager内に作成する必要があります。

5.2.7 OracleAS Single Sign-Onおよびアクセス・サーバーからのグローバル・ログアウトの実装方法

デフォルトで、WebGateは、logoutを含むURLを受け取ると、ユーザーをログアウトさせます。詳細は、『Oracle Access Managerアクセス管理ガイド』のシングル・ドメインのシングル・サインオン・セッションからのログアウトに関する項を参照してください。その結果、デフォルトのシングル・サインオンのログアウト・ページは、OracleAS Single Sign-Onでは機能しません。「Logout.jsp」についての説明では、ログアウトの構成に必要なサンプル・ファイルを紹介します。

OracleAS Single Sign-Onからのグローバル・ログアウトを実装する手順

  1. ORACLE_HOME/sso/conf/policy.propertiesにある次のパラメータを編集します。ログアウト・ページへのパスを、次の例に示す値に置き換えます。

    #Deployment login page link
    loginPageUrl = /sso/pages/login.jsp
    logoutPageUrl = /sso/pages/logout.jsp
    
  2. シングル・サインオン・サーバーを再起動します。

    ORACLE_HOME/opmn/bin/opmnctl restartproc process-type=HTTP_Server
    ORACLE_HOME/opmn/bin/opmnctl restartproc process-type=OC4J_SECURITY
    
  3. アクセス・システムで、シングル・サインオンのログアウトURLを構成するページに移動します。

    アクセス・システム・コンソールで、「システム構成」をクリックし、次に「SSOログアウトURLの構成」をクリックします。

  4. このページで、OracleAS Single Sign-OnログアウトURLを呼び出すシングル・サインオンのログアウトURLを構成します。

    次のようなログアウトURLを追加します。

    http://host:port/sso/logout

    hostは、OracleAS Single Sign-On Serverがインストールされるコンピュータ、portはサーバーのリスニング・ポートです。ユーザーがOracle Access Managerの「ログアウト」リンクをクリックすると、ログアウトURLによりセッションCookieが削除され、ユーザーはログアウト・ページにリダイレクトされます。詳細は、『Oracle Access Managerアクセス管理ガイド』のログアウト構成に関する付録を参照してください。

  5. 「アクセス・システム構成」、「アクセス・ゲート構成」をクリックし、「WebGate」を選択することにより、アクセス・システム・コンソールからのWebGateログアウトURLを構成するページに移動します。

  6. WebGateの詳細を表示するページで、「変更」をクリックし、次のような新規のログアウトURLを入力します。

    /access/oblix/lang/en-us/style2/oblixlogo.gif

    任意のGIFファイルまたはWebページのURLを入力できます。このページはlogout.jspに埋め込まれています。詳細は、「Logout.jsp」を参照してください。

  7. それぞれのWebGateで保護されたCookieドメインに対して、前の2つのステップを繰り返します。

  8. ユーザーがログアウトした後で表示するページを追加します。

  9. Oracle AS Single Sign-On Serverおよびアクセス・サーバーからグローバル・ログアウトを実行できることを確認します。

5.2.8 OracleAS 10gと統合するためのOracle Access Manager 10g(10.1.4.3)の構成

OracleAS HTTP ServerにOracle Access Managerをインストールし、次にWebGateをインストールした後、OracleASリソースを保護するOracle Access Managerアクセス制御ポリシーを作成する必要があります。

タスクの概要: OracleAS 10gとの統合のためのOracle Access Managerの設定

  1. 「環境の準備」で説明するように、アイデンティティ・システムおよびアクセス・システムをインストールし、設定します。

  2. アイデンティティ・システム・コンソールに移動して、『Oracle Access Manager IDおよび共通管理ガイド』に説明されるように、すでにOracle Internet Directoryに存在するorcladminユーザーと一致するOracle管理者(orcladmin)ユーザーを作成します。

  3. 「シングル・サインオン・ログインURLの保護方法」を完了してください。

5.2.8.1 OracleAS Single Sign-On 10.1.2.0.2のためのアクセス・システムの構成

この章で提供されるこの後の他の情報に加えて、次の手順を完了してアクセス・システムとOracleAS Single Sign-On 10.1.2.0.2を統合する必要もあります。

OracleAS Single Sign-On 10.1.2.0.2との統合を構成する手順

  1. 統合の構成については、この章の手順に従ってください。

  2. アクセス・システム・コンソールで、「システム構成」をクリックし、次に「サーバー設定」をクリックして、次のログアウトURLを構成します。

    http://[host.domain]:[port]/pls/orasso/ORASSO.wwsso_app_admin.ls_logout?
    p_done_url=http%3A%2F%2F[host.domain]%3A[port]
    

    p_done_url値をURLエンコードします。

    シングル・サインオン用のログアウト・リンクの構成の詳細は、リリース10.1.2.0.2用の『Oracle Application Server Single Sign-On管理者ガイド』を参照してください。この目的のために使用できるサンプルJSPがこのリリース・ノートの最後に記載されています。

  3. 次のサンプルJSPを使用する場合は、アクセス・システム・コンソールへ移動し、「アクセス・システム構成」をクリックし、「アクセス・ゲート構成」をクリックして、ご使用の環境内の各WebGate用のLogOutURLsパラメータに次の値を追加してください。

    /access/oblix/lang/en-us/style2/oblixlogo.gif
    

logout.jspファイルのサンプルを次に示します。

<!-- Copyright (c) 1999, 2003, Oracle. All rights reserved. -->
<%@page autoFlush="true" session="false"%>
<%
// Declare English Message Strings
String msg1 = "Single Sign-Off";
String msg2 = "Application Name";
String msg3 = "Logout Status";
String msg4 = "ERROR: The return URL value not found.";
String msg5 = "ERROR: Logout URL for partner applications not found.";
// Get the user language preference
String userLocaleParam = null;
java.util.Locale myLocale = null;
// Get the user locale preference sent by the SSO server
try
{
userLocaleParam = request.getParameterValues("locale")[0];
}
catch(Exception e)
{
userLocaleParam = null;
}
if( (userLocaleParam == null) || userLocaleParam.equals("") )
{
myLocale = request.getLocale();
}
else
{
if(userLocaleParam.indexOf("-") > 0 )
{
// SSO server sent the language and territory value (e.g. en-us)
myLocale = new java.util.Locale(userLocaleParam.substring(0, 2),
userLocaleParam.substring(3, 5));
}
else
{
// SSO server sent only the language value (e.g. en)
myLocale = new java.util.Locale(userLocaleParam, "");
}
}
// The following two lines will be used only for the Multilingual support
with
// proper resource bundle class supplied
// java.util.ResourceBundle myMsgBundle
// = java.util.ResourceBundle.getBundle("MyMsgBundleClassName", myLocale);
// Get the message string in the appropriate language using the message key.
// Use this string to display the message in this page.
// String mesg = myMsgBundle.getString("mesg_key");
%>
<html>
<body bgcolor="#FFFFFF">
<h1><%=msg1%></h1>
<%
String done_url = null;
int i = 0;
// Get the return URL value
try
{
done_url = request.getParameterValues("p_done_url")[0];
}
catch(Exception e)
{
done_url = "";
}
// Get the application name and logout URL for each partner application
try
{
%>
<b> <%=msg2%>   <%=msg3%> </b>
<br>
// Substitute an actual host, domain, and port for
myhost.us.mydomain.com:7777
// that points to the WebGate.
<img
src="http://myhost.us.mydomain.com:7777/access/oblix/lang/en-us/style2/oblixlo
go.gif">
<%
for(;;)
{
i++;
String app_name = request.getParameterValues("p_app_name"+i)[0];
String url_name = request.getParameterValues("p_app_logout_url"+i)[0];
%>
<%=app_name%>

<img src="<%=url_name%>">
<br>
<%
}
}
catch(Exception e)
{
if(done_url == null)
{
%>
<%=msg4%> <br>
<%
}
if(i>1)
{
%>
<br> <a href="<%=done_url%>">Return</a>
<%
}
else
{
%>
<%=msg5%><br>
<%
}
}
%>
</body>
</html>

5.2.9 シングル・サインオン・ログインURLの保護方法

OracleAS Single Sign-On 10gへのアクセスがなされるたびにWebGateがユーザーにチャレンジを送信できるように、次のシングル・サインオン・ログインURLを保護する必要があります。

/sso/auth/

次のアクティビティでは、アクセス・システムを使用してシングル・サインオン・ログインURLまたはその他のリソースを保護する必要があります。

次のタスク一覧の各ステップは、全手順を示しています。詳細は、このガイドの関連する章を参照してください。

タスクの概要: Oracle Access Managerを使用するリソースの保護

  1. アクセス・システム・コンソールを使用して認証スキームを定義します。

    次に例を示します。

    Access System Console, Access System Configuration, Authentication Management,  Add
    
  2. ポリシー・マネージャを使用してポリシー・ドメインを作成します。

    次に例を示します。

    Policy Manager, Create Policy Domain
    
  3. ポリシー・マネージャを使用してポリシー・ドメインにリソースを追加します。

    次に例を示します。

    Policy Manager, Create Policy Domain, Resources
    
  4. ポリシー・マネージャを使用してポリシー・ドメインのルールを定義します。

    次に例を示します。

    Policy Manager, Create Policy Domain, Default Rules
    
  5. ユーザーのIDにヘッダー変数を設定する認可アクションを定義します。

    次に例を示します。

    Policy Manager, Create Policy Domain, Default Rules, Authorization Expressions,  Actions
    

    認可成功

    戻る

    タイプ: HeaderVar

    名前: XXX_REMOTE_USER

    戻り属性: loginAttribute

    XXXは任意の接頭辞(「REMOTE_USER」は多くの場合、HTTPサーバーの内部ヘッダーであるため使用される)、loginAttributeは、アイデンティティ・システムの「ログイン」セマンティック型として構成される属性です。この名前は、OracleASのシングル・サインオン・リポジトリにストアされるユーザーのログイン名にマップする必要があります。ログインしたユーザーの従業員IDを受け渡す「EMPLID」属性が使用された場合もあります。

    認可が成功すると、値loginAttributeがOracleAS 10gサーバーに受け渡されます。


    注意:

    XXX_REMOTE_USERと異なるHeaderVarを使用する場合、アクセス・システム・コンソール、認可ルール、アクションおよびOracleAS Javaクラスの2箇所でXXX_REMOTE_USERを、使用する変数に置換する必要があります。詳細は、「統合用のJavaクラスの作成方法」を参照してください。

  6. 認可ルールで、すべてのユーザーにアクセスを許可します。

    次に例を示します。

    Policy Manager, Create Policy Domain, Authorization Rules, Name, Allow Access, Any one
    
  7. 認可ルールを有効化します。

    次に例を示します。

    Policy Manager, Create Policy Domain, Authorization Rules, Name,
    
  8. ポリシー・ドメインを有効化します。

    次に例を示します。

    Policy Manager, My Policy Domains, Name, Modify, Enabled
    

    これで、シングル・サインオンの構成が完了しました。

  9. 『Oracle Access Managerアクセス管理ガイド』のアクセス・テスターの使用方法に関する項に説明されるように、ポリシー・ドメインをテストします。

5.3 OracleAS Single Sign-Onにより保護されるアプリケーションの認可サポート

デフォルトで、Oracle Access ManagerのWebGateコンポーネントはすべてのURLを捕捉し、アクセス・システムは捕捉されたURLを呼び出すユーザーの認証を行います。ただし、OracleAS Single Sign-Onを使用してアプリケーション・ログインに対する認証機能を提供する場合は、Oracle HTTP Serverが認証リクエストをmod_ossoに渡すように構成できます。これにより、OracleAS Single Sign-Onはユーザーの認証を続行できます。さらに、OracleAS Single Sign-Onが認可目的でユーザー情報をOracle Access Managerに渡すように構成できます。

この項では、OracleAS Single Sign-Onで保護されたHTTPリソースに関するアクセス・システム・ベースの認可を実装する方法について説明します。

この項では、次の内容について後述します。

5.3.1 OracleAS Single Sign-Onで保護されたアプリケーションの認可について

このタイプの統合では、OracleAS Single Sign-Onを使用する様々なアプリケーションのユーザー認証を構成済であることを前提としています。詳細は、『Oracle Application Server Single Sign-On管理者ガイド』を参照してください。

OracleAS Single Sign-Onによるユーザーの認証後、Oracle Access Managerは、REMOTE_USERヘッダー変数を検索し、それをOracle Access Managerユーザーにマップする外部認証スキームを適用します。Oracle Access Managerがユーザーを認証できた場合、アクセス・システムがユーザーの認可を行います。認可の際に、WebGateがREMOTE_USERヘッダー変数をチェックします。設定されている場合、WebGateはアクセス・システムに定義されたポリシーに従って認可を実行します。

5.3.2 OracleAS Single Sign-Onで保護されたリソースの認可サポートの構成方法

この項では、OracleAS Single Sign-Onをインストールし、中間層アプリケーションがOracleAS Single Sign-On認証を使用するように設定し、中間層Oracle HTTP ServerにWebGateをインストールしていることを前提としています。中間層の構成に関する詳細は、『Oracle Application Server Single Sign-On管理者ガイド』およびこの章の「環境の準備」を参照してください。

次の手順は、Oracle Access Manager認可を使用するOracleAS Single Sign-On認証の構成方法を示しています。

OracleAS Single Sign-Onによる認証およびOracle Access Managerによる認可の構成手順

  1. Oracle HTTP Serverのホスト・コンピュータ上で、ORACLE_HOME/Apache/Apache/conf/httpd.confファイルにあるWebGateセクションの次の行をコメント化します。

    <LocationMatch "/*">
    AuthType Oblix
    require valid-user
    </LocationMatch>
    
  2. Linuxでは、WebGate固有のセクションをhttpd.confファイル内に配置します。

    このセクションは次の行で囲まれています。

    #*** BEGIN WebGate Specific ****
    #*** END WebGate Specific ****
    

    mod_osso.confのインクルード文を含む行の前にこのセクションを移動します。

  3. このWebGateのWebサーバーを再起動します。

  4. 静的パターンのルールを使用して、OracleAS Single Sign-Onを使用する中間層Oracle HTTP Server上のリソースを保護します。

    詳細は、『Oracle Identity Managementアプリケーション開発者ガイド』を参照してください。Windowsシステム固有の認証など、OracleAS Single Sign-Onの認証機能を使用するには、この作業が必要です。

Oracle Access Managerでの外部認証スキームの定義手順

  1. Oracle Access Managerのランディング・ページで、「アクセス・システム・コンソール」、「認証管理」、「追加」の順にクリックします。

  2. 認証スキームの「一般」タブで、次のように認証スキームを定義します。

    名前: External auth scheme

    チャレンジ・メソッド: Ext

    チャレンジ・パラメータ: creds:REMOTE_USER

  3. 認証スキームの「プラグイン」タブで、次のようなREMOTE_USERヘッダー変数を使用する資格証明マッピング・プラグインを追加します。

    obMappingBase="dc=us,dc=mycompany,dc=com",obMappingFilter="(&(&
    (objectclass=inetorgperson)(uid=%REMOTE_USER%))(|(!(obuseraccountcontrol=*)) (obuseraccountcontrol=ACTIVATED)))"
    

    このプラグインを実装する際に、環境に適したobMappingBaseの値とPersonオブジェクト・クラスを置き換えます。

中間層アプリケーションURLを保護するポリシーの定義手順

  1. Oracle Access Managerのランディング・ページで「ポリシー・マネージャ」をクリックします。

  2. 「ポリシー・ドメインの作成」をクリックします。

  3. 任意の中間層アプリケーションURLを保護するポリシーを設定します。

    前の手順で構成した外部認証スキームを使用してポリシーを構成します。詳細は、『Oracle Access Managerアクセス管理ガイド』を参照してください。

  4. WebPassおよびポリシー・マネージャを同一のWebサーバーにWebGateとしてインストールした場合、アイデンティティ・システムおよびアクセス・システムにアクセスしようとするユーザーを認証するようにOracleAS Single Sign-Onを設定します。

    2つのURL静的パターンをOracleAS Single Sign-On http.confファイルに追加します。

    <LocationMatch "/identity/oblix">
      AuthType Basic
      require valid-user
    </LocationMatch>
    
    <LocationMatch "/access/oblix">
      AuthType Basic
      require valid-user
    </LocationMatch>
    

    これらのルールによって、OracleAS Single Sign-Onによるアイデンティティ・システムおよびポリシー・マネージャの認証を実行できます。

  5. また、WebPassおよびポリシー・マネージャを同一のWebサーバーにWebGateとしてインストールした場合、前の手順で構成した外部認証スキームによってアイデンティティ・システムおよびアクセス・システムが保護されるようにする必要があります。

    詳細は、『Oracle Access Managerアクセス管理ガイド』を参照してください。

統合のためのログアウトの構成手順

  1. 詳細は、「OracleAS Single Sign-Onおよびアクセス・サーバーからのグローバル・ログアウトの実装方法」を参照してください。

5.4 OracleASとの統合テスト

OracleASおよびOracle Access Managerの統合を設定した後、テストを行って、統合が成功したことを確認します。

OracleAS向けOracle Access Managerシングル・サインオンのテスト手順

  1. OracleAS 10.1.4.0.1以上の場合は、ブラウザに次のURLを入力します。

    http://computername:port/sso/

    computernameはOracleAS Serverがインストールされたマシン、portはそのコンピュータのポート番号です。

    OracleAS 10.1.2の場合は、ブラウザに次のURLを入力します。

    http://computername:port/pls/orasso/

    ログイン・ページが表示されるはずです。認証に成功した後、OracleASのWebリソース・ページが表示されます。

  2. 同一ユーザーとして様々なアプリケーションにアクセスを試みることができます。

    Oracle Access Managerシングル・サインオンが成功すると、認証によるチャレンジを受けずにページにアクセスできるようになります。

  3. アクセス・システムで異なる認可ルールをテストすることもできます。

    たとえば、ログインにタイミング条件が設定されている場合、別の時間帯にログインを試すことができます。

  4. ログアウトの準備ができたら、「ログアウト」リンクをクリックします。

    Oracle Access Managerシングル・サインオンが成功すると、Oracle Access Managerで保護されたすべてのリソースからログアウトできるようになります。

5.5 OracleAS 10gファイル

次の2つのサンプル・ファイルを、要件に合せてカスタマイズできます。

5.5.1 SSOOblixAuth.java

package oblix.security.ssoplugin;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import oracle.security.sso.ias904.toolkit.IPASAuthInterface;
import oracle.security.sso.ias904.toolkit.IPASAuthException;
import oracle.security.sso.ias904.toolkit.IPASUserInfo;
import oracle.security.sso.ias904.toolkit.IPASInsufficientCredException;
import java.net.URL;
import java.util.*;

public class SSOOblixAuth implements IPASAuthInterface
{
    private static String OBLIX_USER_HEADER = "XXX_REMOTE_USER";
    private static String CLASS_NAME = "SSOOblixAuth";

    public SSOOblixAuth()
    {
      System.out.println("Inside SSOOblixAuth constructor.....");
    }
    public IPASUserInfo authenticate(HttpServletRequest request)
      throws IPASAuthException, IPASInsufficientCredException {


      String OblixUserName = null;

      try
       {
         System.out.println(".............Getting Header Variable............");
         OblixUserName = request.getHeader(OBLIX_USER_HEADER);

         System.out.println("The Header name............."+OblixUserName);
       }
       catch (Exception e)
       {
         throw new IPASInsufficientCredException("No Oblix Header");
       }

       if (OblixUserName == null)
           throw new IPASInsufficientCredException("No Oblix Header");

       IPASUserInfo authUser = new IPASUserInfo(OblixUserName);
       System.out.println("The IPASUserInfo Class............"+authUser);
       return authUser;

    }


    public URL getUserCredentialPage(HttpServletRequest request,String msg) {

System.out.println("Inside Get User Crediential Page ..........Should not come     here>......");

        URL errorURL=null;
        try
        {
           errorURL=new URL(new String(request.getRequestURL()));
        }
        catch(Exception ee){};
        return  errorURL;
    }


}

5.5.2 Logout.jsp

「OracleAS Single Sign-Onおよびアクセス・サーバーからのグローバル・ログアウトの実装方法」で説明するように、次のサンプル・ファイルを使用できます。

<!-- Copyright (c) 1999, 2003, Oracle. All rights reserved. -->
<%@page autoFlush="true" session="false"%>
<%
// Declare English Message Strings
String msg1 = "Single Sign-Off";
String msg2 = "Application Name";
String msg3 = "Logout Status";
String msg4 = "ERROR: The return URL value not found.";
String msg5 = "ERROR: Logout URL for partner applications not found.";
// Get the user language preference
String userLocaleParam = null;
java.util.Locale myLocale = null;
// Get the user locale preference sent by the SSO server
try
{
userLocaleParam = request.getParameterValues("locale")[0];
}
catch(Exception e)
{
userLocaleParam = null;
}
if( (userLocaleParam == null) || userLocaleParam.equals("") )
{
myLocale = request.getLocale();
}
else
{
if(userLocaleParam.indexOf("-") > 0 )
{
// SSO server sent the language and territory value (e.g. en-us)
myLocale = new java.util.Locale(userLocaleParam.substring(0, 2), userLocaleParam.substring(3, 5));
}
else
{
// SSO server sent only the language value (e.g. en)
myLocale = new java.util.Locale(userLocaleParam, "");
}
}
// The following two lines will be used only for the Multilingual support with
// proper resource bundle class supplied
// java.util.ResourceBundle myMsgBundle
// = java.util.ResourceBundle.getBundle("MyMsgBundleClassName", myLocale);
// Get the message string in the appropriate language using the message key.
// Use this string to display the message in this page.
// String mesg = myMsgBundle.getString("mesg_key");
%>
<html>
<body bgcolor="#FFFFFF">
<h1><%=msg1%></h1>
<%
String done_url = null;
int i = 0;
// Get the return URL value
try
{
done_url = request.getParameterValues("p_done_url")[0];
}
catch(Exception e)
{
done_url = "";
}
// Get the application name and logout URL for each partner application
try
{
%>
<b> <%=msg2%> &nbsp; <%=msg3%> </b>
<br>
// Substitute an actual host, domain, and port for myhost.us.mydomain.com:7777
// that points to the WebGate.
<img src="http://myhost.us.mydomain.com:7777/access/oblix/lang/en-us/style2/oblixlogo.gif">
<%
for(;;)
{
i++;
String app_name = request.getParameterValues("p_app_name"+i)[0];
String url_name = request.getParameterValues("p_app_logout_url"+i)[0];
%>
<%=app_name%>
&nbsp;
<img src="<%=url_name%>">
<br>
<%
}
}
catch(Exception e)
{
if(done_url == null)
{
%>
<%=msg4%> <br>
<%
}
if(i>1)
{
%>
<br> <a href="<%=done_url%>">Return</a>
<%
}
else
{
%>
<%=msg5%><br>
<%
}
}
%>
</body>
</html>

5.6 OracleAS 10g統合のトラブルシューティング

次に示すのは、OracleAS 10g統合のトラブルシューティングのヒントです。

問題: フォーム・ベースの認証スキームで、外部で開発されたJ2EEアプリケーション、OIDDAS/Form applicationにアクセスすると、Oracle Access Managerのフォーム・ログイン・ページの後にOracleAS Single Sign-Onログイン・ページが表示されます。

解決方法: この問題は、mod_ossoが、シングル・サインオン・サーバーを呼び出すのにGETではなく、POSTベースのリダイレクション・メソッドを使用する場合に発生します。使用されるリダイレクション・メソッドは、OssoRedirectByFormディレクティブの値に基づいています。GETメソッドを使用するには、このディレクティブをfalseに設定する必要があります。Oracle Application Server 10gでは、デフォルトでこの値はfalseに設定されます。

このディレクティブのfalse設定を検証する手順

  1. OssoRedirectByFormディレクティブの値を検証します。

  2. Oracle Enterprise Managerを起動します。

  3. OracleインフラストラクチャがインストールされているOracle Application Serverインスタンスを選択します。

  4. WebGateがインストールされているHTTPサーバーを選択し、「拡張サーバー・プロパティ」に移動します。

  5. 構成ファイルのリストから、mod_osso.confファイルを選択します。

  6. OssoRedirectByFormがtrueに設定されているかどうかチェックします。

    デフォルトで、この値はfalseです。

  7. デフォルトのディレクティブ値を使用しない場合、次の例に示すように、この値をfalseに設定します。

    <IfModule mod_osso.c>
    OssoIpCheck off
    OssoIdleTimeout off
    OssoConfigFile
    /private1/iasinst/install_set1/904infra/Apache/Apache/conf/osso/osso.conf
    OssoRedirectByForm off
    </IfModule>
    
  8. 「適用」をクリックします。

  9. OracleAS HTTP Serverを再起動します。

問題: ORASSOおよびポータル・スキーマのパスワードの検索方法がわかりません。

解決方法: 次の手順を行ってください。

これらのデータベース・スキーマのパスワードの検索手順

  1. Oracle Directory Managerにスーパー・ユーザーorcladminとしてログインします。

  2. 左側のツリーを、次のように開きます。

    Cn= OracleContext

    Cn=Products

    Cn=IAS

    Cn=IASインフラストラクチャ・データベース

    OrclReferenceName=<グローバル・データベース名>

    OrclResourceName=ORASSO

  3. ORASSOエントリをクリックして、属性orclpasswordattribute(ORASSOスキーマのパスワード)の値を検索します。


    注意:

    同様に、OrclResourceName=PORTALをクリックして、ポータル・スキーマのパスワードを検索できます。

問題: シングル・サインオンのログのチェック方法がわかりません。

解決方法: Enterprise Managerからシングル・サインオンのログを表示できます。

  1. Enterprise Managerにログインします。

  2. ページの一番下にある「ログ」リンクをクリックします。

    検索画面が表示されます。

  3. 「使用可能なコンポーネント」リストからSingle Sign-on:orassoを選択して「選択したコンポーネント」に移動します。

  4. 検索を実行して、シングル・サインオンのログを表示します。

問題: デフォルトのRADの作成方法がわかりません。

解決方法: 次のステップを実行して、デフォルトのRADを作成します。

デフォルトのRADの作成手順

  1. 通常どおり、Oracle Internet Directory委任管理サービス・サーバー・コンソールから「構成」、「プリファレンス」にアクセスします。

  2. ページの一番下までスクロールし、「リソースのアクセス情報」を表示します。

  3. 「作成」をクリックして、新規のリソース・ファイルを作成します。

  4. リソース名を入力します。

    たとえば、デフォルトの構成には次の名前を使用できます。

    default
    

    注意:

    ここで作成したリソース名は、formsweb.cfgファイルに格納された構成と同じ名前です。

  5. 「次へ」をクリックして、ユーザーIDとパスワードおよびデータベースの接続文字列を入力し、「送信」をクリックします。

    このユーザーIDは有効なDBユーザーです。データベースは使用するDBを指します。たとえば、「Scott」というスキーマとデータベース「asdb'」を使用する場合、テスト・エントリは次のようになります。

    ユーザー名: scott

    パスワード: tiger

    データベース: asdb

問題: ユーザー指定のRADの作成方法がわかりません。

解決方法: 次のステップを実行して、ユーザー指定のRADを作成します。

ユーザー指定のRADの作成手順

  1. 通常どおり、Oracle Internet Directory委任管理サービス・サーバー・コンソールにアクセスします。

  2. ページの右上にある「ディレクトリ」タブを選択します。

  3. 「作成」をクリックして、新規ユーザーを作成します。

  4. たとえば、パスワードssotest1を持つssotestなどのユーザー名を選択します。

    その他のすべての詳細を選択して追加できます。

  5. ページの一番下にある「リソースのアクセス情報」までスクロールします。

  6. 「作成」をクリックして、新規のリソース・ファイルを作成します。

  7. ssotest_dbなどのリソース名を入力します。

  8. 「次へ」をクリックして、ユーザーIDとパスワードおよびデータベースの接続文字列を入力し、「送信」をクリックします。

このユーザーIDは有効なDBユーザーです。テスト目的で、デフォルトのScottスキーマを使用できます。データベースは使用するDBで、デフォルト値asdbを持ちます。たとえば、テスト・エントリは次のようになります。

ユーザー名: scott

パスワード: tiger

データベース: asdb