SAML または UserNameToken プロファイルを使用した Web サービスのセキュリティー保護
最終更新日: 2006 年 11 月 14 日
寄稿者 Sherry Barkodar、保守管理者 Annette Wegscheider
NetBeans Enterprise Pack 5.5 には、セキュリティー保護されたアイデンティティー対応 Web サービスのクライアントとプロバイダの開発を開始するのに必要なすべての実行環境が付属しています。これらの実行環境には、次のものがあります。
- Sun Java System Application Server Platform Edition 9 Update 1
- Sun Java System Access Manager 7.1 および Policy Agent 2.2 for Web Services
このチュートリアルでは、Application Server の Web サービスクライアントおよびサーバー側コンテナ内の WS-Security 標準の統合サポートを、付属の Access Manager とともに使用して、Web サービスクライアントと Web サービスプロバイダ間の SAML ベースおよび UserNameToken ベースの認証を有効にする方法について説明します。
前提条件
このチュートリアルでは、Java 言語、Java プラットフォーム、および NetBeans IDE の基本的な知識またはプログラミング経験があることを前提としています。
システム要件
これらのチュートリアルでは、『NetBeans Enterprise Pack 5.5 リリースノート』の「システム要件」の項に指定された要件を、システムが満たしていることが前提になります。
チュートリアルに必要なソフトウェア
開始する前に、次のソフトウェアをコンピュータにインストールしてください。
- NetBeans IDE 5.5 と NetBeans Enterprise Pack 5.5 (ダウンロード)
- このチュートリアルの配備の手順を実行するには、Sun Java System Application Server Platform Edition 9 Update 1 が必要です。この Application Server は、NetBeans Enterprise Pack 5.5 のダウンロードに付属しています。
目次
ページの先頭へ
チュートリアル環境の構成
- IDE を起動します。
- Sun Java System Application Server が IDE 内で構成されていることを確認するには、「実行時」タブをクリックして、「サーバー」ノードを展開します。
- 「サーバー」ノードに「Sun Java System Application Server 9」が含まれていない場合、「アプリケーションサーバーの追加」にある手順に従います。
- 「実行時」ウィンドウで、「サーバー」ノードを展開し、「Sun Java System Application Server 9」ノードを右クリックして、ポップアップメニューから「開始」を選択します。
「出力」ウィンドウに次のメッセージが表示されるまで待ちます。
アプリケーションサーバーの起動は完了しました。
Sun Java System Application Server が実行されている場合、「Sun Java System Application Server 9」ノードに緑色の矢印のバッジが表示されます。
注: 「開始」オプションを使用できない場合、Sun Java System Application Server はすでに実行されています。
ページの先頭へ
チュートリアルプロジェクトの作成
チュートリアルプロジェクトには、StockServer と StockClient の 2 つがあります。
StockServer プロジェクトを作成するには、次の手順に従います。
- IDE のメインメニューから、「ファイル」>「新規プロジェクト」を選択します。
- 「カテゴリ」リストで、「サンプル」ノードを展開し、「アイデンティティー Blueprints」ノードを選択します。
- 「プロジェクト」リストで「株式サービス」を選択します。
- 「次へ」をクリックします。
- デフォルトのプロジェクト名 (StockServer) をそのまま使用し、プロジェクトの場所を任意で変更します。
- 「完了」をクリックします。
StockClient プロジェクトを作成するには、次の手順に従います。
- IDE のメインメニューから、「ファイル」>「新規プロジェクト」を選択します。
- 「カテゴリ」リストで、「サンプル」ノードを展開し、「アイデンティティー Blueprints」ノードを選択します。
- 「プロジェクト」リストで、「株式クライアント」を選択します。
- 「次へ」をクリックします。
- プロジェクト名 (StockClient) とプロジェクトの場所のデフォルト値をそのまま使用します。
- 「完了」をクリックします。
これで、「プロジェクト」ウィンドウに「StockClient」プロジェクトノードが含まれます。
ページの先頭へ
Web サービスのセキュリティー保護: SAML-HolderOfKey セキュリティー機構の使用
このシナリオでは、署名つきの応答を持たない SAML-HolderOfKey セキュリティープロファイルと、デフォルトのキーストアを使用します。これを行うには、最初に Access Manager のトークンプロファイルを編集してから、Web サービスプロバイダおよびクライアントを構成します。
SAML-HolderOfKey プロファイルを編集するには、次の手順に従います。
- 「実行時」ウィンドウで「Sun Java System Access Managers」ノードを展開し、「デフォルトインスタンス」ノード、「プロファイル」ノードの順に展開します。
- 「SAML-HolderOfKey」ノードを選択して右クリックし、「編集」を選択します。
「SAML-HolderOfKey プロファイルを編集」ダイアログが開きます。
- 「応答の署名」チェックボックスを選択解除します。
- 「既存の証明書設定」の下で、「デフォルトのキーストアを使用」チェックボックスを選択したままにしておきます。
- 「了解」をクリックします。

