ヘッダーをスキップ
Oracle Application Server Microsoft Officeとの相互運用性開発者ガイド
10gリリース3(10.1.3.1.0)
B31842-01
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

6 スマート・ドキュメントおよびWebサービスのセキュリティ保護

この章では、安全な方法でエンタープライズWebサービスを起動するようにスマート・ドキュメントを設定する方法について説明します。Webサービス・プロキシを経由したスマート・ドキュメントとWebサービスの通信は、セキュリティ保護されている必要があります。これには、Webサービス、Webサービス・プロキシ、およびスマート・ドキュメントの構成が必要です。さらに、スマート・ドキュメントによって使用されるDLLファイルを参照するマニフェスト・ファイルをデジタル署名することが重要です。

この章の内容は次のとおりです。

6.1 概要

スマート・ドキュメントは、Microsoft Officeドキュメントを使用して作業する際のユーザー・エクスペリエンスを大幅に拡張します。スマート・ドキュメントを使用すると、ドキュメントにデータを自動入力したり、外部データに自動アクセスしてデータをドキュメント内に適切に配置したりすることができます。スマート・ドキュメントは、システムやアプリケーション間での情報の共有を可能にして、複雑なドキュメントを準備する際にコンテキスト・ヘルプを提供します。

スマート・ドキュメントはWebサービスと通信できます。Webサービスが非機密データを提供する場合はスマート・ドキュメントとWebサービスの間の通信をセキュリティ保護する必要はありませんが、Webサービスが部外秘の機密データを提供する場合はセキュリティ保護が必要です。この章では、スマート・ドキュメントとWebサービスの間の通信をセキュリティ保護するために必要な手順を説明します。

スマート・ドキュメントとこのドキュメントの特定のビジネス・ケースでの使用方法の詳細は、第4章「セルフサービス・ビジネス・プロセスと相互作用するスマート・ドキュメントの作成」および第5章「Microsoft Officeによるフォームの作成およびデータ入力」を参照してください。

6.2 前提条件

この章で説明するタスクを実行するには、次のアプリケーションおよびファイルをインストールする必要があります。

6.3 手順

Oracle JDeveloperを使用して、既存のJava実装を、機密情報または制限付き情報へのアクセスを提供するWebサービスとして公開することができます。スマート・ドキュメントがこのWebサービスと安全に通信できるように、このWebサービスをセキュリティ保護することができます。

たとえば、Star Loan Companyという会社が、ローン申込みを受けるためにWebサイトでWebサービスを公開しているとします。スマート・ドキュメント・フォームによって起動されるローン申込みでは、いくつかの機密情報(社会保障番号、年収など)を含む申込書の情報が必要です。申込書が申込みフォームに必要事項を入力してStar Loan Companyに送信する際、この情報転送はセキュリティ保護されている必要があります。スマート・ドキュメントとWebサービスの間のセキュリティ実装により、このような状況に適切に対処することができます。

この章では、5.3.1項「エンタープライズ情報を取得および更新するスマート・ドキュメントの開発」で開発したサンプルWebサービスと、安全なWebサービス・プロキシを使用するスマート・ドキュメント・ソリューションをセキュリティ保護します。

この安全なソリューションを開発するには、次の手順を実行します。

6.3.1 デモ・ファイルのコピー

デモ・サポートZIPファイルをコンピュータのC:\に解凍します。詳細は、表6-1「サンプル・スマート・ドキュメント・ファイル」を参照してください。

6.3.2 Webサービスの作成およびデプロイ

5.3.1.1項「Oracle JDeveloperでのWebサービスの開発」で示されている手順を実行して、Webサービスを作成します。

6.3.3 スマート・ドキュメントDLLの作成

