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

Oracle Application Developer Framework (ADF)とOracle ADF標準にコード化されたアプリケーションは、OPSS SSO Frameworkとのインタフェースです。Oracle Platform Security Services(OPSS)のシングル・サインオン・フレームワークは、あるドメインのアプリケーションをシングル・サインオン(SSO)ソリューションと統合する方法を提供します。

次の各トピックで説明するように、ユーザー認証のために、Oracle ADFセキュリティを使用するWebアプリケーションおよびOPSS SSOフレームワークを、Access Manager SSOのセキュリティ・プロバイダと統合できます。

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

Oracle Application Development Frameworkは、ADFセキュリティ・フレームワークを提供します。ADFセキュリティはOracle Platform Security Services (OPSS)アーキテクチャ上に構築され、OPSSアーキテクチャにはJava Authentication and Authorization Service (JAAS)およびJava EEコンテナ管理のセキュリティが組み込まれます。

次のトピックについて理解を深める必要があります。

A.1.1 Oracle Platform Security Servicesシングル・サインオン・フレームワーク

シングル・サインオン(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」を参照してください。

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

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

  • 自動ログイン: 最初に匿名でアプリケーションにアクセスしたユーザーが、そのアプリケーションにアカウントを登録します。正常に登録されると、そのユーザーは認証のURLにリダイレクトされます。また、プロンプトの表示なしで自動的にログインすることも可能です。

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

ノート:

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

関連項目:

『Oracle Platform Security Servicesによるアプリケーションの保護』OPSSアーキテクチャの概要に関する項

A.1.2 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 Fusion Middleware 11gにアップグレードする方法の詳細は、Oracle Fusion Middleware Java EEアップグレード・ガイドを参照してください。

A.2 Oracle ADFセキュリティおよびOPSS SSOフレームワークを使用したAccess ManagerとWebアプリケーションの統合

ユーザー認証のために、Oracle ADFセキュリティを使用するWebアプリケーションおよびOPSS SSOフレームワークを、Access Manager SSOのセキュリティ・プロバイダと統合します。Webアプリケーションを実行する前に、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インストールの場合、パスは次のようになります。

     $MW_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)

次の例のように、addOAMSSOProviderコマンドを実行します。

cd $MW_HOME/oracle_common/common/bin
 
./wlst.sh
 
.......after running ./wlst.sh............
Welcome to WebLogic Server Administration Scripting Shell
Type help() for help on available commands

addOAMSSOProvider(loginuri="/${app.context}/adfAuthentication",
 logouturi="/oamsso/logout.html", autologinuri="/obrar.cgi")
addOAMSSOProvider(loginuri="/testapp/adfAuthentication",
 logouturi="/oamsso/logout.html", autologinuri="/obrar.cgi")
wls:/offline> addOAMSSOProvider(loginuri="/${app.context}/adfAuthentication", logouturi="/oamsso/logout.html", autologinuri="/obrar.cgi")

表A-1では、各引数の予想値を定義します。

表A-1 addOAMSSOProviderコマンド行引数

引数 説明

loginuri

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

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

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

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

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

  4. ADFがこのURIにリダイレクトすると、Access Managerにより「ログイン」ページが表示されます(このURI用のAccess Managerで構成された認証スキームにより異なる)。

logouturi

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

ノート: ADFセキュリティが有効なアプリケーションの場合、「OAM Webゲートが関与するセッションの集中ログアウトの構成」に記載されているログアウト・ガイドラインに基づいてlogouturiを構成する必要があります。次のとおりです。

  • OAM Webゲートでは、logouturiの値はOAM Webゲートの管理者から検索される必要があります。

autologinuri

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

Oracle ADFセキュリティが有効なFusion Webアプリケーション用にドメイン・レベルjps-config.xmlを構成する手順は、より大きなタスクの一部です。

参照:

A.2.1 Access Manager用のSSO構成のサンプル

すべてのタスク(Access Manager SSOプロバイダおよびOAM構成例を含む)用に『Oracle Platform Security Servicesによるアプリケーションの保護』で説明されている手順で入力したSSOサービス構成は、ファイルjps-config.xmlに書き込まれます。指定されたデータには次のものが含まれます。

  • 特定のSSOサービス

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

  • 認証レベル

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

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

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

Access Manager用の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>

A.2.2 SSOプロバイダ構成詳細

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

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

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

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

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

    • param.login.successurl

    • param.login.cancelurl

    • param.autologin.targeturl

    • param.login.token

    • param.logout.targeturl

  • プロパティ・セットprops.auth.uri内の値などのURI仕様における変数app.contextは、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は、例A-1に示すように"2"に設定する必要があります。

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

    このトークンのタイプは、正常な認証後にSSOプロバイダが発行するHTTPリクエストのトークン・セットを特定します。2回目以降は、このトークンがSSOプロバイダで使用されるので、ユーザーの再認証が不要となり、ユーザーのサインオンが引き続き有効となります。OAMソリューションの場合、例A-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>

