高度なカスタマイズ > Info*Engine ユーザーガイド > Web サービスフレームワーク > セキュリティ要件について
  
セキュリティ要件について
このセクションでは、利用可能なセキュリティポリシーと、セキュリティプロパティ、トラストストア、およびキーストアの設定方法について説明します。
セキュリティポリシー
Web サービスを展開する前に、サービスのセキュリティを確保する方法を決定する必要があります。サポートされているすべてのセキュリティポリシーは以下のとおりです。
証明書を使用した SAML 送信者証明
このメカニズムは、整合性と機密性を確保するための相互証明書と、認証のための SAML 送信者保証トークンを使用して、メッセージを保護します。
このセキュリティポリシーを使用すると、SOAP クライアントは、サーバーがリクエストを実行するときに使用するユーザー名を示す名前識別子が含まれている SAML Subject (SAML Assertion 内) を指定します。この場合、クライアントとサーバーがそれぞれのキーストアとトラストストアのコンテンツを使用して信頼関係を確立するため、メッセージのペイロードは署名付きで暗号化されます。
この状況では、サーバーは、リクエストを処理する前に、指定されたユーザー名が有効であることのみを確認します。
このポリシーでは、クライアントがサーバーのキーストアとトラストストアに対応するキーストアとトラストストアを持っている必要があります。さらに、サーバーが信頼できるユーザー名を含んでいる SAML Assertion を指定するコールバックハンドラが Java クライアントに必要です。
* 
このメカニズムを使用する場合は、クライアントが SOAP リクエストに関連付けられているユーザー名を証明することを理解しておくことが非常に重要です。SOAP クライアントは、実質的に、1 人または複数のユーザーになりすまします。そのために、対応するパスワードを指定する必要はありません。このメカニズムは、クライアントアプリケーションがユーザーを適切に認証していることが確実であり、キーストアおよびトラストストアのコンフィギュレーションにおける証明書の交換を使用してそのクライアントも信頼することに問題がないと考えられる、SSO (シングルサインオン) タイプのシナリオでのみ適切です。
対称キーを使用したユーザー名認証
対称キーを使用したユーザー名認証のメカニズムは、SOAP 操作を保護して整合性と機密性の両方を確保します。対称キー暗号は、メッセージの署名と暗号化の両方に使用される単一の共有秘密キーに依存しています。通常、対称キーはパブリックキー暗号よりも高速です。
このメカニズムでは、クライアントは独自の証明書またはキーを所有しませんが、そのユーザー名とパスワードを、認証に使用されるために送信します。クライアントとサーバーは秘密キーを共有します。この共有されている対称キーは、実行時に生成され、サービスの証明書を使用して暗号化されます。クライアントは、サーバーの証明書のエイリアスを識別することにより、トラストストアでエイリアスを指定する必要があります。
この状況では、サーバーは、指定されたユーザー名を、指定された対応するパスワードを使用して認証します。
このポリシーでは、クライアントがサーバーのコンフィギュレーションに対応するトラストストアを持っている必要があります。さらに、サーバーが確認できるようにリクエストとともに送信するユーザー名とパスワードを提供するためのコールバックハンドラが Java クライアントに必要です。このメカニズムの例については、対称キーを使用したユーザー名認証の例を参照してください。
SSL 経由の X.509 証明書による認証
このセキュリティポリシーでは、機密性を確保するためには SSL (https) が使用され、ユーザーを認証するためには X.509 証明書が使用されます。ユーザーの証明書はサーバーによって信頼されている必要があり、Windchill で検証されるユーザー名は証明書から抽出されます。デフォルトでは、ユーザー名は証明書の件名 (参加者から先行する CN= を削除したもの) から抽出されます。証明書と Windchill ユーザー名の基本的なマッピングだけでは十分ではない可能性があるため、ユーザー名を抽出するために使用されるロジックを設定することができます。以下を使用して、com.ptc.jws.security.SubjectToUidHandler インタフェースを実装し、サーブレットの実装を設定することができます。
wt.property com.ptc.jws.security.x509SSL.<サーブレット名>.SubjectToUidHandlerClass
これは、ユーザーが使用する実装を指定します。
プロパティ名に含まれている <サーブレット名> は、SubjectToUidHandler 実装が使用される対象のサーブレットを示します。
* 
SSL によって保護されているサービスに対して Java クライアントを作成するときは、サービスの WSDL の https URL を javax.xml.ws.Service コンストラクタ引数に対して java.net.URL のインスタントして指定する必要があります。HTTP サーバーの SSL 証明書は、証明機関によって署名されるか、クライアントの <JAVA_HOME>/jre/lib/security/jssecacerts 証明書ストアに手動でインポートされる必要があります。
security.properties ファイル
Apache Ant ビルドのツーリングは、使用するセキュリティポリシーを指定するサーバーのセキュリティコンフィギュレーションと、トラストストアおよびキーストアのコンフィギュレーションを必要とします。Web サービスを展開する前に、この情報を指定するように security.properties ファイルを編集する必要があります。
サーバーの security.properties ファイルは以下の場所にあります。
<Windchill>/bin/adminTools/WebServices/security.properties
これには、そのコンテンツを説明するコメントが含まれています。
Java クライアントの作成またはテストには、以下の場所にある並列クライアントプロパティファイルを使用できます。
<Windchill>/bin/adminTools/WebServices/client/security.properties
これには、そのコンテンツを説明する類似のコメントが含まれています。
* 
両方のファイルには、リリース時の状態では、対応するクライアントとサーバーのトラストストアとキーストアのペアを指すコンフィギュレーションが含まれています。これは、後述の「トラストストアとキーストア」で説明されている Web サービスの例で使用するために生成できます。これらの生成されたトラストストアとキーストアを使用して Web サービスのセキュリティを確保することは可能ですが、独自の証明書を取得して、使用するアプリケーションのトラストストアとキーストアを設定することをお勧めします。
トラストストアとキーストア
Web サーバー認証の背後で Web サービスを手動で設定していないかぎり、X.509 v3 証明書を使用して Web サービスのセキュリティを確保する必要があります。使用されるセキュリティメカニズムには SubjectKeyIdentifier 拡張が必要であることに注意してください。Java とともにリリースされている keytool ユーティリティは、この拡張を生成しません。
Apache Ant ビルドスクリプトは以下の場所にあります。
<Windchill>/prog_examples/jws/jws-stores.xml
このビルドスクリプトを使用して、Info*Engine Web サービスの例で使用されるためのクライアントまたはサーバーのキーストアとトラストストアのペアを生成できます。これは、テストおよび開発の目的で使用することもできます。Apache Ant ビルドスクリプトでは、クライアントおよびサーバーの証明書を生成するためには OpenSSL が使用され、これらの証明書をクライアントまたはサーバーのキーストアおよびトラストストアファイルにインポートするためには Java keytool ユーティリティが使用されます。
独自の証明書を使用して Web サービスおよびクライアントのトラストストアとキーストアを作成する方法については、jws-stores.xml ビルドスクリプトを参照してください。このスクリプトは、サーバーとクライアントの証明書を 1 つずつ生成してから、クライアントとサーバーのトラストストアを生成する前に、これらの証明書を対応するキーストアにインポートするだけです。
これらのファイルを生成するには、以下のスクリプトを Windchill シェルから実行します。
% cd <Windchill>/prog_examples/jws
% ant -f jws-stores.xml
このスクリプトの実行中、ユーザー入力を数回要求されます。ユーザー入力を要求されたときに Enter を押してデフォルト ([ws-server] のような括弧で囲まれている) をそのまま使用することも、独自の入力を指定することもできます。デフォルトの入力を選択する場合は、リリースされている設定済みの security.properties ファイルに適切なコンフィギュレーションが含まれています。スクリプトの実行中にほかの入力を指定する場合は、対応する security.properties コンフィギュレーションをそれに応じて更新する必要があります。スクリプトの実行が終了したら、<Windchill>/prog_examples/jws/stores ディレクトリが作成されます。このディレクトリには、以下のファイルが含まれています。
server-keystore.jks
server-truststore.jks
client-keystore.jks
client-truststore.jks
server.p12
client.p12
server.cer
client.cer
* 
.p12 (PKCS #12 Personal Information Exchange) ファイルは、証明書を必要とする .NET クライアントアクセスのための Windows 証明書ストアを設定するために使用できます。.cer ファイルは、トラストストアとキーストアを設定するために使用されます。