Web サービスプロバイダを構成するには、次の手順に従います。
- 「プロジェクト」ウィンドウで、「StockServer」ノードおよび「Web サービス」ノードを展開します。
- 「Web サービス」ノードの下で、「stockservice」ノードを右クリックし、ポップアップメニューから「Web サービス属性を編集」を選択します。
「Web サービスプロバイダのセキュリティー設定」ダイアログが開きます。
- 「メッセージレベルのセキュリティーを有効化」チェックボックスを選択します。
- 「セキュリティー機構」の下の「要求」ドロップダウンリストから、「SAML-HolderOfKey」を選択します。

- 「了解」をクリックします。
Web サービスクライアントを構成するには、次の手順に従います。
- 「プロジェクト」ウィンドウで、「StockClient」ノードおよび「Web サービス参照 」ノードを展開します。
- 「Web サービス参照 」ノードの下で「StockService」ノードを右クリックして、ポップアップメニューから「Web サービス属性を編集」を選択します。
「Web サービスクライアントのセキュリティー設定」ダイアログが開きます。
- 「メッセージレベルのセキュリティーを有効化」チェックボックスを選択します。
- 「セキュリティー機構」の下の「要求」ドロップダウンリストから、「SAML-HolderOfKey」を選択します。
- 「既存の証明書設定」の下で、「デフォルトのキーストアを使用」チェックボックスを選択したままにしておきます。

- 「了解」をクリックします。
これで、「プロジェクトの配備と実行」の指示に従って、サンプルの配備と実行に進むことができます。
ページの先頭へ
Web サービスのセキュリティー保護: UserNameToken セキュリティー機構の使用
このシナリオでは、署名付きの応答を持つ UserNameToken セキュリティープロファイルと、デフォルトのキーストアを使用します。これを行うには、最初に Access Manager のトークンプロファイルを編集してから、Web サービスプロバイダおよびクライアントを構成します。
UserNameToken プロファイルを編集するには、次の手順に従います。
- 「実行時」ウィンドウで「Sun Java System Access Managers」ノードを展開し、「デフォルトインスタンス」ノード、「プロファイル」ノードの順に展開します。
- 「UserNameToken」ノードを選択し、右クリックして、「編集」を選択します。
「UserNameToken プロファイルを編集」ダイアログが開きます。
- 「既存の証明書設定」の下で、「デフォルトのキーストアを使用」チェックボックスを選択したままにしておきます。
- 「ユーザー名トークンプロファイル情報」の下で、「追加」ボタンをクリックして Web サービスクライアントの UserNameToken レコードを追加します。
「ユーザーを追加」ダイアログが開きます。
- 「ユーザー名」フィールドに「sherry」と入力し、「パスワード」フィールドに「mypw」と入力して、「了解」をクリックします。