A.3 Oracle ADFコード・アプリケーションの集中ログアウト構成

Access Manager SSOソリューションは、Oracle ADF標準およびOPSS SSOフレームワークに従ってコーディングされたアプリケーションに使用できます。Access Managerでログアウトを実行するように構成されたADFコード・アプリケーションは、/oamsso/logout.htmlリソースにリダイレクトします。

関連項目:

Oracle Platform Security Servicesによるアプリケーションの保護

ノート:

ADFアプリケーションの場合は、追加的な構成ステップが1つだけ必要です(OPSS用にOAMSSOProviderを構成)。

タスクの概要: Access ManagerによるADFアプリケーションの保護

  1. OAM Webゲートを使用してADFコード・アプリケーションを保護します。
  2. ADFコード・アプリケーション用に追加的な構成ステップを1つ実行します: OAMSSOProviderを構成します。
  3. 選択したWebgateのバージョンに合わせてログアウト構成ステップを実行します。

A.3.1 Access ManagerでのADFコード化されたアプリケーションの集中ログアウトの構成

ADFコード・アプリケーションでは、ログアウト処理後にユーザーをどこへリダイレクトするかを明らかにするためにend_urlの値を送らなければなりません。ただしADFコード・アプリケーションでは、アプリケーションが次のURIを呼び出したときにログアウトが行われます。

 /<app context root>/adfAuthentication?logout=true&end_url=<any uri>

ノート:

Applcore f/wは前述のURLのトリガーを容易にすることができ、ADFアプリケーションはこれを利用することができます。

この手順の一部のステップにはWebLogic Scripting Tool (WLST)が必要で(Linuxではwlst.sh、Windowsではwlst.cmd)、これはWLST_install_dirから呼び出す必要があります。

関連項目:

『Oracle WebLogic Server WLSTコマンド・リファレンス』カスタマイズ・コマンドに関する項

ADFコード・アプリケーションの集中ログアウト構成方法

  1. 管理者にエージェントで構成されたlogout.htmlスクリプトの場所を確認します。それには、次のステップを実行する必要があります。

  2. 次のように、OAM用のOPSSをSSOプロバイダとして構成し、WebLogic管理ドメインのjps-config.xmlを更新します。

    1. Oracle ADFセキュリティを使用してOracle WebLogic ServerとWebアプリケーションをホストしているコンピュータ上で、Oracle JRF WLSTスクリプトの場所を確認します。たとえば:

      cd $ORACLE_HOME/oracle_common/common/bin
      
    2. Oracle WebLogic Serverをホストしているコンピュータに接続し、管理者IDとパスワード、およびWebLogic AdminServerのホストとポートを入力します。

      wls:/> /connect('admin_ID', 'admin_pw', 'hostname:port' 
      

      たとえば、Oracle WebLogic Administration Serverホストは、ポート7001を使用するlocalhostとすることができます。ただし、実際に使用している環境では異なることもあります。

    3. 管理者にエージェントで構成されたlogout.htmlスクリプトの場所を確認します。

      ステップdでは、管理者の提供する値を使用する必要があります。ここで、logouturiの値はログアウト・スクリプト/logout.htmlのURIです。この値は「logout」で始めるか(logout.gifとlogout.jpgは例外)、管理者が構成した別の値にすることもできます。

    4. ADF認証用のloginuriとlogouturiを入力します(エージェントによって構成されたlogout.htmlスクリプトの場所)。ホストとポートは必要ありません。

      wls:/>addOAMSSOProvider(loginuri="/${app.context}/adfAuthentication",
      logouturi="/oamsso/logout.html", autologinuri="/obrar.cgi")
      

      ここで、loginuri=/${app.context}/adfAuthentication、logouturivalはログアウト・スクリプト/logout.htmlのURIです。logouturlは「logout」で始めるか(logout.gifとlogout.jpgは例外)、管理者が構成した別の値にすることもできます。

  3. 必須: 次に示すように、ADFアプリケーションは、ログアウト後にユーザーをどこへリダイレクトするかを示すend_urlパラメータを渡さなければなりません。

    end_urlパラメータにhost:portが含まれていない場合、logout.htmlスクリプトはローカル・サーバーのhost:portを取得してend_urlパラメータをURLとして構成します。たとえば:

    http://serverhost:port/oam/server/logout?end_url=http://serverhost:port/ 
    welcome.html
    
  4. OAM Webゲート: 「OAM Webゲートの集中ログアウト構成」のステップを実行します。

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

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

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

  1. Oracle ADFフレームワークに基づくアプリケーションを作成します。
  2. 「Oracle ADFセキュリティおよびOPSS SSOフレームワークを使用したAccess ManagerとWebアプリケーションの統合」の説明に従い、Access Manager SSO Securityプロバイダを構成します。
  3. 保護されたフィールドにアクセスし、アプリケーションが認証を起動することを確認します。