Oracle Containers for J2EE
セキュリティ・ガイド
10g(10.1.3.4.0) B50832-01 |
|
OC4Jでは、Common Secure Interoperability Version 2プロトコル(CSIv2)がサポートされます。CSIv2は、認可とアイデンティティの委任をサポートするセキュアで相互運用可能なワイヤ・プロトコルに関する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はコール元に対してユーザー名とパスワードの指定を要求します。
この要素では、アイデンティティ委任プロパティを指定します。この要素には1つのサブ要素<caller-propagation>
があり、次のようにsupported
、required
またはnone
に設定できます。
supported
に設定すると、このBeanは中間サーバーから委任されたIDを受け入れます。
required
に設定すると、このBeanは他のすべてのBeanに対して委任されたIDの送信を要求します。
none
に設定すると、このBeanはアイデンティティの委任をサポートしません。
次の例では、<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 © 2003, 2008 Oracle Corporation. All Rights Reserved. |
|