- 「了解」をクリックして、「UserNameToken プロファイルを編集」ダイアログを閉じます。
Web サービスプロバイダを構成するには、次の手順に従います。
- 「プロジェクト」ウィンドウで、「StockServer」ノードおよび「Web サービス」ノードを展開します。
- 「Web サービス」ノードの下で、「stockservice」ノードを右クリックし、ポップアップメニューから「Web サービス属性を編集」を選択します。
「Web サービスプロバイダのセキュリティー設定」ダイアログが開きます。
- 「メッセージレベルのセキュリティーを有効化」チェックボックスを選択します。
- 「セキュリティー機構」の下の「要求」ドロップダウンリストから、「UserNameToken」を選択します。

- 「了解」をクリックします。
Web サービスクライアントを構成するには、次の手順に従います。
- 「プロジェクト」ウィンドウで、「StockClient」ノードおよび「Web サービス参照 」ノードを展開します。
- 「Web サービス参照 」ノードの下で「Stockservice」ノードを右クリックして、ポップアップメニューから「Web サービス属性を編集」を選択します。
「Web サービスクライアントのセキュリティー設定」ダイアログが開きます。
- 「メッセージレベルのセキュリティーを有効化」チェックボックスを選択します。
- 「セキュリティー機構」の下の「要求」ドロップダウンリストから、「UserNameToken」を選択します。
- 「ユーザー名」フィールドに「sherry」と入力し、「パスワード」フィールドに「mypw」と入力します。
- 「応答を検査」チェックボックスを選択します。
- 「既存の証明書設定」の下で、「デフォルトのキーストアを使用」チェックボックスを選択したままにしておきます。

- 「了解」をクリックします。
これで、「プロジェクトの配備と実行」の指示に従って、サンプルの配備と実行に進むことができます。
ページの先頭へ
プロジェクトの配備と実行
- 「プロジェクト」ウィンドウで「StockServer」プロジェクトノードを右クリックし、「プロジェクトを配備」を選択します。
IDE では次のことが行われます。
- アプリケーションサーバーが起動していない場合、自動的に起動されます。
- StockServer プロジェクトを構築します。構築結果が「出力」ウィンドウに表示されます。
- Application Server に server.war を配備します。
- 「プロジェクト」ウィンドウで「StockClient」プロジェクトノードを右クリックし、「プロジェクトを実行」を選択します。
IDE では次のことが行われます。
- StockClient プロジェクトを構築します。構築結果が「出力」ウィンドウに表示されます。
- Application Server に client.war を配備します。
- アプリケーションがブラウザに開きます。
- ブラウザが次の URL で開かれていることを確認します。
http://localhost:8080/stockclient/

- 「Submit」をクリックします。

