ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Access Manager管理者ガイド
11g リリース1(11.1.1)
B62265-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

C Oracle ADFアプリケーションとOracle Access Manager 11g SSOの統合

この章では、同じアイデンティティ管理ドメイン内でのOracle ADFアプリケーションとOracle Access Manager 11gの統合に役立つ情報を提供します。

この章の内容は次のとおりです。

Oracle Platform Security ServicesおよびOracle Application Developer Frameworkの概要

この項の内容は次のとおりです。

Oracle Platform Security Services Single Sign-on Framework

シングル・サインオン(SSO)ソリューションでは、アプリケーションがユーザーにログインおよびログアウトする標準の方法を提供する必要があります。認証が正常に終了すると、SSOサービスがユーザーを適切なURLにリダイレクトします。

Oracle Platform Security Services(OPSS)SSO FrameworkはSSOソリューションを使用してドメイン内のアプリケーションを統合する方法を提供します。特に、ログイン、自動ログインおよびログアウトを処理する、SSO製品全体のAPIの共通セットをアプリケーションに提供します。

Oracle Application Developer Framework(ADF)とOracle ADF標準にコード化されたアプリケーションは、OPSS SSO Frameworkとのインタフェースです。Oracle ADFの詳細は、「Oracle Application Developer Framework」を参照してください。

Oracle Access Manager SSOソリューションは即時利用可能で、Oracle ADF標準にコード化されたアプリケーションとOPSS SSO Frameworkに次のものを提供します。

  • ログイン(アプリケーションドリブン): 認証を必要とするセキュアなアーティファクトの一部にアクセスするときに、アプリケーションは認証を起動し、ユーザーをリダイレクトして適切なソリューションにより認証されるようにします。

  • 自動ログイン: アプリケーションに最初にアクセスするユーザーは、アカウントをアプリケーション(Oracle Identity Managerなど)に匿名で登録します。正常に登録されると、ユーザーは認証URLにリダイレクトされます。またユーザーは要求されることなく自動的にログインできます。

  • グローバル・ログアウト: ユーザーがアプリケーションからログアウトすると、そのログアウトはソリューションにより有効になっているその他のアプリケーション全体に伝播します。


注意:

OPSS SSOフレームワークはマルチレベル認証をサポートしていません。

SSOソリューションおよびOracle Access Manager 10gソリューションの選択の詳細は、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』の第11章「Oracle Fusion Middlewareにおけるシングル・サインオンの構成」を参照してください。

Oracle Application Developer Framework

Oracle Application Development Frameworkは、Java EE標準およびオープン・ソース・テクノロジで構築され、サービス指向アプリケーションの実装を単純化および迅速化する、エンドツーエンドのアプリケーション・フレームワークです。

ADFアプリケーションのデプロイおよび管理に必要な開発および実行時環境は、その他のJava EEアプリケーションに必要な環境にいろいろな意味で似ています。

一般的なJava EE環境と、Oracle ADFアプリケーションをサポートする環境との違いは、Oracle ADFランタイム・ライブラリが使用できるかどうかです。

  • Oracle Fusion Middleware 11gでは、デフォルトでOracle WebLogic Server domainにOracle ADFランタイム・ライブラリは含まれません。しかし、オプションでJavaランタイム・ファイル(JRF)を含むようにドメインを構成または拡張できます。Oracle ADFランタイム・ライブラリはJRFコンポーネントの一部として含まれます。

    Oracle WebLogic ServerドメインはJavaランタイム・ファイル(JRF)ドメイン・テンプレートを使用して拡張され、必要なOracle ADFライブラリおよびその他の重要なOracle特有のテクノロジを含むようにすることができます。

  • Oracle Application Server 10gでは、OC4Jの各インスタンスはOracle ADFアプリケーションをサポートするのに必要なOracle ADFランタイム・ライブラリを自動的に提供しました。

10gで使用可能なJava EE環境の種類、それらの環境をOracle Fusion Middleware 11gにアップグレードする手順の詳細は、『Oracle Fusion Middleware Java EEアップグレード・ガイド』を参照してください。

Oracle ADF SecurityおよびOPSS SSOフレームワークを使用したOAM 11gとWebアプリケーションの統合

この項では、Oracle ADFセキュリティおよびOPSS SSOフレームワークを使用するWebアプリケーションと、ユーザー認証用のOracle Access Manager 11g SSOセキュリティ・プロバイダの統合方法について説明します。

Webアプリケーションを実行する前に、Oracle Access Managerセキュリティ・プロバイダ用にアプリケーションのターゲットOracle WebLogic Server上にドメイン・レベルのjps-config.xmlファイルを構成する必要があります。

ドメイン・レベルのjps-config.xmlファイルは次のパスにあり、デプロイされたアプリケーションのjps-config.xmlファイルと混同しないようにします。

domain_home/config/fmwconfig/jps-config.xml 

注意:

ドメイン・レベルのjps-config.xmlファイルを、デプロイされたアプリケーションのjps-config.xmlファイルと混同しないようにします。

Oracle JRF WLSTスクリプトを使用して、Webアプリケーションのデプロイ前または後のいずれでも、ドメイン・レベルのjps-config.xmlファイルを構成できます。Oracle JRF WLSTスクリプトの名前は次のようになります。