次の手順を実行して、Microsoft Visual Studio .Net 2003を使用してスマート・ドキュメントDLLを作成します。

  1. Microsoft Visual Studio .Net 2003を開きます。

  2. 新しいVisual C#クラス・ライブラリ・プロジェクトを作成します。「File」「New」「Project」をクリックします。

  3. 「New Project」ダイアログ・ボックスで、「Visual C# Projects」「Class Library」を選択します。SecureDocというプロジェクト名を使用します。

  4. プロジェクト(SecureDoc)を右クリックして、「Add Reference」を選択します。

  5. 「Add Reference」ダイアログ・ボックスで、次のDLLファイルを追加します。

    • System.dll

    • System.data.dll

    • System.Web.dll

    • System.Web.Services.dll

    • System.Windows.Forms.dll

    • System.Drawing.dll

    • System.XML.dll

  6. Microsoft.Office.Interop.SmartTag.dllおよびMicrosoft.Office.Interop.Word.dllファイルへの参照を追加します。これらのDLLは、グローバル・アセンブリ・キャッシュ(GAC)にあるため、「Add Reference」ダイアログ・ボックスで参照することはできません。これらのDLLは、次の手順を実行することによって追加することができます。

    1. Microsoft Visual Studio .Net 2003でSecureDocを閉じます。

    2. テキスト・エディタを使用して、前述の手順でプロジェクトを保存した場所でSecureDocプロジェクト・ファイル(SecureDoc.csproj)を開きます。

    3. たとえば、次の行を、ファイルの<References>タグ内に追加します。

      <Reference    Name = "Microsoft.Office.Interop.Word"
          AssemblyName = "Microsoft.Office.Interop.Word"
          HintPath = "..\..\..\..\..\WINDOWS\assembly\GAC\Microsoft.Office.Interop.Word\11.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Word.dll"
      />
      
      <Reference
          Name = "Microsoft.Office.Interop.SmartTag"
          AssemblyName = "Microsoft.Office.Interop.SmartTag"
          HintPath = "..\..\..\..\..\WINDOWS\assembly\GAC\Microsoft.Office.Interop.SmartTag\11.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.SmartTag.dll"
      />
      
      
    4. ファイルを保存して閉じます。

    5. Microsoft Visual Studio .Net 2003でSecureDocを開きます。

  7. 次の手順を実行して、このVisual StudioプロジェクトのWeb Services Enhancementsを有効にします。

    1. 「Solution Explorer」ペインで、「SecureDoc」を右クリックして、「WSE Settings 2.0」を選択します。

    2. 表示されるダイアログ・ボックスで、「General」タブをクリックして、「Enable this project for Web Service Enhancements」を選択します。

    3. 「OK」をクリックします。

      これにより、Microsoft.Web.Services2.dllが参照リストに追加されます。

  8. 5.3.1.1項「Oracle JDeveloperでのWebサービスの開発」でOracle JDeveloperを使用して作成したEmpService WebサービスにWeb参照を追加することによって、安全なWebサービス・プロキシを生成します。これには、次の手順を実行します。

    1. 「Solution Explorer」ペインで、「References」を右クリックして、「Add Web Reference」を選択します。

    2. 「Add Web Reference」ダイアログ・ボックスで、EmpService WebサービスのWSDLを入力します。これは、Oracle JDeveloperでのWebサービス作成の最後に示されているWSDLファイルのURLです。このURLに?WSDLを追加する必要があります。

    3. Web参照名をSecureWSに変更し、「Add Web Reference」をクリックします。

    4. 「Solution Explorer」ペインの「SecureWS」リンクをダブルクリックして、SecureDoc.SecureWSを開きます。MyWebService1Wseというファイルが表示されます。

  9. ISmartDocumentインタフェースを実装するクラスを作成します。プロジェクト(SecureDoc)を右クリックして、「Add」「Add Class」をクリックします。クラスをSecureSmartDocument.csと命名します。A.6項「SecureSmartDocument.csファイルの内容」のコンテンツをこのファイルにコピーして、ファイルを保存します。

  10. プロジェクトを構築します。DLLファイルがproject_path/bin/debugディレクトリに作成されます。

  11. DLLファイルをコンピュータのSecureSmartDocUtokenおよびSecureSmartDocX509デモ・サポート・フォルダ(C:\microsoft-interoperability-guide-demo-support\securingsmartdocs\SecureSmartDocUtoken\など)にコピーします。

6.3.4 スマート・ドキュメントへのXMLスキーマおよび拡張パックのアタッチ