ページの先頭へ
ログファイルの操作
この節の指示は省略可能です。これらは、ログファイルで変更を確認したいユーザー向けです。
- 次の手順に進む前に、最高のログレベルを有効にします。
「Application Server でのセキュリティーレベルの変更」の指示に従ってください。
- 「プロジェクト」ウィンドウで「StockClient」プロジェクトノードを右クリックし、ポップアップメニューから「プロジェクトを実行」を選択します。
- 次のディレクトリ内の Application Server ログファイル (server.log) を開きます。<アプリケーションサーバーのインストールディレクトリ>\domains\domain1\logs.
インストール時にデフォルトをそのまま使用した場合は、C:\Sun\AppServer\domains\domain1\logs ディレクトリになります。
- ログファイルの変更を確認してください。
ログファイルは、構成パネルで定義されたメソッドをモジュールが使用していることを示すために編集されます。
変更されたログファイルの部分的なサンプルは、次のリンク先で入手できます。
ページの先頭へ
その他の構成作業
この節では、実行する可能性のある、その他の構成作業について説明します。
Application Server の追加
- 「実行時」ウィンドウで「サーバー」ノードを右クリックし、ポップアップメニューから「サーバーを追加」を選択します。
「サーバーインスタンスを追加」ダイアログが開きます。
- 「サーバーを選択」ページで、「サーバー」ドロップダウンリストから「Sun Java System Application Server」を選択します。
- (省略可能)「名前」フィールドで、デフォルト値をそのまま使用するか、IDE 内でのサーバーの識別に使用する名前を入力します。
- 「次へ」をクリックします。
「プラットフォームフォルダの場所」ページが開きます。
- 「プラットフォームの場所」フィールドで「参照」ボタンを使用して移動し、Application Server のインストール場所を選択します。
インストール時にデフォルト値のままにした場合、インストール場所は C:\Sun\Appserver です。
- 「ローカルデフォルトドメインの登録」ラジオボタンを選択します。
- 「次へ」をクリックします。
- ドメインの管理者のユーザー名とパスワードを入力します。
インストール時にデフォルト値のままにした場合、ユーザー名は admin で、パスワードは adminadmin です。
- 「完了」をクリックします。
ページの先頭へ
Access Manager インストールの構成の確認
- アプリケーションサーバーを起動します。
- 「実行時」ウィンドウで、「Sun Java System Access Manager」ノードを展開します。
- 「デフォルトのインスタンス」ノードを右クリックして、「管理コンソールを表示」を選択します。
新しいブラウザセッションが起動され、次の URL が指定されます。http://localhost:8080/amserver。
「Sun Java System Access Manager ログイン」ページが開き、Access Manager サーバーが実行中であることが表示されます。
ページの先頭へ
ポート 8080 にインストールされていない Application Server の構成情報
Sun Java System Application Server のインストールを 8080 以外のポートで実行した場合、次に示す追加の構成手順を実行してください。
- 「プロジェクト」ウィンドウで「StockClient」>「Web ページ」>「WEB-INF」および「wsdl」を展開し、エディタで stock.wsdl ファイルを開きます。
- 「ソース」ボタンをクリックし、ファイルのソースビューに切り替えます。
- ファイルの下方までスクロールして、次の行を探します。
<soap:address location="http://localhost:8080/CalendarService/CalendarService"/>
- 8080 の値を、Application Server がインストールされているポート番号に置き換えます。
- 変更を保存して、ファイルを閉じます。
ページの先頭へ
Application Server でのセキュリティーレベルの変更
- 「実行時」ウィンドウで、「Sun Java System Application Server 9」ノードを右クリックし、「管理コンソールを表示」を選択します。
- ユーザー名に admin と入力し、パスワードに adminadmin と入力します。
- 左側のナビゲーションフレームで「Application Server」のリンクをクリックします。
- 右側のフレームで「ログ」タブをクリックし、「ログレベル」タブをクリックします。

- ページの下方までスクロールして、「セキュリティー」を「最高」に設定します。

- 「保存」ボタンをクリックして、ログアウトします。
ページの先頭へ
トラブルシューティング
この節では、発生する可能性のある問題の回避策について説明します。
クライアント呼び出し時の例外のスロー
クライアントが呼び出された場合に、ブラウザで次の例外がスローされます。
Caught an exception java.rmi.ServerException:JAXRPCSERVLET28:Missing port information
この例外で考えられる原因:
- クライアント用として選択されたセキュリティー機構が、サーバーのサポート対象機構のリストにありません。この場合、クライアント用とサーバー用に同じセキュリティー機構を選択してください。
参考文献
ページの先頭へ
まとめ
このチュートリアルでは、NetBeans Enterprise Pack 5.5 を使用して、SAML ベースと UserNameToken ベースの認証をアプリケーションに追加しました。このチュートリアルでは、SAML の詳細な知識がなくても、Web サービスクライアントとプロバイダーのセキュリティ設定ウィザードを使用するだけでよいという、NetBeans が提供する、特有の使いやすさを示しました。
ページの先頭へ