この章では、安全な方法でエンタープライズWebサービスを起動するようにスマート・ドキュメントを設定する方法について説明します。Webサービス・プロキシを経由したスマート・ドキュメントとWebサービスの通信は、セキュリティ保護されている必要があります。これには、Webサービス、Webサービス・プロキシ、およびスマート・ドキュメントの構成が必要です。さらに、スマート・ドキュメントによって使用されるDLLファイルを参照するマニフェスト・ファイルをデジタル署名することが重要です。
この章の内容は次のとおりです。
スマート・ドキュメントは、Microsoft Officeドキュメントを使用して作業する際のユーザー・エクスペリエンスを大幅に拡張します。スマート・ドキュメントを使用すると、ドキュメントにデータを自動入力したり、外部データに自動アクセスしてデータをドキュメント内に適切に配置したりすることができます。スマート・ドキュメントは、システムやアプリケーション間での情報の共有を可能にして、複雑なドキュメントを準備する際にコンテキスト・ヘルプを提供します。
スマート・ドキュメントはWebサービスと通信できます。Webサービスが非機密データを提供する場合はスマート・ドキュメントとWebサービスの間の通信をセキュリティ保護する必要はありませんが、Webサービスが部外秘の機密データを提供する場合はセキュリティ保護が必要です。この章では、スマート・ドキュメントとWebサービスの間の通信をセキュリティ保護するために必要な手順を説明します。
スマート・ドキュメントとこのドキュメントの特定のビジネス・ケースでの使用方法の詳細は、第4章「セルフサービス・ビジネス・プロセスと相互作用するスマート・ドキュメントの作成」および第5章「Microsoft Officeによるフォームの作成およびデータ入力」を参照してください。
この章で説明するタスクを実行するには、次のアプリケーションおよびファイルをインストールする必要があります。
Oracle JDeveloper 10gリリース3(10.1.3.1.0)。
Microsoft Visual Studio .Net 2003。
Microsoft Office 2003 Professional。
Microsoftの次のSDKおよびユーティリティ。
Microsoft .NET Framework SDK(バージョン1.1以上)
Microsoft Web Services Enhancements 2.0
Microsoft Officeスマート・ドキュメントSDK
Office 2003 Update: Redistributable Primary Interop Assemblies
MicrosoftのPKIユーティリティ(makecert.exe
、pvkimprt.exe
、cert2spc.exe
、sn.exe
、およびsigncode.exe
)
xmlsign.exe
(Microsoft Officeスマート・ドキュメントSDKに含まれています)
これらのファイルの入手方法の詳細は、1.3.3項「Microsoftのソフトウェア開発キット、ユーティリティおよびリファレンス」を参照してください。
第5章「Microsoft Officeによるフォームの作成およびデータ入力」で作成したWebサービス。
securingsmartdocs
デモ・フォルダ内のサポート・ファイル。デモ・サポート・ファイルの詳細は、「はじめに」の「デモ・サポート・ファイルへのアクセス」を参照してください。この章で使用するデモ・ファイルとその説明を表6-1に示します。
表6-1 サンプル・スマート・ドキュメント・ファイル
ファイル | 説明 |
---|---|
|
|
|
スマート・ドキュメントのDLLの位置を含むXMLマニフェスト・ファイル |
|
安全なMicrosoft Wordスマート・ドキュメント。 注意: このファイルは、5.3.1.2項「Microsoft Wordでのテンプレート・ドキュメントの定義」に示されている手順で作成することもできます。 |
|
スマート・ドキュメントのXMLスキーマ定義ファイル。 |
|
スマート・ドキュメントのDLLの位置を含むXMLマニフェスト・ファイル |
|
安全なMicrosoft Wordスマート・ドキュメント。 注意: このファイルは、5.3.1.2項「Microsoft Wordでのテンプレート・ドキュメントの定義」に示されている手順で作成することもできます。 |
Oracle JDeveloperを使用して、既存のJava実装を、機密情報または制限付き情報へのアクセスを提供するWebサービスとして公開することができます。スマート・ドキュメントがこのWebサービスと安全に通信できるように、このWebサービスをセキュリティ保護することができます。
たとえば、Star Loan Companyという会社が、ローン申込みを受けるためにWebサイトでWebサービスを公開しているとします。スマート・ドキュメント・フォームによって起動されるローン申込みでは、いくつかの機密情報(社会保障番号、年収など)を含む申込書の情報が必要です。申込書が申込みフォームに必要事項を入力してStar Loan Companyに送信する際、この情報転送はセキュリティ保護されている必要があります。スマート・ドキュメントとWebサービスの間のセキュリティ実装により、このような状況に適切に対処することができます。
この章では、5.3.1項「エンタープライズ情報を取得および更新するスマート・ドキュメントの開発」で開発したサンプルWebサービスと、安全なWebサービス・プロキシを使用するスマート・ドキュメント・ソリューションをセキュリティ保護します。
この安全なソリューションを開発するには、次の手順を実行します。
デモ・サポートZIPファイルをコンピュータのC:\
に解凍します。詳細は、表6-1「サンプル・スマート・ドキュメント・ファイル」を参照してください。
5.3.1.1項「Oracle JDeveloperでのWebサービスの開発」で示されている手順を実行して、Webサービスを作成します。
次の手順を実行して、Microsoft Visual Studio .Net 2003を使用してスマート・ドキュメントDLLを作成します。
Microsoft Visual Studio .Net 2003を開きます。
新しいVisual C#クラス・ライブラリ・プロジェクトを作成します。「File」→「New」→「Project」をクリックします。
「New Project」ダイアログ・ボックスで、「Visual C# Projects」→「Class Library」を選択します。SecureDocというプロジェクト名を使用します。
プロジェクト(SecureDoc)を右クリックして、「Add Reference」を選択します。
「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
Microsoft.Office.Interop.SmartTag.dll
およびMicrosoft.Office.Interop.Word.dll
ファイルへの参照を追加します。これらのDLLは、グローバル・アセンブリ・キャッシュ(GAC)にあるため、「Add Reference」ダイアログ・ボックスで参照することはできません。これらのDLLは、次の手順を実行することによって追加することができます。
Microsoft Visual Studio .Net 2003でSecureDocを閉じます。
テキスト・エディタを使用して、前述の手順でプロジェクトを保存した場所でSecureDocプロジェクト・ファイル(SecureDoc.csproj
)を開きます。
たとえば、次の行を、ファイルの<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" />
ファイルを保存して閉じます。
Microsoft Visual Studio .Net 2003でSecureDocを開きます。
次の手順を実行して、このVisual StudioプロジェクトのWeb Services Enhancementsを有効にします。
「Solution Explorer」ペインで、「SecureDoc」を右クリックして、「WSE Settings 2.0」を選択します。
表示されるダイアログ・ボックスで、「General」タブをクリックして、「Enable this project for Web Service Enhancements」を選択します。
「OK」をクリックします。
これにより、Microsoft.Web.Services2.dll
が参照リストに追加されます。
5.3.1.1項「Oracle JDeveloperでのWebサービスの開発」でOracle JDeveloperを使用して作成したEmpService
WebサービスにWeb参照を追加することによって、安全なWebサービス・プロキシを生成します。これには、次の手順を実行します。
「Solution Explorer」ペインで、「References」を右クリックして、「Add Web Reference」を選択します。
「Add Web Reference」ダイアログ・ボックスで、EmpService WebサービスのWSDLを入力します。これは、Oracle JDeveloperでのWebサービス作成の最後に示されているWSDLファイルのURLです。このURLに?WSDL
を追加する必要があります。
Web参照名をSecureWSに変更し、「Add Web Reference」をクリックします。
「Solution Explorer」ペインの「SecureWS」リンクをダブルクリックして、SecureDoc.SecureWS
を開きます。MyWebService1Wse
というファイルが表示されます。
ISmartDocumentインタフェースを実装するクラスを作成します。プロジェクト(SecureDoc)を右クリックして、「Add」→「Add Class」をクリックします。クラスをSecureSmartDocument.cs
と命名します。A.6項「SecureSmartDocument.csファイルの内容」のコンテンツをこのファイルにコピーして、ファイルを保存します。
プロジェクトを構築します。DLLファイルがproject_path/bin/debug
ディレクトリに作成されます。
DLLファイルをコンピュータのSecureSmartDocUtoken
およびSecureSmartDocX509
デモ・サポート・フォルダ(C:\microsoft-interoperability-guide-demo-support\securingsmartdocs\SecureSmartDocUtoken\
など)にコピーします。
6.3.1項「デモ・ファイルのコピー」でコピーしたスマート・ドキュメントにXMLスキーマおよびXML拡張パックをアタッチするには、次の手順を実行します。
コンピュータのデモ・サポート・フォルダ(C:\microsoft-interoperability-guide-demo-support\securingsmartdocs\SecureSmartDocUtoken\SecureSmartDocument.doc
)にあるサンプル・ドキュメント(SecureSmartDocument.doc
)を開きます。
Microsoft Wordのメニュー・バーから、「Tools」をクリックして、「Templates and Add-Ins」をクリックします。
「Templates and Add-ins」ダイアログ・ボックスで、「XML Schema」タブを選択します。
「Schema Library」をクリックします。
すでにアタッチされているスキーマがあれば、選択して、「Delete Schema」をクリックします。
「Add Schema」をクリックして、デモ・サポート・フォルダ(C:\microsoft-interoperability-guide-demo-support\securingsmartdocs\SecureSmartDocUtoken\
など)からSecureDocument.xsd
を選択します。スキーマをSecureDocと命名し、「OK」をクリックします。
注意: 新しいXSDファイルを作成して、A.5項「SecureDocument.xsdファイルの内容」のコードをそのファイルにコピーし、SecureDocument.xsd として保存することもできます。その後、このスキームを追加できます。 |
「OK」をクリックします。
「XML Structure」ペインで「Show XML tags in the document」を選択します。
バナー・イメージのすぐ下にカーソルを移動し、「XML Structure」ペインのreport要素を選択します。メッセージが表示されたら、「Apply to Entire Document」をクリックします。
「Enter Name」というテキストを選択し、「XML Structure」ペインのname要素をクリックします。ドキュメントは図6-1のようになりました。
ドキュメントを保存します。
前述の手順で作成したスマート・ドキュメントにXML拡張パックをアタッチするには、次の手順を実行します。
XML拡張パックをアタッチするには、次の手順を実行します。
ManagedManifest.xml
というXMLファイルを作成し、例A-3「第6章のManagedManifest.xml」のコードをこのファイルに追加します。または、securingsmartdocs\SecureSmartDocUtoken
デモ・フォルダで提供されているManagedManifest.xml
ファイルを使用することもできます。
XML拡張パックをドキュメントにアタッチします。これには、次の手順を実行します。
Microsoft Wordのメニュー・バーから、「Tools」をクリックして、「Templates and Add-Ins」をクリックします。
「Templates and Add-ins」ダイアログ・ボックスで、「XML Expansion Packs」タブを選択します。
「Add」をクリックして、デモ・サポート・フォルダ(C:\microsoft-interoperability-guide-demo-support\securingsmartdocs\SecureSmartDocUtoken\ManagedManifest.xml
など)からManagedManifest.xml
を選択します。
スマート・ドキュメント・マニフェスト・ファイルのマニフェスト・セキュリティ・チェックを有効にするには、次の手順を実行します。
Microsoft Officeスマート・ドキュメントSDKに付属のXML Expansion Pack Signing Utilityを使用して、信頼済証明書でXML拡張パックにデジタル署名します。
次のように、makecert
ユーティリティを使用して署名用の信頼済証明書を作成します。
makecert -r -n "CN=mansign" -sv mansign.pvk mansign.cer
makecert.exe
は、Microsoft Visual Studio .Net 2003のインストールに含まれています。既存の信頼済証明書を持っている場合は、手順2〜6を省略できます。
証明書ファイル(mansign.cer
)および秘密鍵ファイル(mansign.pvk
)をデモ・サポート・ファイル・ディレクトリ(C:\microsoft-interoperability-guide-demo-support\securingsmartdocs\certs
など)にコピーします。
次の手順を実行して、証明書を個人ストアにインストールします。
.cer
ファイルを右クリックして、「証明書のインストール」を選択します。「証明書のインポート ウィザード」が表示されます。
「次へ」をクリックします。
「証明書ストア」ウィザード・ダイアログ・ボックスで、「証明書をすべて次のストアに配置する」を選択し、個人ストアを参照して、「OK」をクリックします。
「次へ」をクリックし、「完了」をクリックします。
証明書が正常に格納されたことを確認します。「手順3: 証明書が正常に格納されたかどうかのチェック」を参照してください。最後の手順で、mansignというエイリアスを持つ証明書が存在することを確認します。
この証明書を信頼済にするには、次の手順を実行します。
Windowsで、「スタート」→「ファイル名を指定して実行」をクリックします。
mmc
と入力して、「OK」をクリックします。これにより、Microsoft管理コンソール(MMC)ツールが起動します。
「コンソール ルート」→「証明書」→「信頼されたルート証明機関」をクリックします。
「証明書」を右クリックして、「すべてのタスク」→「インポート」をクリックします。
「証明書のインポート ウィザード」で、mansign.cerを選択します。
「次へ」をクリックし、「完了」をクリックします。
XMLSign.exe
を使用してマニフェストに署名するには、次の手順を実行します。
C:\Program Files\Microsoft Office 2003 Developer Resources\Microsoft Office 2003 Smart Document SDK\Tools
ディレクトリにナビゲートします。
次のコマンドを実行します。
xmlsign.exe -c mansign.cer -v mansign.pvk ManagedManifest.xml
ここで、ManagedManifest.xml
はスマート・ドキュメントのXML拡張パックです。XMLSign.exe
は、Microsoft Office 2003スマート・ドキュメントSDKに含まれています。
sn
ユーティリティを使用して、管理対象スマート・ドキュメント・アセンブリを厳密名でコンパイルします。厳密名は、単純テキスト・アセンブリ名、バージョン番号、カルチャ情報、公開鍵、およびデジタル署名で構成されます。次のように、sn
を実行します。
sn -k PSS_SmartDoc.snk
SecureDocビジュアル・プロジェクトのAssemblyInfo.cs
ファイルで、次のように、厳密名キーをポイントするようにAssemblyKeyFile
属性を設定します。
[assembly: AssemblyDelaySign(false)] [assembly: AssemblyKeyFile("C:\demos\certs\PSS_SmartDoc.snk")] [assembly: AssemblyKeyName("")]
PSS_SmartDoc.snk
ファイルの絶対パスを提供します。
スマート・ドキュメント・プロジェクトを再構築します。
signcode
ユーティリティを使用して、厳密名を持つアセンブリをデジタル署名します。これには、次の手順を実行します。
次のように、cert2spc.exe
を使用して署名用のSPCファイルを作成します。
Cert2spc mansign.cer mansign.spc
次のように、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のインストールに含まれています。
この項では、スマート・ドキュメントとWebサービスの間の通信をセキュリティ保護する方法について説明します。この章では、スマート・ドキュメントとWebサービスの間の通信をセキュリティ保護する方法として、ユーザー名トークンとX.509トークンの2つを説明します。この項の内容は次のとおりです。
ユーザー名トークンを使用すると、ユーザー資格証明をWebサービスに伝達することができます。この方法を選択する場合、ユーザーは、ユーザー名(オプション)およびパスワードを入力することによって認証を実行しないと、スマート・ドキュメントでWebサービスを使用できません。次の2つの項では、ユーザー名トークン認証を構成する手順を説明します。
機密情報へのアクセスを提供する場合は、ユーザーが安全なWebサービスにアクセスする際に必ず認証されるようにする必要があります。有効な資格証明を入力するために、認証ダイアログ・ボックスがユーザーに表示される必要があります。クライアント側をセキュリティ保護するには、次の手順を実行します。
Microsoft Visual Studio .Net 2003を開きます。
ユーザー名トークン・ダイアログ・クラスを作成して、6.3.3項「スマート・ドキュメントDLLの作成」で作成したビジュアル・プロジェクトに追加します。「Solution Explorer」ペインでSecureDocプロジェクトを選択し、「Add」→「Add Class」をクリックして、UsernameTokenDialog.cs
と命名します。
A.7項「UsernameTokenDialog.csファイルの内容」のコンテンツをこのファイルにコピーします。
スマート・ドキュメントを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); } } }
プロジェクトを再構築して更新されたDLLを生成し、このDLLをC:\microsoft-interoperability-guide-demo-support\securingsmartdocs\SecureSmartDocUtoken
にコピーします。
サーバー側のWebサービスをセキュリティ保護するには、次の手順を実行します。
Oracle JDeveloperを使用して生成したWebサービスを開きます。
MyWebService1を右クリックして、「セキュアなWebサービス」を選択します。ウィザードが表示されます。
認証オプションの「テキスト・パスワード」を選択します。
「セキュリティ」の下の「認証」タブを選択し、「認証するにはユーザー名トークンが必要です」を選択します。
アプリケーション・ナビゲータで、MyWebService1ノードを右クリックして、「実行」を選択します。Oracle JDeveloperは、サービスを埋込みOC4Jコンテナに自動的にデプロイします。
コンソール・ウィンドウのURLをコピーして、新しいInternet Explorerウィンドウの「アドレス」フィールドに貼り付け、[Enter]を押します。
動作しているWebサービスを示すページが表示されます。
次の手順を実行して、system-jazn-data.xml
ファイルにユーザー・エントリを追加します。
「実行」→「終了」→「埋込みOC4Jサーバー」をクリックして、組込みOC4Jサーバーを停止します。
JDEV_HOME
/Jdev/mywork/MSOffice
ディレクトリにナビゲートし、編集するためにMSOffice-jazn-data.xml
ファイルを開きます。
<users>
タグの下に次のユーザー・エントリを入力します。
<user> <name>jcooper</name> <display-name>Smart document user </display-name> <description>Smart document user</description> <credentials>!password</credentials> </user>
注意: ユーザー名およびパスワードは、クライアントが送信するユーザー名およびパスワードと同じである必要があります。 |
OC4Jサーバーを再起動します。
MyWebService1を選択して、「実行」をクリックします。
X.509トークンを使用すると、ユーザー資格証明をWebサービスに伝達することができます。この方法を選択する場合は、公開鍵インフラストラクチャ(PKI)の信頼を設定しないと、X.509トークンを交換できません。次の項では、X.509トークン認証を構成する手順を説明します。
公開鍵インフラストラクチャ(PKI)により、組織は、認証済ユーザーと信頼済リソースの間で交換されるデジタル証明を使用して、通信とビジネス・トランザクションをセキュリティ保護することができます。現行ユーザーに必要な秘密鍵はクライアント・メッセージの署名に使用され、OC4J Webサービスによって使用される公開鍵は署名の確認と識別の確立に必要です。PKIをデプロイしてスマート・ドキュメントをセキュリティ保護する手順の概要は、次のとおりです。
手順1: X.509証明書および対応する秘密鍵ファイルの作成
X.509証明書と対応する秘密鍵(pvk)ファイルを作成するには、次の手順を実行します。
次のように、makecert
ユーティリティを実行します。
makecert -r -n %alias% -sv %pvkfilename% %cerfilename%
ここで、alias
は証明書のエイリアスです。たとえば、Windowsシステムにログインするユーザーの識別がjcooper
の場合は、CN=jcooper
というエイリアスで証明書を作成します。
たとえば、次のようになります。
makecert -r -n "CN=jcooper" -sv jcooper.pvk jcooper.cer
「秘密キーのパスワードの作成」ダイアログ・ボックスで、パスワードをoc4jnetsign
と指定して確認し、「OK」をクリックします。
次のコマンドを実行して、PFXファイルを作成するために必要なSPCファイルを作成します。
Cert2spc.exe jcooper.cer jcooper.spc
これにより、jcooper.spc
ファイルが作成されます。
次のコマンドを実行して、PVKおよびSPCファイルからP12ファイルを作成します。
Pvkimprt.exe -pfx jcooper.spc jcooper.pvk
「秘密キーのパスワードの入力」ダイアログ・ボックスで、パスワードのoc4jnetsign
を入力して、「OK」をクリックします。
「証明書のエクスポート ウィザード」が表示され、これによって、証明書と関連秘密鍵からのPFXファイルの作成を開始することができます。「次へ」をクリックします。
「はい」をクリックして秘密鍵を証明書とともにエクスポートします。
図6-2に示すような「エクスポート ファイルの形式」ウィザード・ダイアログ・ボックスで、「強力な保護を有効にする」オプションが選択されていないことを確認して、「次へ」をクリックします。
「パスワード」ウィザード・ダイアログ・ボックスで、前に指定したパスワード(oc4jnetsign
)を入力し、確認のために同じパスワードを入力して、「次へ」をクリックします。
図6-3に示すような「エクスポートするファイル」ウィザード・ダイアログ・ボックスで、ファイル名をoc4jnetp12.pfx
に指定し、このファイルをC:\microsoft-interoperability-guide-demo-support\securingsmartdocs\SecureSmartDocX509\Certificate
フォルダに格納します。「次へ」をクリックします。
「証明書ストア」ウィザード・ダイアログ・ボックスで、「証明書をすべて次のストアに配置する」を選択します。「参照」をクリックして、「個人」を選択します。
「証明書のエクスポート ウィザードの完了」ダイアログ・ボックスで、「完了」をクリックします。
手順2: 秘密鍵証明書のインストール
秘密鍵証明書をWindowsのキーストアにインストールするには、次の手順を実行します。
oc4jnetp12.pfx
を右クリックして、「PFX のインストール」をクリックします。「証明書のインポート ウィザード」が表示されます。
「次へ」をクリックします。図6-4に示すように、「インポートする証明書ファイル」ウィザード・ダイアログ・ボックスに、すでに選択されているoc4jnetp12.pfx
ファイルが表示されます。
「次へ」をクリックします。
「パスワード」ウィザード・ダイアログ・ボックスで、証明書を作成したときに指定したパスワード(oc4jnetsign
)を入力して、「次へ」をクリックします。
「証明書ストア」ウィザード・ダイアログ・ボックスで、証明書ストアを「Personal」に指定し、「次へ」をクリックします。
「証明書のインポート ウィザードの完了」ダイアログ・ボックスで、「完了」をクリックします。
手順3: 証明書が正常に格納されたかどうかのチェック
証明書が正常に格納されたかどうかをチェックするには、次の手順を実行します。
Windowsで、「スタート」→「ファイル名を指定して実行」をクリックします。
mmc
と入力して、「OK」をクリックします。これにより、Microsoft管理コンソール(MMC)ツールが起動します。
「コンソール」→「スナップインの追加と削除」をクリックします。
「スタンドアロン」タブで、「追加」をクリックします。
図6-5に示すような「スタンドアロン スナップインの追加」ダイアログ・ボックスで、「証明書」をダブルクリックします。
「証明書スナップイン」ダイアログ・ボックスで、「ユーザー アカウント」を選択して、「完了」をクリックします。
「スタンドアロン スナップインの追加」ダイアログ・ボックスで、「閉じる」をクリックします。
「スナップインの追加と削除」ダイアログ・ボックスで、「OK」をクリックします。
「コンソール ルート」→「証明書」→「Personal」→「証明書」をクリックします。この例では、エイリアス名はjcooper
です。
手順4: X.509 Certificate Toolによる証明書の表示
特定の証明書のキー識別子を表示するには、Web Service Enhancements 2.0とともにインストールされるX.509 Certificate Toolを使用する必要があります。証明書を表示するには、次の手順を実行します。
X.509 Certificate Toolを起動します。「スタート」→「プログラム」→「Microsoft WSE 2.0」→「X509 Certificate Tool」をクリックします。
「Store Name」として「Personal」を指定します。
「Open Certificate」をクリックして、「jcooper」を選択します。
手順5: 署名を確認するための公開鍵証明書のインポート
署名を確認するために、oc4jnet12.pfx
からJavaキーストアに公開鍵証明書をインポートするには、次のように、keytool
ユーティリティを使用します。
keytool -import -alias jcooper -file jcooper.cer -keypass jcooper -keystore myks.jks -storepass password
クライアント側をセキュリティ保護するには、次のタスクを実行します。
6.3.3項「スマート・ドキュメントDLLの作成」に示されている手順で、Windowsユーザーのための秘密鍵および公開鍵証明書を生成します。
スマート・ドキュメントと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; }
プロジェクトを再構築して更新されたDLLを生成し、このDLLをデモ・サポート・フォルダ(C:\microsoft-interoperability-guide-demo-support\securingsmartdocs\SecureSmartDocX509
など)にコピーします。
サーバー側のWebサービスをセキュリティ保護するには、次の手順を実行します。
Oracle JDeveloperを使用して生成したWebサービスを開きます。
MyWebService1を右クリックして、「セキュアなWebサービス」を選択します。ウィザードが表示されます。
認証オプションの「X509デジタル証明書」を選択します。
キーストア・オプションを編集し、前述の手順で作成したmyks.jksを使用するように構成します。
キーストア・パスワードは、password
です。
Webサービスは、OWSM Gatewayを使用してセキュリティ保護することもできます。http://www.oracle.com/technology/products/webservices_manager/index.html
にあるOracle Technology Network(OTN)のWeb Services Managerページを参照してください。
この例は、ユーザーおよびロール情報を格納するための軽いXMLリポジトリであるsystem-jazn-data.xml
との統合を示します。Oracle Identity Management(OID/SSO、COREid)を使用しており、WebサービスをOracle Identity Managementと統合する場合は、『Oracle Application Server Web Servicesセキュリティ・ガイド』の「Webサービス・セキュリティの管理」の章を参照してください。
この項では、スマート・ドキュメントのセキュリティ構成をテストする手順について説明します。
ユーザー名トークンを使用するスマート・ドキュメントをテストするには、次の手順を実行します。
デモ・サポート・フォルダ(C:\microsoft-interoperability-guide-demo-support\securingsmartdocs\SecureSmartDocumentUtoken\SecureSmartDocument.doc
など)からスマート・ドキュメントを開きます。
「Name」をクリックして、ユーザー自身の名前を入力します。
ユーザー名トークン・ダイアログ・ボックスが表示されます。
パスワードを入力して、「OK」をクリックします。
ドキュメントに印刷されている住所が表示されます。
X.509を使用するスマート・ドキュメントをテストするには、次の手順を実行します。
デモ・サポート・フォルダ(C:\microsoft-interoperability-guide-demo-support\securingsmartdocs\SecureSmartDocumentX509\SecureSmartDocument.doc
ファイルなど)からスマート・ドキュメントを開きます。
「Name」をクリックして、ユーザー自身の名前を入力します。
ドキュメントに印刷されている住所が表示されます。
『Oracle Application Server Web Servicesセキュリティ・ガイド』