6.3.1項「デモ・ファイルのコピー」でコピーしたスマート・ドキュメントにXMLスキーマおよびXML拡張パックをアタッチするには、次の手順を実行します。

  1. コンピュータのデモ・サポート・フォルダ(C:\microsoft-interoperability-guide-demo-support\securingsmartdocs\SecureSmartDocUtoken\SecureSmartDocument.doc)にあるサンプル・ドキュメント(SecureSmartDocument.doc)を開きます。

  2. Microsoft Wordのメニュー・バーから、「Tools」をクリックして、「Templates and Add-Ins」をクリックします。

  3. 「Templates and Add-ins」ダイアログ・ボックスで、「XML Schema」タブを選択します。

  4. 「Schema Library」をクリックします。

  5. すでにアタッチされているスキーマがあれば、選択して、「Delete Schema」をクリックします。

  6. 「Add Schema」をクリックして、デモ・サポート・フォルダ(C:\microsoft-interoperability-guide-demo-support\securingsmartdocs\SecureSmartDocUtoken\など)からSecureDocument.xsdを選択します。スキーマをSecureDocと命名し、「OK」をクリックします。


    注意:

    新しいXSDファイルを作成して、A.5項「SecureDocument.xsdファイルの内容」のコードをそのファイルにコピーし、SecureDocument.xsdとして保存することもできます。その後、このスキームを追加できます。

  7. 「OK」をクリックします。

  8. 「XML Structure」ペインで「Show XML tags in the document」を選択します。

  9. バナー・イメージのすぐ下にカーソルを移動し、「XML Structure」ペインのreport要素を選択します。メッセージが表示されたら、「Apply to Entire Document」をクリックします。

  10. 「Enter Name」というテキストを選択し、「XML Structure」ペインのname要素をクリックします。ドキュメントは図6-1のようになりました。

    図6-1 SecureSmartDocument.docのXML構造

    図6-1の説明が続きます
    「図6-1 SecureSmartDocument.docのXML構造」の説明

  11. ドキュメントを保存します。

前述の手順で作成したスマート・ドキュメントにXML拡張パックをアタッチするには、次の手順を実行します。

6.3.4.1 XML拡張パックのアタッチ

XML拡張パックをアタッチするには、次の手順を実行します。

  1. ManagedManifest.xmlというXMLファイルを作成し、例A-3「第6章のManagedManifest.xml」のコードをこのファイルに追加します。または、securingsmartdocs\SecureSmartDocUtokenデモ・フォルダで提供されているManagedManifest.xmlファイルを使用することもできます。

  2. XML拡張パックをドキュメントにアタッチします。これには、次の手順を実行します。

    1. Microsoft Wordのメニュー・バーから、「Tools」をクリックして、「Templates and Add-Ins」をクリックします。

    2. 「Templates and Add-ins」ダイアログ・ボックスで、「XML Expansion Packs」タブを選択します。

    3. 「Add」をクリックして、デモ・サポート・フォルダ(C:\microsoft-interoperability-guide-demo-support\securingsmartdocs\SecureSmartDocUtoken\ManagedManifest.xmlなど)からManagedManifest.xmlを選択します。

6.3.4.2 マニフェスト・セキュリティ・チェックの有効化

スマート・ドキュメント・マニフェスト・ファイルのマニフェスト・セキュリティ・チェックを有効にするには、次の手順を実行します。

  1. Microsoft Officeスマート・ドキュメントSDKに付属のXML Expansion Pack Signing Utilityを使用して、信頼済証明書でXML拡張パックにデジタル署名します。

  2. 次のように、makecertユーティリティを使用して署名用の信頼済証明書を作成します。

    makecert -r -n "CN=mansign" -sv mansign.pvk mansign.cer
    
    

    makecert.exeは、Microsoft Visual Studio .Net 2003のインストールに含まれています。既存の信頼済証明書を持っている場合は、手順2〜6を省略できます。

  3. 証明書ファイル(mansign.cer)および秘密鍵ファイル(mansign.pvk)をデモ・サポート・ファイル・ディレクトリ(C:\microsoft-interoperability-guide-demo-support\securingsmartdocs\certsなど)にコピーします。

  4. 次の手順を実行して、証明書を個人ストアにインストールします。

    1. .cerファイルを右クリックして、「証明書のインストール」を選択します。「証明書のインポート ウィザード」が表示されます。

    2. 「次へ」をクリックします。

    3. 「証明書ストア」ウィザード・ダイアログ・ボックスで、「証明書をすべて次のストアに配置する」を選択し、個人ストアを参照して、「OK」をクリックします。

    4. 「次へ」をクリックし、「完了」をクリックします。

  5. 証明書が正常に格納されたことを確認します。「手順3: 証明書が正常に格納されたかどうかのチェック」を参照してください。最後の手順で、mansignというエイリアスを持つ証明書が存在することを確認します。

  6. この証明書を信頼済にするには、次の手順を実行します。

    1. Windowsで、「スタート」「ファイル名を指定して実行」をクリックします。

    2. mmcと入力して、「OK」をクリックします。これにより、Microsoft管理コンソール(MMC)ツールが起動します。

    3. 「コンソール ルート」「証明書」「信頼されたルート証明機関」をクリックします。

    4. 「証明書」を右クリックして、「すべてのタスク」「インポート」をクリックします。

    5. 「証明書のインポート ウィザード」で、mansign.cerを選択します。

    6. 「次へ」をクリックし、「完了」をクリックします。

