| Oracle Containers for J2EE セキュリティ・ガイド 10g(10.1.3.1.0) B31857-01 |
|
OC4Jでは、Common Secure Interoperability Version 2プロトコル(CSIv2)がサポートされます。CSIv2は、認可とIDの委任をサポートするセキュアで相互運用可能なワイヤ・プロトコルに関するObject Management Group(OMG)規格で、EJBとともに使用することができます。
CSIv2では、様々な準拠レベルが指定されています。OC4Jは、準拠レベル0を必要とするEJB仕様に準拠しています。
CSIv2構成には、次の3つのファイルが関係します。
この章の構成は次のとおりです。
internal-settings.xmlファイルで、<sep-property>要素内の属性値を使用してCSIv2のサーバー・セキュリティ・プロパティを指定します。
表19-1はプロパティのリストです。この表では、鍵と証明書の格納に使用するキーストアとトラストストアの各ファイルについて言及しています。各ファイルには、JDK仕様の形式であるJava Key Store(JKS)が使用されます。キーストアには、秘密鍵と証明書のマップが格納されます。トラストストアには、認証局(CA。VeriSign社およびThawte社など)の信頼できる証明書が格納されます。
OC4JでCSIv2プロトコルを使用するには、sslをtrueに設定してIIOP/SSLポート(ssl-port)を指定する必要があります。次の点に注意してください。
sslをtrueに設定しないと、CSIv2は使用できません。
sslをtrueに設定すると、クライアントとサーバーではCSIv2を使用できますが、必ずしもSSLを使用して通信する必要はありません。
ssl-portを指定しないと、orion-ejb-jar.xml内で<ior-security-config>エンティティを構成していても、CSIv2のコンポーネント・タグは作成されません。
サーバー上でIIOP/SSLが有効化されている場合、OC4Jは2つの異なるソケットでリスニングします。一方はサーバー認証専用で、他方はサーバーおよびクライアント認証用です。<sep-property>要素内にサーバー認証ポート番号を指定します。OC4Jでは、サーバーおよびクライアント認証ポート番号用にこれに1が加算されます。
サーバー認証のみを使用するSSLクライアントの場合は、次のいずれかを指定できます。
キーストアもトラストストアも指定しないと、セキュリティ・プロバイダによりデフォルトのトラストストアが設定されていない場合にハンドシェイクが失敗する可能性があります。
クライアント認証を使用するSSLクライアントは、キーストアとトラストストアの両方を指定する必要があります。クライアント認証には、キーストアからの証明書が使用されます。
次の例に、一般的なinternal-settings.xmlファイルを示します。
<server-extension-provider name="IIOP" class="com.oracle.iiop.server.IIOPServerExtensionProvider"> <sep-property name="port" value="5555" /> <sep-property name="host" value="localhost" /> <sep-property name="ssl" value="true" /> <sep-property name="ssl-port" value="5556" /> <sep-property name="ssl-client-server-auth-port" value="5557" /> <sep-property name="keystore" value="keystore.jks" /> <sep-property name="keystore-password" value="123456" /> <sep-property name="truststore" value="truststore.jks" /> <sep-property name="truststore-password" value="123456" /> <sep-property name="trusted-clients" value="*" /> </server-extension-provider>
次にinternal-settings.xmlのDTDを示します。
<!-- A server extension provider that is to be plugged in to the server. --> <!ELEMENT server-extension-provider (sep-property*) (#PCDATA)> <!ATTLIST server-extension-provider name class CDATA #IMPLIED> <!ELEMENT sep-property (#PCDATA)> <!ATTLIST sep-property name value CDATA #IMPLIED> <!-- This file contains internal server configuration settings. --> <!ELEMENT internal-settings (server-extension-provider*)>
クライアントには、サーバー内で実行されるかどうかに関係なく、EJBセキュリティ・プロパティがあります。次の表19-2に、ejb_sec.propertiesファイルにより制御されるEJBクライアントのセキュリティ・プロパティを示します。デフォルトでは、OC4Jは、クライアントとして実行される場合はこのファイルを現行のディレクトリ内で検索し、サーバー内で実行される場合はORACLE_HOME/j2ee/home/config内で検索します。システム・プロパティ設定-Dejb_sec_properties_location=pathnameを使用して、このファイルの場所を明示的に指定できます。
クライアントがクライアント・サイドSSL認証を使用しない場合は、クライアント・ランタイムがサブジェクトを挿入してユーザー名とパスワードを送信できるように、ejb_sec.propertiesファイル内でclient.sendpasswordを設定する必要があります。また、サーバーを含むようにserver.trustedhostsを設定する必要があります。
クライアントがクライアント・サイドSSL認証を使用する場合、サーバーはクライアントの証明書からDNを抽出し、それを対応するセキュリティ・プロバイダ内で検索します。パスワード認証は実行されません。
次の2種類の信頼関係が存在します。
クライアントは、EJBプロパティoc4j.iiop.trustedServersに信頼できるサーバーをリストします。サーバーは、internal-settings.xml内の<sep-property>要素のtrusted-clientプロパティに信頼できるクライアントをリストします(「internal-settings.xml内のCSIv2セキュリティ・プロパティ(EJBサーバー)」を参照)。
EJB規格の準拠レベル0では、信頼関係について次の2つの処理方法が定義されています。
trusted-clientリスト、あるいはその両方での認証に基づいて中間サーバーを信頼します。
OC4Jでは、両方の種類の信頼がサポートされます。信頼関係は、orion-ejb-jar.xml内の<ior-security-config>要素を使用して構成します。これについては次項の「orion-ejb-jar.xml内のCSIv2のセキュリティ・プロパティ」で説明します。
この項では、EJB用のCSIv2セキュリティ・プロパティについて説明します。各BeanのCSIv2セキュリティ・ポリシーをorion-ejb-jar.xmlファイル内で個別に構成します。CSIv2セキュリティ・プロパティは<ior-security-config>要素内で指定します。各要素には<transport-config>サブ要素、<as-context>サブ要素、および<sas-context>サブ要素が含まれます。
<ior-security-config>要素のDTDは次のとおりです。
<!ELEMENT ior-security-config (transport-config?, as-context? sas-context?) > <!ELEMENT transport-config (integrity, confidentiality, establish-trust-in-target, establish-trust-in-client) > <!ELEMENT as-context (auth-method, realm, required) > <!ELEMENT sas-context (caller-propagation) > <!ELEMENT integrity (#PCDATA) > <!ELEMENT confidentiality (#PCDATA)> <!ELEMENT establish-trust-in-target (#PCDATA) > <!ELEMENT establish-trust-in-client (#PCDATA) > <!ELEMENT auth-method (#PCDATA) > <!ELEMENT realm (#PCDATA) > <!ELEMENT required (#PCDATA)> <!-- Must be true or false --> <!ELEMENT caller-propagation (#PCDATA) >
この項の以降の部分で、次の要素について説明します。
この要素には、トランスポートのセキュリティ・レベルを指定します。<transport-config>の各サブ要素は、supported、requiredまたはnoneに設定する必要があります。設定noneは、Beanがその機能をサポートせず、使用しないことを意味します。supportedは、Beanがその機能の使用をクライアントに許可することを意味します。requiredは、Beanがその機能の使用をクライアントに要求することを意味します。各サブ要素を次に示します。
<integrity>: すべての送信が、送信されたとおりに受信されるという保証があるかどうか。
<confidentiality>: 第三者が送信内容を読み取ることができなかったという保証があるかどうか。
<establish-trust-in-target>: サーバーがクライアントに対して自己認証を行うかどうか。この要素は、supportedまたはnoneに設定します。requiredに設定することはできません。
<establish-trust-in-client>: クライアントがサーバーに対して自己認証を行うかどうか。この要素では、メッセージ・レベルの認証プロパティを指定します。各サブ要素を次に示します。
<auth-method>: username_passwordまたはnoneに設定する必要があります。username_passwordに設定すると、Beanではコール元の認証にユーザー名とパスワードが使用されます。
<realm>: 現行の実装では、defaultに設定する必要があります。
<required>: trueに設定すると、Beanはコール元に対してユーザー名とパスワードの指定を要求します。
この要素では、ID委任プロパティを指定します。この要素には1つのサブ要素<caller-propagation>があり、次のようにsupported、requiredまたはnoneに設定できます。
supportedに設定すると、このBeanは中間サーバーから委任されたIDを受け入れます。
requiredに設定すると、このBeanは他のすべてのBeanに対して委任されたIDの送信を要求します。
noneに設定すると、このBeanはIDの委任をサポートしません。
次の例では、<ior-security-config>要素とそのサブ要素を使用しています。
<ior-security-config> <transport-config> <integrity>supported</integrity> <confidentiality>supported</confidentiality> <establish-trust-in-target>supported</establish-trust-in-target> <establish-trust-in-client>supported</establish-trust-in-client> </transport-config> <as-context> <auth-method>username_password</auth-method> <realm>default</realm> <required>true</required> </as-context> <sas-context> <caller-propagation>supported</caller-propagation> </sas-context> </ior-security-config>
|
![]() Copyright © 2006 Oracle Corporation. All Rights Reserved. |
|