SAML または UserNameToken プロファイルを使用した Web サービスのセキュリティー保護
執筆および管理:
Bob May
2007 年 11 月 [リビジョン番号: V1-3]
このチュートリアルでは、NetBeans IDE 6.0 の完全リリースを使用します。
このチュートリアルでは、Application Server の Web サービスクライアントおよびサーバー側コンテナ内の WS-Security 標準の統合サポートを、付属の Access Manager とともに使用して、Web サービスクライアントと Web サービスプロバイダ間の SAML ベースおよび UserNameToken ベースの認証を有効にする方法について説明します。
予測される所要時間: 40 分
目次
チュートリアルの要件
NetBeans IDE 6.0 には、セキュリティー保護されたアイデンティティー対応 Web サービスのクライアントとプロバイダの開発を開始するのに必要なすべての実行環境が付属しています。これらの実行環境には、次のものがあります。
Java Application Server SDK Update 3 Beta
Sun Java System Access Manager 7.1 および Policy Agent 2.2 for Web Services
次に進む前に、この節の要件を確認してください。
前提条件
このチュートリアルは、Java 技術と Web サービス技術についての基本的な知識またはプログラミング経験を持つユーザーを想定しています。
このチュートリアルに必要なソフトウェア
開始する前に、コンピュータに次のソフトウェアをインストールしておく必要があります。
NetBeans 6.0
ダウンロードオプション「すべて」を選択します。
Sun Java System Access Manager 7.1- Java Application Platform SDK Update 2 以降に含まれます。(ダウンロード )
ページの先頭へ
Sun Java System Access Manager のインストール
Access Manager を以前にインストールし、構成したことがある場合は、userdir を確認し、次のファイルが存在する場合は削除します。
[Your_Userdir]/AccessManager/AMConfig_opt_SUNWappserver_domains)domain1_applications_j2ee-modules_amserver_
その後、新規インストールを開始します。
Sun Java System Access Manager をインストールするには、先に NetBeans IDE の完全版をインストールしてあることを確認する必要があります。次へ,
Java Application Platform SDK Update 2 以降を http://java.sun.com/javaee/downloads/index.jsp から入手します。
Java SDK のインストーラを実行します。このとき、任意のインストールディレクトリを指定し、デフォルトのオプションを使用します。
Sun Java System Access Manager が含まれるアドオンを選択します。
インストーラの実行を続けます。インストーラが終了したら、サーバーを起動し、「完了」を選択します。
IDE を起動します。
「サービス」タブで、「サーバー」ノードを選択します。「サーバー 」ノードを右クリックし、ポップアップメニューから「サーバーを追加」を選択します。「サーバーインスタンスの追加」ダイアログが開きます。
「次へ」をクリックします。「プラットフォームフォルダの場所」ページが開きます。
「プラットフォームの場所」フィールドの「参照」ボタンを使用して、インストールした Java Application Platform SDK があるディレクトリを選択します。
「完了」をクリックします。
「サービス」タブで、Sun Java System Access Manager が、インストールしたアプリケーションサーバーの下のノードとして表示されます。Sun Java System Access Manager を使用するには、先にアプリケーションサーバーを起動する必要があります。
ページの先頭へ
Access Manager インストールの構成の確認
「サービス」ウィンドウで、「Sun Java System Access Manager 」ノードを展開します。
「ログイン」ページが表示されます。このページは、今後のログイン時にすぐに表示されます。Sun Java System Access Manager にログインできます。「ログイン」ページが開き、Access Manager サーバーが実行中であることを示します。
Access Manager が正常に動作するように構成する必要があります。SDK から入手した Glassfish Server をはじめて起動するときにデフォルトで構成されますが、必要な場合はあとで再構成できます。詳細は、 [your_SDKGlassfish_location]/addons/README.html ファイルを参照してください。
ページの先頭へ
チュートリアル環境の設定
IDE を起動します。
Sun Java System Application Server が IDE 内で構成されていることを確認するには、「実行時」タブをクリックして、「 サーバー 」ノードを展開します。
「サーバー 」ノードに「Sun Java System Application Server 9 」ノードが含まれていない場合、「アプリケーションサーバーの追加 」にある手順に従います。
「実行時」ウィンドウで、「サーバー 」ノードを展開し、「Sun Java System Application Server 9 」ノードを右クリックして、ポップアップメニューから「起動」を選択します。
「出力」ウィンドウに次のメッセージが表示されるまで待ちます。
Application server startup complete.
Sun Java System Application Server が実行されている場合、「Sun Java System Application Server 9」ノードに緑色の矢印のバッジが表示されます。
注: 「起動」オプションを使用できない場合、Sun Java System Application Server はすでに起動しています。
ページの先頭へ
チュートリアルプロジェクトの作成
2 つのチュートリアル用プロジェクトは StockQuoteServer と StockQuoteClient です。
StockQuoteServer プロジェクトを作成するには、次の手順に従います。
IDE のメインメニューから、「ファイル」>「新規プロジェクト」を選択します。
「カテゴリ」リストで、「サンプル 」ノードを展開し、「アイデンティティー Blueprints 」ノードを選択します。
「プロジェクト」リストで「株式サービス 」を選択します。
「次へ」をクリックします。
デフォルトのプロジェクト名 (StockQuoteServer ) をそのまま使用し、プロジェクトの場所を任意で変更します。
「完了」をクリックします。
StockQuoteClient プロジェクトを作成するには、次の手順に従います。
IDE のメインメニューから、「ファイル」>「新規プロジェクト」を選択します。
「カテゴリ」リストで、「サンプル 」ノードを展開し、「アイデンティティー Blueprints 」ノードを選択します。
「プロジェクト」リストで、「株式 クライアント 」を選択します。
「次へ」をクリックします。
プロジェクト名 (Stock Client ) とプロジェクトの場所のデフォルト値をそのまま使用します。
「完了」をクリックします。
これで、「プロジェクト」ウィンドウに「Stock Client 」プロジェクトノードが含まれます。
ページの先頭へ
Web サービスのセキュリティー保護: SAML-HolderOfKey セキュリティー機構の使用
このシナリオでは、署名付きの応答を持たないがデフォルトのキーストアを使用する SAML-HolderOfKey セキュリティープロファイルを使用します。これを行うには、最初に Access Manager のトークンプロファイルを編集してから、Web サービスプロバイダおよびクライアントを構成します。
SAML-HolderOfKey プロファイルを編集するには、次の手順に従います。
「実行時」ウィンドウで「Sun Java System Access Managers 」ノードを展開し、「デフォルトインスタンス 」ノード、「プロファイル 」ノードの順に展開します。
「SAML-HolderOfKey 」ノードを選択します。
ノードを右クリックし、コンテキストメニューから「編集」を選択します。
「SAML-HolderOfKey プロファイルを編集」ダイアログが開きます。
「応答の署名」チェックボックスを選択解除します。
「既存の証明書設定」を検索し、「デフォルトのキーストアを使用」チェックボックスが選択されていることを確認します。
「閉じる」をクリックします。
Web サービスプロバイダを構成するには、次の手順に従います。
「プロジェクト」ウィンドウで、「StockQuoteService」プロジェクトノードおよび「Web サービス」ノードを展開します。
「Web サービス」ノードを検索し、「StockService」ノードを右クリックしてポップアップメニューから「Web サービス属性を編集」を選択します。「Web サービスクライアントのセキュリティー設定」ダイアログが開きます。
「メッセージレベルのセキュリティーを有効化」チェックボックスを選択します。
「セキュリティー機構」を検索し、「要求」ドロップダウンリストから「SAML-HolderOfKey」を選択します。
「閉じる」をクリックします。
Web サービスクライアントを構成するには、次の手順に従います。
「プロジェクト」ウィンドウで、「StockQuoteClient 」ノードと「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 サービスプロバイダを構成するには、次の手順に従います。
「プロジェクト」ウィンドウで、「StockQuoteService 」ノードおよび「Web サービス 」ノードを展開します。
「Web サービス 」ノードを検索します。「stockservice 」ノードを右クリックしてポップアップメニューから「Web サービス属性を編集」を選択します。
「Web サービスプロバイダのセキュリティー設定」ダイアログが開きます。
「メッセージレベルのセキュリティーを有効化」チェックボックスを選択します。
「セキュリティー機構」を検索し、「要求」ドロップダウンリストから「UserNameToken」を選択します。
「閉じる」をクリックします。
Web サービスクライアントを構成するには、次の手順に従います。
「プロジェクト」ウィンドウで、「StockClient 」ノードおよび「Web サービス参照 」ノードを展開します。
「Web サービス参照 」ノードを検索し、「StockService 」ノードを右クリックしてポップアップメニューから「Web サービス属性を編集」を選択します。
「Web サービスクライアントのセキュリティー設定」ダイアログが開きます。
「メッセージレベルのセキュリティーを有効化」チェックボックスを選択します。
「セキュリティー機構」を検索し、「要求」ドロップダウンリストから「UserNameToken」を選択します。
「ユーザー名」フィールドに「sherry 」と入力し、「パスワード」フィールドに「mypw 」と入力します。
「応答を検査」チェックボックスを選択します。
「既存の証明書設定」を検索し、「デフォルトキーストアを使用」チェックボックスが選択されていることを確認します。
「閉じる」をクリックします。
これで、「 プロジェクトの配備と実行 」の指示に従って、サンプルの配備と実行に進むことができます。
ページの先頭へ
プロジェクトの配備と実行
「プロジェクト」ウィンドウで「StockQuoteService 」プロジェクトノードを右クリックし、「配備の取り消しおよび配備」を選択します。
IDE が次の処理を行います。
アプリケーションサーバーが起動していない場合、自動的に起動されます。
StockQuoteService プロジェクトを構築します。構築結果が「出力」ウィンドウに表示されます。
Application Server に server.war を配備します。
「プロジェクト」ウィンドウで「StockQuoteClient 」プロジェクトノードを右クリックし、「プロジェクトを実行」を選択します。
IDE が次の処理を行います。
StockQuoteClient プロジェクトを構築します。構築結果が「出力」ウィンドウに表示されます。
Application Server に client.war を配備します。
アプリケーションがブラウザに開きます。
URL フィールドに常に次のように表示されることを確認します。
http://localhost:8080/stockquoteclient/
「Submit」をクリックします。
表示の「View SOAP Messages」部分をクリックすると、この要求に関連する SOAP メッセージを確認できます。
ページの先頭へ
ログファイルの操作
この節の指示は省略可能です。この手順を使用して、ログファイルの変更点を確認できます。
次の手順に進む前に、詳細なログレベルを有効にします。
「 Application Server でのセキュリティーレベルの変更 」の指示に従ってください。
「プロジェクト」ウィンドウで「StockQuoteClient 」プロジェクトノードを右クリックし、ポップアップメニューから「プロジェクトを実行」を選択します。
アプリケーションサーバーのログファイル (server.log ) を開きます。このファイルは <アプリケーションサーバーのインストールディレクトリ> \domains\domain1\logs ディレクトリにあります。
インストール時にデフォルトをそのまま使用した場合は、ウィンドウには C:\Sun\AppServer\domains\domain1\logs ディレクトリが表示されます。
ログファイルの変更を確認してください。
ログファイルは、構成パネルで定義されたメソッドをモジュールが使用していることを示すために編集されます。
変更されたログファイルの部分的なサンプルは、次のリンク先で入手できます。
ページの先頭へ
その他の構成作業
この節では、実行する可能性のある、その他の構成作業について説明します。
ページの先頭へ
ポート 8080 にインストールされていない Application Server の構成情報
Sun Java System Application Server のインストールを 8080 以外のポートで実行した場合、次に示す追加の構成手順を実行してください。
「プロジェクト」ウィンドウで「StockQuoteClient 」>「Web ページ 」>「WEB-INF 」および「wsdl 」を展開し、エディタで stock.wsdl ファイルを開きます。
「ソース」ボタンをクリックし、ファイルのソースビューに切り替えます。
ファイルの下方までスクロールして、次の行を探します。
<soap:address location="http://localhost:8080/stockservice/stockservice" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"/>
8080 の値を、Application Server がインストールされているポート番号に置き換えます。
変更を保存して ファイルを閉じます。
ページの先頭へ
Application Server でのセキュリティーレベルの変更
「実行時」ウィンドウで、「 Sun Java System Application Server 9 」ノードを右クリックし、「管理コンソールを表示」を選択します。
ユーザー名に admin と入力し、パスワードに adminadmin と入力します。
左側のナビゲーションフレームで「Application Server」のリンクをクリックします。
右側のフレームで「ログ」タブをクリックし、「ログレベル」タブをクリックします。
ページの下方までスクロールして、「セキュリティー」を「最高」に設定します。
「保存」ボタンをクリックして、ログアウトします。
ページの先頭へ
参考資料
ページの先頭へ
まとめ
このチュートリアルでは、Web サービスクライアントと Web サービスプロバイダの間で SAML ベースと UserNameToken ベースの認証を有効にする方法を学びました。
ページの先頭へ
次の手順
ページの先頭へ
>> アイデンティティー関連のドキュメント