6.3.4.3 XMLSign.exeによるマニフェストの署名

XMLSign.exeを使用してマニフェストに署名するには、次の手順を実行します。

  1. C:\Program Files\Microsoft Office 2003 Developer Resources\Microsoft Office 2003 Smart Document SDK\Toolsディレクトリにナビゲートします。

  2. 次のコマンドを実行します。

    xmlsign.exe -c mansign.cer -v mansign.pvk ManagedManifest.xml
    
    

    ここで、ManagedManifest.xmlはスマート・ドキュメントのXML拡張パックです。XMLSign.exeは、Microsoft Office 2003スマート・ドキュメントSDKに含まれています。

  3. snユーティリティを使用して、管理対象スマート・ドキュメント・アセンブリを厳密名でコンパイルします。厳密名は、単純テキスト・アセンブリ名、バージョン番号、カルチャ情報、公開鍵、およびデジタル署名で構成されます。次のように、snを実行します。

    sn -k PSS_SmartDoc.snk
    
    

    sn.exeは、Microsoft Visual Studio .Net 2003のインストールに含まれています。

  4. SecureDocビジュアル・プロジェクトのAssemblyInfo.csファイルで、次のように、厳密名キーをポイントするようにAssemblyKeyFile属性を設定します。

    [assembly: AssemblyDelaySign(false)] [assembly: AssemblyKeyFile("C:\demos\certs\PSS_SmartDoc.snk")]  [assembly: AssemblyKeyName("")]
    
    

    PSS_SmartDoc.snkファイルの絶対パスを提供します。

  5. スマート・ドキュメント・プロジェクトを再構築します。

  6. signcodeユーティリティを使用して、厳密名を持つアセンブリをデジタル署名します。これには、次の手順を実行します。

    1. 次のように、cert2spc.exeを使用して署名用のSPCファイルを作成します。

      Cert2spc mansign.cer mansign.spc
      
      
    2. 次のように、C:\Program Files\Microsoft.NET\SDK\v1.1\Binにあるsigncodeユーティリティを使用して、スマート・ドキュメントDLLを署名します。

      signcode /spc mansign.spc /v mansign.pvk C:/microsoft-interoperability-guide-demo-support/securingsmartdocs/SecureSmartDocUtoken/SecureDoc.dll
      
      

      ここで、SecureDoc.dllは、セキュリティ保護されたドキュメントのアセンブリです。signcode.exeは、Microsoft Visual Studio .Net 2003のインストールに含まれています。

6.3.5 スマート・ドキュメントとWebサービスの間の通信のセキュリティ保護

この項では、スマート・ドキュメントとWebサービスの間の通信をセキュリティ保護する方法について説明します。この章では、スマート・ドキュメントとWebサービスの間の通信をセキュリティ保護する方法として、ユーザー名トークンとX.509トークンの2つを説明します。この項の内容は次のとおりです。

6.3.5.1 ユーザー名トークンによるWebサービス・プロキシおよびWebサービスのセキュリティ保護

ユーザー名トークンを使用すると、ユーザー資格証明をWebサービスに伝達することができます。この方法を選択する場合、ユーザーは、ユーザー名(オプション)およびパスワードを入力することによって認証を実行しないと、スマート・ドキュメントでWebサービスを使用できません。次の2つの項では、ユーザー名トークン認証を構成する手順を説明します。

6.3.5.1.1 クライアント側のセキュリティ保護