Linux: wlst.sh

Windows: wlst.cmd

Oracle JRF WLSTスクリプトはJDev経由で実行している場合は、次のパスで使用できます。

     $JDEV_HOME/oracle_common/common/bin/

スタンドアロンJRF WebLogicインストールの場合、パスは次のようになります。

     $Middleware_home/oracle_common/wlst

注意:

Oracle JRF WLSTスクリプトが必要です。Oracle Java Required Files(JRF)のWLSTを実行しているときは、$JDEV_HOME/wlserver_10.3/common/binの下のWLSTスクリプトを使用しないでください。

コマンド構文

addOAMSSOProvider(loginuri, logouturi, autologinuri)

表C-1はaddOAMSSOProviderコマンドラインの各引数に必要な値を定義します。addOAMSSOProvider

表C-1 addOAMSSOProviderコマンドライン引数

引数 定義

loginuri

ログイン・ページのUIRを指定します

注意: ADFセキュリティが有効なアプリケーションの場合、"/<context-root>/adfAuthentication"を'loginuri'パラメータに指定する必要があります。手順を示します。

  1. たとえば、ユーザーがOPSSの認証ポリシーで保護されているリソースにアクセスします。

  2. ユーザーがまだ認証されていない場合、ADFはユーザーを'loginuri'で設定したURIにリダイレクトします。

  3. OAMには'loginuri'の値を保護するポリシーが存在する必要があります。たとえば、"/<context-root>/adfAuthenticationです。

  4. ADFがこのURIにリダイレクトする場合、OAMはログイン・ページ(このURIに対しOAMに設定された認証スキームによる)を表示します。

logouturi

ログアウト・ページのUIRを指定します

注意: ADFセキュリティが有効なアプリケーションの場合、logouturiは第11章のログアウト・ガイドラインに基づいて設定する必要があります。

  • 11g WebGateでは、logouturiの値は11g WebGateの管理者から検索される必要があります。

  • 10g WebGateでは、logouturiの値は"/oamsso/logout.htmlである必要があります。

autologinuri

自動ログイン・ページのUIRを指定します


Oracle ADF Securityが有効なFusion Webアプリケーション用にドメイン・レベルjps-config.xmlを構成する手順は、より大きなタスクの一部です。コマンド構文を除き、すべてのタスクはOracle Access Manager 10gと11gとで同じです。


関連項目:

  • Oracle Access Manager 10g SSOプロバイダを含むすべてのタスクについては、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』のOracle Fusion Middlewareにおけるシングル・サインオンの構成に関する章を参照してください。

  • Oracle Fusion Middleware Oracle WebLogic Scripting Tool

  • Oracle Fusion Middleware WebLogic Scripting Toolのコマンド・リファレンスのインフラストラクチャ・セキュリティ・コマンドに関する章


Oracle Access Manager 10g SSOを含むすべてのタスクについては、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』のOracle Fusion Middlewareにおけるシングル・サインオンの構成に関する章を参照してください。

OAM 11g用のSSO構成の例

付録C「Oracle ADFアプリケーションとOracle Access Manager 11g SSOの統合」の手順に従い入力されたSSOサービス構成は、ファイルjps-config.xmlに書き込まれます。指定されたデータには次のものが含まれます。

  • 特定のSSOサービス

  • 自動ログインおよび自動ログアウトURI

  • 認証レベル

  • 選択したSSOサービスにより戻されるURLに含まれる問合せパラメータ

  • トークン生成に適した設定

次に示すjps-config.xmlファイルの一部は、OAM 11g SSOプロバイダの構成を示します。いくつかの値は実際の内容に対するプレースホルダにすぎません。使用する構成では実装用の値を含む必要があります。

例C-1 OAM 11g用のSSO構成の例

<propertySets>
  <propertySet name = "props.auth.url">
    <property name = "login.url.BASIC" value = "http://host:port/oam_login.cgi?level=BASIC"/>
    <property name = "login.url.FORM" value = "http://host:port/oam_login.cgi?level=FORM"/>
    <property name = "login.url.DIGEST" value = "http://host:port/oam_login.cgi?level= DIGEST"/>
    <property name = "autologin.url" value = " http://host:port/obrar.cgi"/>
    <property name = "logout.url" value = "http://host:port/logout.cgi"/>
    <property name = "param.login.successurl"  value = "successurl"/>
    <property name = "param.login.cancelurl"   value = "cancelurl"/>
    <property name = "param.autologin.targeturl" value = "redirectto"/>
    <property name = "param.autologin.token"   value = "cookie"/>
    <property name = "param.logout.targeturl"   value = "targeturl"/>
  </propertySet>

  <propertySet name="props.auth.uri">
    <property name="login.url.BASIC" value="/${app.context}/adfauthentication?level=BASIC" /> 
    <property name="login.url.FORM" value="/${app.context}/adfauthentication?level=FORM" /> 
    <property name="login.url.DIGEST" value="/${app.context}/adfauthentication?level=DIGEST" /> 
    <property name="autologin.url" value="/obrar.cgi" /> 
    <property name="logout.url" value="/${oamsso/logout.html" /> 
  </propertySet>

  <propertySet name = "props.auth.level">
    <property name = "level.anonymous" value = "0"/>
    <property name = "level.BASIC"    value = "1"/>
    <property name = "level.FORM"    value = "2"/>
    <property name = "level.DIGEST"   value = "3"/>
  </propertySet>
