Oracle Fusion Middleware Oracle SOA SuiteおよびOracle Business Process Management Suite管理者ガイド 11g リリース1(11.1.1) B55916-02 |
|
戻る |
次へ |
この章では、SOAコンポジット・アプリケーション固有のセキュリティ手順について説明します。
この章の内容は、次のとおりです。
第6.7項「Windowsのネイティブ認証環境でのOracle Business Process Management Process Composerユーザーの自動認証」
第6.13項「SSL対応の管理対象サーバーにデプロイ済の非同期プロセスの有効化による、HTTPを介した別の非同期プロセスの呼出し」
注意: ポリシーのアタッチおよびデタッチについては、次の各項を参照してください。 |
この章では、SOAコンポジット・アプリケーション固有のセキュリティ手順について説明します。ほとんどのSOAコンポジット・アプリケーションのセキュリティ手順は、SOA固有の手順を必要とせず、表6-1に示すドキュメントに従って実行できます。
表6-1 セキュリティに関するドキュメント
セキュリティ情報 | 参照ガイド |
---|---|
Oracleシングル・サインオン(OSSO)構成を含むOracle Fusion Middlewareの保護 |
『Oracle Fusion Middlewareセキュリティ・ガイド』 |
Webサービスの保護および管理 |
『Oracle Fusion Middleware Web Servicesセキュリティおよび管理者ガイド』 |
Oracle WebLogic Serverのセキュリティの理解 |
『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティについて』 |
Oracle WebLogic Serverの本番環境の保護 |
『Oracle Fusion Middleware Oracle WebLogic Server本番環境の保護』 |
Oracle WebLogic Serverの保護 |
『Oracle Fusion Middleware Oracle WebLogic Serverの保護』 |
Oracle WebLogic Serverで使用する新規セキュリティ・プロバイダの開発 |
『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティ・プロバイダの開発』 |
Oracle WebLogic ServerのWebサービスの保護 |
『Oracle Fusion Middleware Oracle WebLogic Server WebLogic Webサービスの保護』 |
Oracle WebLogic Serverのセキュリティ・プログラミング |
『Oracle Fusion Middleware Oracle WebLogic Serverセキュリティのプログラミング』 |
Oracle SOA Suiteでは、双方向SSL通信を構成するために、Oracle WebLogic ServerおよびSun社のSecure Socket Layer(SSL)スタックの両方を使用します。
インバウンドのWebサービス・バインディングの場合、Oracle SOA SuiteではOracle WebLogic Serverインフラストラクチャを使用し、SSL用にOracle WebLogic Serverライブラリを使用します。
アウトバウンドのWebサービス・バインディングの場合、Oracle SOA SuiteではJRF HttpClientを使用し、SSL用にSun JDKライブラリを使用します。
このように違いがあるため、次のJVMオプションを使用してOracle WebLogic Serverを起動します。
次のファイルを開きます。
UNIXオペレーティング・システムでは、$MIDDLEWARE_HOME\user_projects\domains\
domain_name
\bin\setDomainEnv.sh
を開きます。
Windowsオペレーティング・システムでは、MIDDLEWARE_HOME
/user_projects/domains/
domain_name
/bin/setDomainEnv.bat
を開きます。
サーバーが一方向SSL(サーバー認可のみ)に対して有効な場合は、次の行をJAVA_OPTIONS
セクションに追加します。
-Djavax.net.ssl.trustStore=your_truststore_location
双方向SSLの場合は、キーストア情報(場所とパスワード)は不要です。
また、次の手順を実行してSOAコンポジット・アプリケーションの双方向SSLが別のSOAコンポジット・アプリケーションまたは別の非SOAアプリケーションを起動できるようにします。
注意: サーバーとクライアントの両方が相互認証でSSL用に構成されていることが前提となります。 |
「SOAインフラストラクチャ」メニューから、「SOA管理」→「共通プロパティ」の順に選択します。
ページの下部で、「詳細SOAインフラ拡張構成プロパティ」をクリックします。
「KeystoreLocation」をクリックします。
「値」列に、キーストアの場所を入力します。
「適用」をクリックします。
「戻る」をクリックします。
Oracle JDeveloperでの設計時に、composite.xml
ファイル内の参照セクションをoracle.soa.two.way.ssl.enabled
プロパティで更新します。
<reference name="Service1"
ui:wsdlLocation=". . .">
<interface.wsdl interface=". . ."/>
<binding.ws port=". . .">
<property name="oracle.soa.two.way.ssl.enabled">true</property>
</binding.ws>
</reference>
Oracle Enterprise Manager Fusion Middleware Controlコンソールで、「WebLogicドメイン」→「domain_name」の順に選択します。
「domain_name」を右クリックし、「セキュリティ」→「資格証明」の順に選択します。
「マップの作成」をクリックします。
「マップ名」フィールドに名前(SOA
など)を入力し、「OK」をクリックします。
「キーの作成」をクリックします。
次の詳細を入力します。
フィールド | 説明 |
---|---|
マップの選択 | 手順6で作成したマップ(この場合はSOA)を選択します。 |
キー | キー名を入力します(KeystorePassword がデフォルトです)。 |
タイプ | 「パスワード」を選択します。 |
ユーザー名 | ユーザー名を入力します(KeystorePassword がデフォルトです)。 |
パスワード | キーストアに対して作成したパスワードを入力します。 |
注意: SSLをOracle WebLogic Serverで設定する場合は、キーの別名が必要です。別名の値として「mykey 」を入力する必要があります。この値は必須です。 |
Oracle Enterprise Manager Fusion Middleware Controlコンソールでキーストアの場所を設定します。方法については、手順1を参照してください。
https
およびsslport
を使用してSOAコンポジット・アプリケーションを起動するようにcomposite.xml
構文を変更します。たとえば、次の太字で示されている構文を変更します。
<?xml version="1.0" encoding="UTF-8" ?> <!-- Generated by Oracle SOA Modeler version 1.0 at [4/1/09 11:01 PM]. --> <composite name="InvokeEchoBPELSync" revision="1.0" label="2009-04-01_23-01-53_994" mode="active" state="on" xmlns="http://xmlns.oracle.com/sca/1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:orawsp="http://schemas.oracle.com/ws/2006/01/policy" xmlns:ui="http://xmlns.oracle.com/soa/designer/"> <import namespace="http://xmlns.oracle.com/CustomApps/InvokeEchoBPELSync/BPELProcess1" location="BPELProcess1.wsdl" importType="wsdl"/> <import namespace="http://xmlns.oracle.com/CustomApps/EchoBPELSync/ BPELProcess1"location="http://hostname:port/soa-infra/services/default/EchoBPEL Sync/BPELProcess1.wsdl" importType="wsdl"/>
https
およびsslport
を使用するように変更します。
location="https://hostname:sslport/soa-infra/services/default/EchoBPELSync /BPELProcess1.wsdl"
Webサービスを一方向SSL環境でSOAコンポジット・アプリケーションからの外部参照として呼び出す場合は、サーバーの証明書名(CN)とホスト名が完全に一致することを確認します。これにより、正しいSSLハンドシェークが保証されます。
たとえば、Webサービスの名前がadfbc
で、証明書のサーバー名がmyhost05
の場合は、次のコードでSSLハンドシェーク例外が発生します。
<import namespace="/adfbc1/common/" location="https://myhost05.us.oracle.com:8002/CustomApps-adfbc1-context-root/Ap pModuleService?WSDL" importType="wsdl"/> <import namespace="/adfbc1/common/" location="Service1.wsdl" importType="wsdl"/>
import
の順序を入れ替えると、SSLハンドシェークに成功します。
<import namespace="/adfbc1/common/" location="Service1.wsdl" importType="wsdl"/> <import namespace="/adfbc1/common/" location="https://myhost05.us.oracle.com:8002/CustomApps-adfbc1-context-root/Ap pModuleService?WSDL" importType="wsdl"/>
この問題に関連して次の制限があります。
Oracle WebLogic Server管理コンソールにあるようなホスト名の検証を無視するオプションはOracle JDeveloperにありません。これは、Oracle JDeveloperで使用されているSSLキットが異なるためです。トラスト・ストアのみコマンドラインから構成できます。他のすべての証明書引数は渡されません。
WSDLファイルで、https://
hostname
は前述のように証明書内の名前と一致する必要があります。ブラウザで行う場合と同じ手順は実行できません。たとえば、証明書のCNのホスト名がmyhost05.us.oracle.com
の場合、ブラウザではmyhost05
、myhost05.us.oracle.com
またはIPアドレスを使用できます。Oracle JDeveloperでは、必ず証明書内の名前と同じ名前(myhost05.us.oracle.com
)を使用する必要があります。
ここでは、Oracle SOA SuiteとOracle HTTP Server間でSSL通信を構成する手順について説明します。
<Location /integration/services>
場所ディレクティブを使用してmod_ssl.conf
を更新します。
LoadModule weblogic_module ${ORACLE_HOME}/ohs/modules/mod_wl_ohs.so <IfModule mod_weblogic.c> WebLogicHost host.domain.com WLLogFile <logdir>/ohs_ssl.log Debug ALL DebugConfigInfo ON SecureProxy ON MatchExpression *.jsp WlSSLWallet <OHS_ HOME>/instances/instance1/config/OHS/ohs1/keystores/default </IfModule> <Location /soa-infra> WebLogicPort 8002 SetHandler weblogic-handler ErrorPage http://host.domain.com:port/error.html </Location> <Location /b2bconsole> WebLogicPort 8002 SetHandler weblogic-handler ErrorPage http://host.domain.com:port/error.html </Location> <Location /b2b> WebLogicPort 8002 SetHandler weblogic-handler ErrorPage http://host.domain.com:port/error.html </Location> <Location /integration/worklistapp> WebLogicPort 8002 SetHandler weblogic-handler ErrorPage http://host.domain.com:port/error.html </Location> <Location /integration/services> WebLogicPort 8002 SetHandler weblogic-handler ErrorPage http://host.domain.com:port/error.html </Location> <Location /DefaultToDoTaskFlow> WebLogicPort 8002 SetHandler weblogic-handler ErrorPage http://host.domain.com:port/error.html </Location> <Location /OracleBAM> WebLogicPort 9002 SetHandler weblogic-handler ErrorPage http://host.domain.com:port/error.html </Location> <Location /OracleBAMWS> > WebLogicPort 9002 > SetHandler weblogic-handler > ErrorPage http://host.domain.com:port/error.html > </Location> <Location /sdpmessaging/userprefs-ui/> WebLogicPort 8002 SetHandler weblogic-handler ErrorPage http://host.domain.com:port/error.html </Location>
第6.2項「SOAコンポジット・アプリケーションの双方向SSL通信の構成」の説明に従って、Oracle WebLogic Serverを起動します。
Oracle HTTP Serverウォレットからユーザー証明書をエクスポートします。
orapki wallet export -wallet . -cert cert.txt -dn 'CN=\"Self-Signed Certificate for ohs1 \",OU=OAS,O=ORACLE,L=REDWOODSHORES,ST=CA,C=US'
エクスポートした証明書をOracle WebLogic Serverトラストストアに信頼できる証明書としてインポートします。
keytool -file cert.txt -importcert -trustcacerts -keystore DemoTrust.jks
Oracle WebLogic Serverトラストストアから証明書をエクスポートします。
keytool -keystore DemoTrust.jks -exportcert -alias wlscertgencab -rfc -file certgencab.crt
エクスポートした証明書をOracle HTTP Serverウォレットに信頼できる証明書としてインポートします。
orapki wallet add -wallet . -trusted_cert -cert certgencab.crt -auto_login_only
Oracle HTTP Serverを再起動します。
第6.2項「SOAコンポジット・アプリケーションの双方向SSL通信の構成」の説明に従って、Oracle WebLogic Serverを再起動します。
Security Assertion Markup Language(SAML)SSO環境で最初のOracle BPM Worklistから2番目のOracle BPM Worklistにアクセスするとき自動認証されるようにするには、次の手順を実行する必要があります。この手順を実行しないと、2番目のOracle BPM Worklistにアクセスするときに再度ログインするように求められます。この環境では、最初のOracle BPM WorklistはSAML IDプロバイダとして構成され、アクセスする2番目のOracle BPM WorklistはSAMLサービス・プロバイダとして構成されます。
/integration/worklistapp/*
をworklistapp
のリダイレクトURLとして、SAMLサービス・プロバイダ・サイトのSAML2IdentityAsserter
構成に追加します。
Oracle WebLogic Server管理コンソールで、「セキュリティ・レルム」を選択します。
サービス・プロバイダのレルムをクリックします。
「プロバイダ」タブを選択し、「認証」サブタブを選択します。
プロバイダ・リストから、SAML 2.0 IDアサーション・プロバイダと説明されているプロバイダを選択します。
SAML IDアサーション・プロバイダ構成が見つからない場合は、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』の説明に従ってください。
「管理」タブを選択します。
「管理」タブには、IDプロバイダ・パートナのリストが表示されます。これらは、このSAML IDサービス・プロバイダ・サイトのSAML IDプロバイダ・パートナとして構成されているホストです。この構成手順は、ワークリスト・アプリケーションがホスト管理されるIDサービス・プロバイダ・サイトで実行されることに注意してください。
ユーザーが最初のログインを実行するIDプロバイダ・サイトを選択します。
「リダイレクトURI」フィールドが表示されるまでページを下にスクロールします。
/integration/worklistapp/*
をリストに追加します。
この手順を実行した後、通常の/integration/worklistapp
というURLを使用してSAML IDプロバイダ・サイトでOracle BPM Worklistにログインできます。必要に応じて、SAMLサービス・プロバイダ・サイトでURL /integration/worklistapp/ssologin
に移動できます。ここで、Oracle BPM Worklistにアクセスして自動認証されます。
SAML2IdentityAsserter
、およびWebブラウザとHTTPクライアントを使用したSSOの構成については、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』を参照してください。
Kerberosを使用したWindowsのネイティブ認証をOracle BPM Worklistで使用するには、保護されたURL /integration/worklistapp/ssologin
を使用する必要があります。たとえば、Windowsのネイティブ認証を構成した後は、次のようにOracle BPM Worklistにアクセスします。
http://host_name.domain_name:8001/integration/worklistapp/ssologin
Microsoftクライアントを使用したSSOの構成については、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』を参照してください。
Kerberosを使用したWindowsのネイティブ認証をOracle Business Process Management Process Composerで使用するには、保護されたURL bpm/composer/ssologin
を使用する必要があります。たとえば、Windowsのネイティブ認証を構成した後は、次のようにProcess Composerにアクセスします。
http://host_name.domain_name:8001/bpm/composer/ssologin
Microsoftクライアントを使用したSSOの構成については、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』を参照してください。
Oracle BPM Worklistおよびワークフロー・サービスでは、Java Platform Security(JPS)と、ユーザーおよびロールAPIが使用されます。このため、Oracle Internet Directoryでワークフローが使用されるときは、Oracle Internet Directory認証者が最初のプロバイダとして表示される必要があります。Oracle Internet Directoryが最初に表示されない場合(たとえば、DefaultAuthenticator
の下に表示される場合)、ログイン認証は失敗します。
認証プロバイダの順序の変更方法については、『Oracle Fusion Middleware Oracle WebLogic Serverの保護』を参照してください。
Oracle BPM Worklistで非SSLからSSL構成に切り替えるには、Oracle WebLogic Server管理コンソールで「フロントエンド・ホスト」および「フロントエンドHTTPSポート」フィールドを設定する必要があります。設定しないと、To-Doタスクを作成するときに例外エラーが発生します。
Oracle WebLogic Server管理コンソールにログインします。
「環境」セクションで、「サーバー」を選択します。
管理対象サーバーの名前(たとえば、soa_server1)を選択します。
「プロトコル」を選択し、次に「HTTP」を選択します。
「フロントエンド・ホスト」フィールドに、Oracle BPM Worklistがあるホスト名を入力します。
「フロントエンドHTTPSポート」フィールドに、SSLリスナー・ポートを入力します。
「保存」をクリックします。
ヒューマン・ワークフロー・サービスのWSDLファイルを外部コンシューマに公開しない場合は、各サービスのWSDL公開フラグをfalse
に設定します。
<expose-wsdl>false</expose-wsdl>
詳細は、『Oracle Fusion Middleware Developer's Guide for Oracle Web Services』を参照してください。
Oracle WebCacheおよびOracle HTTP Server環境では、「Webサービスのテスト」ページでOracle WebCacheとの通信が必要になる場合があります。したがって、SOAコンポジット・アプリケーション・インスタンスとOracle WebCache間でSSLを構成する必要があります(つまり、ユーザー証明書をOracle WebCacheウォレットからエクスポートし、その証明書をOracle WebLogic Serverトラストストアに信頼できる証明書としてインポートします)。
keytool
やorapki
などのツールで作成したカスタム・トラスト・ストアを使用している場合にHTTPSを介してSOAコンポジット・アプリケーションを別のコンポジットから起動するには、Oracle JDeveloperで次の操作を実行します。
参照セクションでWSDLファイルをフェッチするには、「ツール」→「プリファレンス」→「HTTPアナライザ」→「HTTPS設定」→「クライアントの信頼する証明書キーストア」でトラスト・ストア情報を設定します。
SSL対応サーバーへのデプロイメント時に、コマンドラインでJSSEプロパティを使用します。
jdev -J-Djavax.net.ssl.trustStore=your_trusted_location
次の環境を作成するとします。
非同期BPELプロセスAが非同期BPELプロセスBを呼び出す
非同期BPELプロセスAは一方向SSL対応の管理対象サーバーにデプロイされる
すべてのWSDL参照およびバインディングでプレーンHTTPを使用する
実行時に、WSDLはHTTPSを介して検索され、非同期BPELプロセスBからのコールバック・メッセージが失敗します。
この問題を解決するには、callbackServerURL
プロパティをcomposite.xml
ファイルの参照バインディング・レベルで渡す必要があります。これは、特定の参照呼出しのコールバックURLの値を示します。クライアント・コンポジットがSSL管理対象サーバーで実行されている場合、コールバックはデフォルトでSSLになります。
<reference name="Service1"
ui:wsdlLocation="http://localhost:8000/soa-infra/services/default/AsyncSecondB
PELMTOM/BPELProcess1.wsdl">
<interface.wsdl
interface="http://xmlns.oracle.com/Async/AsyncSecondBPELMTOM/BPELProcess1#wsdl
.interface(BPELProcess1)"
callbackInterface="http://xmlns.oracle.com/Async/AsyncSecondBPELMTOM/BPELProce
ss1#wsdl.interface(BPELProcess1Callback)"/>
<binding.ws
port="http://xmlns.oracle.com/Async/AsyncSecondBPELMTOM/BPELProcess1#wsdl.endp
oint(bpelprocess1_client_ep/BPELProcess1_pt)"
location="http://localhost:8000/soa-infra/services/default/AsyncSecondBPELMTOM
/bpelprocess1_client_ep?WSDL">
<wsp:PolicyReference URI="oracle/wss_username_token_client_policy"
orawsp:category="security"
orawsp:status="enabled"/>
<wsp:PolicyReference URI="oracle/wsaddr_policy"
orawsp:category="addressing"
orawsp:status="enabled"/>
.
<property name="callbackServerURL">http://localhost:8000/</property>
.
</binding.ws>
.
<callback>
<binding.ws
port="http://xmlns.oracle.com/Async/AsyncSecondBPELMTOM/BPELProcess1#wsdl.endp
oint(bpelprocess1_client_ep/BPELProcess1Callback_pt)">
<wsp:PolicyReference
URI="oracle/wss_username_token_service_policy"
orawsp:category="security"
orawsp:status="enabled"/>
</binding.ws>
</callback>
.
</reference>