機密情報へのアクセスを提供する場合は、ユーザーが安全なWebサービスにアクセスする際に必ず認証されるようにする必要があります。有効な資格証明を入力するために、認証ダイアログ・ボックスがユーザーに表示される必要があります。クライアント側をセキュリティ保護するには、次の手順を実行します。

  1. Microsoft Visual Studio .Net 2003を開きます。

  2. ユーザー名トークン・ダイアログ・クラスを作成して、6.3.3項「スマート・ドキュメントDLLの作成」で作成したビジュアル・プロジェクトに追加します。「Solution Explorer」ペインでSecureDocプロジェクトを選択し、「Add」「Add Class」をクリックして、UsernameTokenDialog.csと命名します。

  3. A.7項「UsernameTokenDialog.csファイルの内容」のコンテンツをこのファイルにコピーします。

  4. スマート・ドキュメントをWebサービス・プロキシと統合して、前述の手順で抽出されたユーザー名とパスワードを渡します。

    Microsoft Visual Studio .Net 2003で、例6-1に示されているコードを、6.3.3項「スマート・ドキュメントDLLの作成」で作成したスマート・ドキュメント・クラスのonTextboxContentChange()メソッドに追加します。

    例6-1 TextboxContentChange()メソッドに追加するコード(ユーザー名トークン)

    {
    
       if (Value.Length > 0)
       {
          String subName = Environment.UserName;
    
          UsernameTokenDialog dialog = new UsernameTokenDialog();
          String uname = null;
          String pwd = null;
    
          dialog.setDefaultUsername(subName);
    
          if (dialog.ShowDialog() == DialogResult.OK)
          {
             uname = dialog.getUsername();
             pwd = dialog.getPassword();
          }
    
          if (uname == null || pwd == null)
          {
             System.Windows.Forms.MessageBox.Show("Missing username / password ");
          }
          else
          {
    
             SecureDoc.SecureWS.MyWebService1Wse proxy = new SecureDoc.SecureWS.MyWebService1Wse();
    
             UsernameToken utoken = new UsernameToken(uname, pwd, PasswordOption.SendPlainText);
    
             // Add the UsernameToken token to the SOAP message.
             proxy.RequestSoapContext.Security.Tokens.Add(utoken);
    
             String res = proxy.getAddress(uname);
    
             Console.WriteLine("response : " + res);
             Console.ReadLine();
    
             System.Windows.Forms.MessageBox.Show(res);
    
             String result = res;
    
             Microsoft.Office.Interop.Word.Range objRange = (Microsoft.Office.Interop.Word.Range)Target;
             objRange.InsertAfter(result);
    
          }
       }
    }
    
    
  5. プロジェクトを再構築して更新されたDLLを生成し、このDLLをC:\microsoft-interoperability-guide-demo-support\securingsmartdocs\SecureSmartDocUtokenにコピーします。

6.3.5.1.2 サーバー側のWebサービスのセキュリティ保護

サーバー側のWebサービスをセキュリティ保護するには、次の手順を実行します。

  1. Oracle JDeveloperを使用して生成したWebサービスを開きます。

  2. MyWebService1を右クリックして、「セキュアなWebサービス」を選択します。ウィザードが表示されます。

  3. 認証オプションの「テキスト・パスワード」を選択します。

  4. 「セキュリティ」の下の「認証」タブを選択し、「認証するにはユーザー名トークンが必要です」を選択します。

  5. アプリケーション・ナビゲータで、MyWebService1ノードを右クリックして、「実行」を選択します。Oracle JDeveloperは、サービスを埋込みOC4Jコンテナに自動的にデプロイします。

  6. コンソール・ウィンドウのURLをコピーして、新しいInternet Explorerウィンドウの「アドレス」フィールドに貼り付け、[Enter]を押します。

    動作しているWebサービスを示すページが表示されます。

  7. 次の手順を実行して、system-jazn-data.xmlファイルにユーザー・エントリを追加します。

    1. 「実行」「終了」「埋込みOC4Jサーバー」をクリックして、組込みOC4Jサーバーを停止します。

    2. JDEV_HOME/Jdev/mywork/MSOfficeディレクトリにナビゲートし、編集するためにMSOffice-jazn-data.xmlファイルを開きます。

    3. <users>タグの下に次のユーザー・エントリを入力します。

      <user>
          <name>jcooper</name>
          <display-name>Smart document user </display-name>
          <description>Smart document user</description>
          <credentials>!password</credentials>
      </user>
      

      注意:

      ユーザー名およびパスワードは、クライアントが送信するユーザー名およびパスワードと同じである必要があります。

  8. OC4Jサーバーを再起動します。

  9. MyWebService1を選択して、「実行」をクリックします。