<propertySets>

<serviceProviders>
  <serviceProvider name = "sso.provider"
    class = "oracle.security.jps.internal.sso.SsoServiceProvider" 
    type = "SSO">
    <description>SSO service provider</description>
  </serviceProvider>
</serviceProviders>

<serviceInstances>
  <serviceInstance name = "sso" provider = "sso.provider">
    <propertySetRef ref = "props.auth.url"/>
    <propertySetRef ref = "props.auth.level"/>
    <property name = "default.auth.level" value = "2"/>
    <property name = "token.type" value = "OAMSSOToken"/>
    <property name = "token.provider.class" value = "oracle.security.wls.oam.providers.sso.OAMSSOServiceProviderImpl"/>
  </serviceInstance>
</serviceInstances>

<jpsContexts default = "default">
  <jpsContext name = "default">
    <serviceInstanceRef ref = "sso"/>
  </jpsContext>
</jpsContexts>

SSOプロバイダ構成詳細

次の重要な点に注意してください。

  • SSOプロバイダは少なくともフォーム・ログイン用のURIをプロパティlogin.url.FORMを使用して定義する必要があります。値はURLである必要はありません。

  • アプリケーションが自己登録ページURIまたはURLをサポートする場合、プロパティautologin.urlを使用して指定する必要があります。

  • SSOソリューションがグローバル・ログアウトURIまたはURLをサポートする場合、プロパティlogout.urlを使用して指定する必要があります。OAMソリューションはグローバル・ログアウトをサポートします。

  • 例C-1に示す次のプロパティはオプションです。

    • param.login.successurl

    • param.login.cancelurl

    • param.autologin.targeturl

    • param.login.token

    • param.logout.targeturl

  • プロパティ・セットprops.auth.uri内の値などのURI仕様における変数app.contextは、Oracle Access Managerソリューションとの統合時にADFアプリケーションに対してのみ使用できます。

  • プロパティ・セットprops.auth.levelが必要です。

  • props.auth.urlへの参照が必要です。

  • SSOプロバイダのサービス・インスタンス内のプロパティsso.provider.classは、特定のSSOソリューションを実装するクラスの完全修飾名です。

    OAMソリューションの場合、提供されているクラス名はoracle.security.wls.oam.providers.sso.OAMSSOServiceProviderImplです。

  • SSOプロバイダのサービス・インスタンス内のプロパティ名default.auth.level例C-1に示すように"2"に設定する必要があります。

  • SSOプロバイダのサービス・インスタンス内のプロパティ token.typeが必要です。

    このトークン・タイプは、認証が正常に終了した時にSSOプロバイダによるHTTPリクエストに設定されたトークン・セットを識別します。SSOプロバイダは初回以降このトークンを使用して、ユーザーに再認証が必要なく、そのサインオンが有効なままであることを確認します。OAMソリューションの場合、トークン・タイプは例C-1に示すように、OAMSSOTokenである必要があります。

  • SSOプロバイダのサービス・インスタンス内のプロパティtoken.provider.classはトークン・クラスの完全修飾名で、プロバイダ特有です。

  • 自己登録ロジックを実装し、自己登録が正常に終了した後はユーザーを自動ログインさせるアプリケーションは、OPSS autoLogin APIをコールする必要があります。そしてこのコールを許可するには、アプリケーションにクラスJpsPermissionを含むCredentialMappingという名前のコード・ソース権限を付与する必要があります。

    次に示すファイルsystem-jazn-data.xmlの一部は、アプリケーションMyAppへのこの権限の仕様を示します。

    <grant>
      <grantee>
        <codesource>
          <url>file:${domain.home}/servers/MyApp/-</url>
        </codesource>
      </grantee>
      <permissions>
        <permission>
          <class>oracle.security.jps.JpsPermission</class>
          <name>CredentialMapping</name>
        </permission>
      </permissions>
    </grant>
    

実行時のアプリケーションドリブン認証の確認

この章でこれまでに述べたように、これは認証を起動し、ユーザーをリダイレクトして、適切なソリューションで認証されるようにするアプリケーションです。たとえば、認証が必要なセキュアなアーティファクトの一部にユーザーがアクセスしているとアプリケーションが判断すると、この場合はOracle Access Manager 11g SSOを使用して、アプリケーションドリブン認証が起動されます。

実行時にアプリケーションドリブン認証を確認する手順

  1. Oracle ADFフレームワークに基づくアプリケーションを作成します。

  2. 「Oracle ADF SecurityおよびOPSS SSOフレームワークを使用したOAM 11gとWebアプリケーションの統合」の説明に従い、Oracle Access Manager SSO Securityプロバイダを構成します。

  3. 保護されたフィールドにアクセスし、アプリケーションが認証を起動することを確認します。