Oracle® Fusion Middleware Oracle Access Management管理者ガイド 11gリリース2 (11.1.2.2) for All Platforms B69533-09 |
|
![]() 前 |
![]() 次 |
Oracle Application Developer Framework (ADF)とOracle ADF標準にコード化されたアプリケーションは、OPSS SSO Frameworkとのインタフェースです。Oracle Platform Security Services(OPSS)のシングル・サインオン・フレームワークは、あるドメインのアプリケーションをシングル・サインオン(SSO)ソリューションと統合する方法を提供します。
ユーザー認証のために、Oracle ADFセキュリティを使用するWebアプリケーションおよびOPSS SSOフレームワークを、Access Manager SSOのセキュリティ・プロバイダと統合できます。この章の内容は次のとおりです。
Oracle Platform Security ServicesおよびOracle Application Developer Frameworkの概要
Oracle ADFセキュリティおよびOPSS SSOフレームワークを使用したAccess ManagerとWebアプリケーションの統合
この項では次のトピックを記載しています:
シングル・サインオン(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フレームワークに次のものを提供します。
ログイン(アプリケーションドリブン): 認証を必要とするセキュアなアーティファクトの一部にアクセスするときに、アプリケーションは認証を起動し、ユーザーをリダイレクトして適切なソリューションにより認証されるようにします。
自動ログイン: アプリケーションに最初にアクセスするユーザーは、アカウントをアプリケーション(Oracle Identity Managerなど)に匿名で登録します。正常に登録されると、ユーザーは認証URLにリダイレクトされます。またユーザーは要求されることなく自動的にログインできます。
グローバル・ログアウト: ユーザーがアプリケーションからログアウトすると、そのログアウトはソリューションにより有効になっているその他のアプリケーション全体に伝播します。
注意: OPSS SSOフレームワークはマルチレベル認証をサポートしていません。 |
関連項目: SSOソリューションおよびAccess Managerソリューションの選択の詳細は、『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』の「シングル・サインオン構成」の部分を参照してください。 |
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セキュリティおよびOPSS SSOフレームワークを使用するWebアプリケーションと、ユーザー認証用の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)
表A-1はaddOAMSSOProviderコマンド行の各引数に必要な値を定義します。
表A-1 addOAMSSOProviderコマンド行引数
引数 | 定義 |
---|---|
loginuri |
ログイン・ページのURIを指定します 注: ADFセキュリティが有効なアプリケーションの場合、"/<context-root>/adfAuthentication"を'loginuri'パラメータに指定する必要があります。手順を示します。
|
logouturi |
ログアウト・ページのURIを指定します 注: ADFセキュリティが有効なアプリケーションの場合、logouturiを第22章のログアウト・ガイドラインに基づいて構成する必要があります。対象
|
autologinuri |
自動ログイン・ページのURIを指定します |
Oracle ADFセキュリティが有効なFusion Webアプリケーション用にドメイン・レベルjps-config.xmlを構成する手順は、より大きなタスクの一部です。コマンド構文を除き、すべてのタスクはAccess Manager 10gと11gとで同じです。
詳細な情報は、次を参照してください:
関連項目:
|
すべてのタスク(Access Manager SSOプロバイダおよびOAM構成例を含む)用に『Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド』で説明されている手順で入力したSSOサービス構成は、ファイルjps-config.xml
に書き込まれます。指定されたデータには次のものが含まれます。
特定のSSOサービス
自動ログインおよび自動ログアウトURI
認証レベル
選択したSSOサービスにより戻されるURLに含まれる問合せパラメータ
トークン生成に適した設定
jps-config.xml
ファイルにある次のコードはAccess Manager SSOプロバイダの構成を示しています。いくつかの値は実際の内容に対するプレースホルダにすぎません。使用する構成では実装用の値を含む必要があります。
例A-1 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>
次の重要な点に注意してください。
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アプリケーションに対してのみ使用できます。
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>
Access Manager SSOソリューションは、Oracle ADF標準およびOPSS SSOフレームワークに従ってコーディングされたアプリケーションに使用できます。Access Managerでログアウトを実行するように構成されたADFコード・アプリケーションは、/oamsso/logout.htmlリソースにリダイレクトします。
IAMSuiteAgentはリクエストのインターセプトと処理を行い、セッションをクリーン・アップし、集中ログアウト・ページにリダイレクトして(OAMサーバーにより実行)再びend_urlにリダイレクトします。
関連項目: Oracle Fusion Middlewareアプリケーション・セキュリティ・ガイド |
注意: ADFアプリケーションの場合は、追加的な構成ステップが1つだけ必要です(OPSS用にOAMSSOProviderを構成)。 |
タスクの概要: Access ManagerによるADFアプリケーションの保護
次のどちらかを使ってADFコード・アプリケーションを保護します。
11g Webgate
10g Webgate
ADFコード・アプリケーション用に追加的な構成ステップを1つ実行します: 「Access Manager使用時のADFコード・アプリケーションの集中ログアウト構成」の説明に従ってOAMSSOProviderを構成してください。
選択したWebgateのバージョンに合わせてログアウト構成ステップを実行します。
ADFコード・アプリケーションとは、ADFと完全に統合化されたアプリケーション、またはADF認証サーブレットだけを使用してOPSSとの統合化を図るアプリケーションを言います。
この場合、ログアウトは、ADFアプリケーションがログアウトURIを呼び出したときに開始されます。次のプロセスは、Oracle ADF標準に従ってコーディングされたアプリケーションのAccess Manager集中ログアウト・プロセスの概要です。
プロセス概要: 10g Webgate使用時のADFアプリケーションの集中ログアウト
ADFアプリケーションは次のURIを呼び出します。
/<application context root>/adfAuthentication?logout=true&end_url=<any uri>
end_url
パラメータは、ログアウト後にアプリケーションが制御を戻すURIを指定します。
ADFは構成済のOPSS SSOプロバイダ(この場合はOAM)を起動し、ログアウトURIにリクエストをリダイレクトすることによって、構成済のログアウトURIにログアウト機能を委任します。end_url
の値は問合せ文字列としてログアウトURIに渡されます。例: /oamsso/logout.html?end_url=<end_uri>
ログアウトURIは、アプリケーションのフロントエンド処理を行うWebgateに呼び出されます。
10g Webgateはそのドメイン用のObSSOCookieを削除して、logout.htmlスクリプトをロードします。
end_url
パラメータにhost:portが含まれていない場合、logout.htmlスクリプトはローカル・サーバーのhost:portを取得してend_url
パラメータをURLとして構成します。例:
http://serverhost:port/oam/server/logout?end_url=http://my.site.com/ welcome.html
logout.html内のロジックがOAMサーバーにリダイレクトします。例:
http://myoamserverhost:port/oam/server/logout?end_url=http://my.site.com/ welcome.html
OAMサーバーが次のようにログアウトを実行します。
サーバー側のユーザーに関連付けられたセッション情報をクリーン・アップします。
end_url
を確認して、コールバックURLを含むページをユーザーのブラウザに送信します。
コールバック・ページから、各Webgateの特定URIに対して新しいリクエストが開始されます。このリクエストが特定ドメインの特定Webgateに届くと、そのドメインのObSSOCookieは消去されます。
ユーザーは、ログアウト・スクリプト内のend_url
にリダイレクトされます。ただし、end_url
パラメータがない場合はOAMサーバーによって適切なメッセージが送信されます。
次の手順は10g Webgateのログアウト構成と同様ですが、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から呼び出す必要があります。
関連項目:
|
ADFコード・アプリケーションの集中ログアウト構成方法
管理者にエージェントで構成されたlogout.htmlスクリプトの場所を確認します。それには、次の手順を実行する必要があります。
次のように、OAM用のOPSSをSSOプロバイダとして構成し、WebLogic管理ドメインのjps-config.xmlを更新します。
Oracle ADFセキュリティを使用してOracle WebLogic ServerとWebアプリケーションをホストしているコンピュータ上で、Oracle JRF WLSTスクリプトの場所を確認します。例:
cd $ORACLE_HOME/oracle_common/common/bin
Oracle WebLogic Serverをホストしているコンピュータに接続し、管理者IDとパスワード、およびWebLogic AdminServerのホストとポートを入力します。
wls:/> /connect('admin_ID', 'admin_pw', 'hostname:port'
たとえば、Oracle WebLogic Administration Serverホストは、ポート7001
を使用するlocalhost
とすることができます。ただし、実際に使用している環境では異なることもあります。
管理者にエージェントで構成されたlogout.htmlスクリプトの場所を確認します。
ステップdでは、管理者の提供する値を使用する必要があります。ここで、logouturi
の値はログアウト・スクリプト/logout.htmlのURIです。この値は「logout」で始めるか(logout.gifとlogout.jpgは例外)、管理者が構成した別の値にすることもできます。
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は例外)、管理者が構成した別の値にすることもできます。
必須: 次に示すように、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
11g Webgate: 「11g Webgateの集中ログアウト構成」の手順を実行します。
10g Webゲート: 「11g OAMサーバー使用時の10g Webゲートの集中ログアウト構成」のステップを実行します。
この章でこれまでに述べたように、これは認証を起動し、ユーザーをリダイレクトして、適切なソリューションで認証されるようにするアプリケーションです。たとえば、認証が必要なセキュアなアーティファクトの一部にユーザーがアクセスしているとアプリケーションが判断すると、この場合はAccess Manager SSOを使用して、アプリケーションドリブン認証が起動されます。
実行時にアプリケーションドリブン認証を確認する手順
Oracle ADFフレームワークに基づくアプリケーションを作成します。
「Oracle ADFセキュリティおよびOPSS SSOフレームワークを使用したAccess ManagerとWebアプリケーションの統合」の説明に従い、Access Manager SSO Securityプロバイダを構成します。
保護されたフィールドにアクセスし、アプリケーションが認証を起動することを確認します。