6.3.5.2 X.509トークンによるWebサービス・プロキシおよびWebサービスのセキュリティ保護

X.509トークンを使用すると、ユーザー資格証明をWebサービスに伝達することができます。この方法を選択する場合は、公開鍵インフラストラクチャ(PKI)の信頼を設定しないと、X.509トークンを交換できません。次の項では、X.509トークン認証を構成する手順を説明します。

6.3.5.2.1 公開鍵と秘密鍵の生成およびデプロイ

公開鍵インフラストラクチャ(PKI)により、組織は、認証済ユーザーと信頼済リソースの間で交換されるデジタル証明を使用して、通信とビジネス・トランザクションをセキュリティ保護することができます。現行ユーザーに必要な秘密鍵はクライアント・メッセージの署名に使用され、OC4J Webサービスによって使用される公開鍵は署名の確認と識別の確立に必要です。PKIをデプロイしてスマート・ドキュメントをセキュリティ保護する手順の概要は、次のとおりです。

手順1: X.509証明書および対応する秘密鍵ファイルの作成

X.509証明書と対応する秘密鍵(pvk)ファイルを作成するには、次の手順を実行します。

  1. 次のように、makecertユーティリティを実行します。

    makecert -r -n %alias% -sv  %pvkfilename%  %cerfilename%
    
    

    ここで、aliasは証明書のエイリアスです。たとえば、Windowsシステムにログインするユーザーの識別がjcooperの場合は、CN=jcooperというエイリアスで証明書を作成します。

    たとえば、次のようになります。

    makecert -r -n "CN=jcooper" -sv  jcooper.pvk jcooper.cer
    
    
  2. 「秘密キーのパスワードの作成」ダイアログ・ボックスで、パスワードをoc4jnetsignと指定して確認し、「OK」をクリックします。

  3. 次のコマンドを実行して、PFXファイルを作成するために必要なSPCファイルを作成します。

    Cert2spc.exe jcooper.cer jcooper.spc
    
    

    これにより、jcooper.spcファイルが作成されます。

  4. 次のコマンドを実行して、PVKおよびSPCファイルからP12ファイルを作成します。

    Pvkimprt.exe -pfx jcooper.spc jcooper.pvk
    
    
  5. 「秘密キーのパスワードの入力」ダイアログ・ボックスで、パスワードのoc4jnetsignを入力して、「OK」をクリックします。

  6. 「証明書のエクスポート ウィザード」が表示され、これによって、証明書と関連秘密鍵からのPFXファイルの作成を開始することができます。「次へ」をクリックします。

  7. 「はい」をクリックして秘密鍵を証明書とともにエクスポートします。

  8. 図6-2に示すような「エクスポート ファイルの形式」ウィザード・ダイアログ・ボックスで、「強力な保護を有効にする」オプションが選択されていないことを確認して、「次へ」をクリックします。

    図6-2 「エクスポート ファイルの形式」

    図6-2の説明が続きます
    「図6-2 「エクスポート ファイルの形式」」の説明

  9. 「パスワード」ウィザード・ダイアログ・ボックスで、前に指定したパスワード(oc4jnetsign)を入力し、確認のために同じパスワードを入力して、「次へ」をクリックします。

  10. 図6-3に示すような「エクスポートするファイル」ウィザード・ダイアログ・ボックスで、ファイル名をoc4jnetp12.pfxに指定し、このファイルをC:\microsoft-interoperability-guide-demo-support\securingsmartdocs\SecureSmartDocX509\Certificateフォルダに格納します。「次へ」をクリックします。

    図6-3 「エクスポートするファイル」

    図6-3の説明が続きます
    「図6-3 「エクスポートするファイル」」の説明

  11. 「証明書ストア」ウィザード・ダイアログ・ボックスで、「証明書をすべて次のストアに配置する」を選択します。「参照」をクリックして、「個人」を選択します。

  12. 「証明書のエクスポート ウィザードの完了」ダイアログ・ボックスで、「完了」をクリックします。

手順2: 秘密鍵証明書のインストール

秘密鍵証明書をWindowsのキーストアにインストールするには、次の手順を実行します。

  1. oc4jnetp12.pfxを右クリックして、「PFX のインストール」をクリックします。「証明書のインポート ウィザード」が表示されます。

  2. 「次へ」をクリックします。図6-4に示すように、「インポートする証明書ファイル」ウィザード・ダイアログ・ボックスに、すでに選択されているoc4jnetp12.pfxファイルが表示されます。

    図6-4 「インポートする証明書ファイル」

    図6-4の説明が続きます
    「図6-4 「インポートする証明書ファイル」」の説明

  3. 「次へ」をクリックします。

  4. 「パスワード」ウィザード・ダイアログ・ボックスで、証明書を作成したときに指定したパスワード(oc4jnetsign)を入力して、「次へ」をクリックします。

  5. 「証明書ストア」ウィザード・ダイアログ・ボックスで、証明書ストアを「Personal」に指定し、「次へ」をクリックします。

  6. 「証明書のインポート ウィザードの完了」ダイアログ・ボックスで、「完了」をクリックします。

手順3: 証明書が正常に格納されたかどうかのチェック

証明書が正常に格納されたかどうかをチェックするには、次の手順を実行します。

  1. Windowsで、「スタート」「ファイル名を指定して実行」をクリックします。

  2. mmcと入力して、「OK」をクリックします。これにより、Microsoft管理コンソール(MMC)ツールが起動します。

  3. 「コンソール」「スナップインの追加と削除」をクリックします。

  4. 「スタンドアロン」タブで、「追加」をクリックします。

  5. 図6-5に示すような「スタンドアロン スナップインの追加」ダイアログ・ボックスで、「証明書」をダブルクリックします。

    図6-5 「スタンドアロン スナップインの追加」

    図6-5の説明が続きます
    「図6-5 「スタンドアロン スナップインの追加」」の説明

  6. 「証明書スナップイン」ダイアログ・ボックスで、「ユーザー アカウント」を選択して、「完了」をクリックします。

  7. 「スタンドアロン スナップインの追加」ダイアログ・ボックスで、「閉じる」をクリックします。

  8. 「スナップインの追加と削除」ダイアログ・ボックスで、「OK」をクリックします。

  9. 「コンソール ルート」「証明書」「Personal」「証明書」をクリックします。この例では、エイリアス名はjcooperです。

手順4: X.509 Certificate Toolによる証明書の表示

特定の証明書のキー識別子を表示するには、Web Service Enhancements 2.0とともにインストールされるX.509 Certificate Toolを使用する必要があります。証明書を表示するには、次の手順を実行します。

  1. X.509 Certificate Toolを起動します。「スタート」「プログラム」「Microsoft WSE 2.0」「X509 Certificate Tool」をクリックします。

  2. 「Store Name」として「Personal」を指定します。

  3. 「Open Certificate」をクリックして、「jcooper」を選択します。

手順5: 署名を確認するための公開鍵証明書のインポート

署名を確認するために、oc4jnet12.pfxからJavaキーストアに公開鍵証明書をインポートするには、次のように、keytoolユーティリティを使用します。

keytool -import -alias jcooper -file jcooper.cer -keypass jcooper -keystore myks.jks -storepass password

6.3.5.2.2 クライアント側のセキュリティ保護

クライアント側をセキュリティ保護するには、次のタスクを実行します。

  1. 6.3.3項「スマート・ドキュメントDLLの作成」に示されている手順で、Windowsユーザーのための秘密鍵および公開鍵証明書を生成します。

  2. スマート・ドキュメントとWebサービス・プロキシを統合して、6.3.3項「スマート・ドキュメントDLLの作成」で作成した証明書を渡します。

    Microsoft Visual Studio .Net 2003で、例6-2に示されているコードを、6.3.3項「スマート・ドキュメントDLLの作成」で作成したスマート・ドキュメント・クラスのonTextboxContentChange()メソッドに追加します。

    例6-2 TextboxContentChange()メソッドに追加するコード(X.509トークン)

    {
       if (Value.Length > 0)
       {
          String subName = Environment.UserName;
    
          SecureDoc.SecureWS.MyWebService1Wse proxy = new SecureDoc.SecureWS.MyWebService1Wse();
    
          X509SecurityToken signtoken = RetrieveTokenFromStoreUsingSubName(subName);
    
          if (signtoken == null)
          {
             throw new ApplicationException("Unable to obtain Sign security token.");
          }
    
          //Add the X.509 token
          proxy.RequestSoapContext.Security.Tokens.Add(signtoken);
    
          //Sign the Body
          proxy.RequestSoapContext.Security.Elements.Add(new MessageSignature(signtoken));
    
          String res = proxy.getAddress(uname);
          Console.WriteLine("response : " + res);
          Console.ReadLine();
    
          System.Windows.Forms.MessageBox.Show(res);
    
          String result = res;
    
          Microsoft.Office.Interop.Word.Range objRange = (Microsoft.Office.Interop.Word.Range)Target;
          objRange.InsertAfter(result);
       }
    }
    public static X509SecurityToken RetrieveTokenFromStoreUsingSubName(string subName)
    {
       // Open the CurrentUser Certificate Store and try MyStore only
       X509CertificateStore store = X509CertificateStore.CurrentUserStore(X509CertificateStore.MyStore);
       X509SecurityToken token = null;
       try
       {
          if (store.OpenRead())
          {
             String modSubName = "CN="+subName;
             Console.WriteLine("Find certificate with Subject Name : " + modSubName);
             //Find certificate by Subject Name
             X509CertificateCollection certs = store.FindCertificateBySubjectName(modSubName);
             if (certs.Count > 0)
             {
                // Get the first certificate in the collection
                token = new X509SecurityToken(((X509Certificate)certs[0]));
             }
          }
       }
       finally
       {
          if (store != null)
          {
             store.Close();
          }
       }
       return token;
    }
    
    
  3. プロジェクトを再構築して更新されたDLLを生成し、このDLLをデモ・サポート・フォルダ(C:\microsoft-interoperability-guide-demo-support\securingsmartdocs\SecureSmartDocX509など)にコピーします。

6.3.5.2.3 サーバー側のWebサービスのセキュリティ保護

サーバー側のWebサービスをセキュリティ保護するには、次の手順を実行します。

  1. Oracle JDeveloperを使用して生成したWebサービスを開きます。

  2. MyWebService1を右クリックして、「セキュアなWebサービス」を選択します。ウィザードが表示されます。

  3. 認証オプションの「X509デジタル証明書」を選択します。

  4. キーストア・オプションを編集し、前述の手順で作成したmyks.jksを使用するように構成します。

    キーストア・パスワードは、passwordです。

6.3.5.3 OWSM GatewayによるWebサービスのセキュリティ保護

Webサービスは、OWSM Gatewayを使用してセキュリティ保護することもできます。http://www.oracle.com/technology/products/webservices_manager/index.htmlにあるOracle Technology Network(OTN)のWeb Services Managerページを参照してください。

6.3.5.4 Oracle Identity Managementとの統合

この例は、ユーザーおよびロール情報を格納するための軽いXMLリポジトリであるsystem-jazn-data.xmlとの統合を示します。Oracle Identity Management(OID/SSO、COREid)を使用しており、WebサービスをOracle Identity Managementと統合する場合は、『Oracle Application Server Web Servicesセキュリティ・ガイド』の「Webサービス・セキュリティの管理」の章を参照してください。

6.3.6 スマート・ドキュメント構成のテスト

この項では、スマート・ドキュメントのセキュリティ構成をテストする手順について説明します。

ユーザー名トークンを使用するスマート・ドキュメントをテストするには、次の手順を実行します。

  1. デモ・サポート・フォルダ(C:\microsoft-interoperability-guide-demo-support\securingsmartdocs\SecureSmartDocumentUtoken\SecureSmartDocument.docなど)からスマート・ドキュメントを開きます。

  2. 「Name」をクリックして、ユーザー自身の名前を入力します。

    ユーザー名トークン・ダイアログ・ボックスが表示されます。

  3. パスワードを入力して、「OK」をクリックします。

    ドキュメントに印刷されている住所が表示されます。

X.509を使用するスマート・ドキュメントをテストするには、次の手順を実行します。

  1. デモ・サポート・フォルダ(C:\microsoft-interoperability-guide-demo-support\securingsmartdocs\SecureSmartDocumentX509\SecureSmartDocument.docファイルなど)からスマート・ドキュメントを開きます。

  2. 「Name」をクリックして、ユーザー自身の名前を入力します。

    ドキュメントに印刷されている住所が表示されます。

6.4 関連ドキュメント

『Oracle Application Server Web Servicesセキュリティ・ガイド』