ORACLE.COM/JAVAMAGAZINE ////////// JULY/AUGUST 2012
JAVA TECH
22
COMMUNITY
JAVA IN
ACTION
ABOUT US
blog
//new to java /
Metro、GlassFish、NetBeans IDEを使用したWebサービスのセキュリティ保護MAX BONBHEL
BIO
パート1
Webサービスのセキュリティ入門 サーバーからクライアントまで
アプリケーションに対して新機能の統合や既存機能の拡張を行うため
には、Webサービスが最良の手法です。しかしWebサービスは、クライアントとサーバーの間でデータを転送する際のセキュリティという新たな問題をもたらします。本記事は、SOAP Webサービスに関して、セキュリティ、信頼性、トランザクションなどのさまざまな側面に焦点を置く全3回シリーズの第1回です。本シリーズの目標は、システムがますます複雑になる中でアプリケーションのセキュリティを強化するための手法に光を当てることにあります。本記事では、Metro、GlassFish、
NetBeans IDEを利用して、サーバーと
クライアントの両方でWebサービスのセキュリティを効率的に保護する方法を説明します。注: 本記事で作成するアプリケーションのすべてのソース・コードは、こちらからダウンロードできます。
MetroとはMetroは、NetBeans IDEに含まれている、拡張可能で使いやすい高性能のWebサービス・スタックです。もっとも単純な「Hello World」Webサービスから、.NETサービスと連携する、安全で信頼性の高いトランザクション方式のWebサービスまで、Webサービスのあらゆるニーズに包括的に対応します。Metro
プラットフォームには、本番品質のWebサービスの構築に必要なすべての要素がまとめられています。
WSITとはWeb Services Interoperability Technology(WSIT)は、Java API for XML Web Services Reference Implementation(JAX-WS RI)とともに、Metro Webサービス・スタックに含まれています。WSITにより、次世代のWebサービス技術を開発するための完全なアーキテクチャとツールが提供されます。WSITは、.NETとの相互運用性を実現するWebサービス拡張機能のためのJava APIで構成されています。
前提条件本記事で説明するアプリケーションの開発には、次のソフトウェアを使用しました。これらのソフトウェアをダウンロードしてください。
■■ NetBeans IDE 7.1.2(ダウンロードはこちら)
■■ GlassFish 3.1.2(ダウンロードはこちら)
■■ Metro 1.3以降(NetBeansに含まれます)
■■「RESTful Webサービスの概要」パー
ト3で作成したAuctionAppプロジェクト(ダウンロードはこちら)
注: 本記事のテストには、NetBeans IDEの執筆時点での最新バージョン(バージョン7.1.2)を使用しました。
概要: Webサービスに対するセキュリティ・オプションの追加本シリーズでは、前シリーズ(「RESTful Webサービスの概要」)で作成したAuctionAppプロジェクトを使用して以下の作業を実行し、サービスとクライアントのセキュリティを保護します。
■■ Webサービスのセキュリティ保護:■■ Username Authentication with Symmetric Keyセキュリティ方式の追加
■■ GlassFishアプリケーション・サーバーへの証明書のインポートと、アプリケーションのデフォルト・ユーザーの設定
■■ セキュリティ保護されたWebサービスを参照するクライアントの設定
■■ セキュリティ保護されたWebサービスのテスト:
■■ Username Authentication with Symmetric Keyセキュリティ機構の利用
■■ 証明書の指定と、セキュリティ保護写真: ALLEN MCINNIS / GETTY IMAGES
著者のMax BonbhelによるWebサービスのセキュリティ保護方法に関するデモンストレーション
ORACLE.COM/JAVAMAGAZINE ////////// JULY/AUGUST 2012
JAVA TECH
23
COMMUNITY
JAVA IN
ACTION
ABOUT US
blog
//new to java / されたサービスへのデフォルト・ユーザー認証情報の利用によるアクセス
本シリーズでセキュリティを保護するアプリケーションは、前シリーズで作成したオンライン・オークション・サイト(eBayのようなサイト)です。売主はリストに商品を出品し、買主はその商品に入札します。売主は1つ以上の商品を出品でき、買主は1つ以上の商品に入札できます。本記事では、入札額を予測するJAX-WS
Webサービスへのアクセスを制限します。
Webサービスのセキュリティ保護NetBeans IDEを使用してWebサービスのセキュリティを保護します。これは2分程度で完了します。1. Username Authent icat ion with
Symmetric Keyというセキュリティ機構をAuctionAppアプリケーションに追加します。
a. N e t B e a n s I D E 7 . 1 . 2以降でAuctionAppプロジェクトを開きます。
b. E A u c t i o n A p p プ ロジェクトの「Web Serv ice」ノードを展開し、「Auct ionAppSOAPw」ノードを右クリックして、「Edit Web Service Attributes」を選択します。
c. 「Quality Of Service」タブにある「AuctionAppSOAPws PortBinding」セクションを展開します(図1参照)。
d. 「Reliable Message Delivery」オプションの選択を解除します。
e. 「 S e c u r e S e r v i c e」を選択し、「Secur i ty Mechan ism」リストから「Username Authent ica t i on with Symmetric Key」を選択します。
2. GlassFishアプリケーション・サーバーに証明書をインポートし、デフォルト・ユーザーを設定します。これにより、サーバーを使用してアプリケーションをテストできるようになります。
a. 証明書のインポートとデフォルト・ユーザーの設定を行うためには、図1のように、「Use Development Defaults」を選択します。
このオプションを選択した場合、NetBeansによってGlassFishのキーストアとトラストストアにエントリが作成され、アプリケーション・サーバーに証明書がインポートされます。
b. 「OK」をクリックします。ここまでで選択したオプションに基づいて、
Webサービスの設定がNetBeansによって生成されます。3. 「AuctionAp」プロジェクト・ノードを右ク
リックし、「Deploy」を選択して、Webサービスをデプロイします。NetBeansによって、新しいWSIT設定ファイ
ルが生成されます。このファイルには、セキュリティ保護されたサービスのオプションと実行時の使用方法に関する詳細情報が含まれます。この
WSIT設定ファイルは、AuctionAppプロジェクトの「Web Pages/WEBINF」ノード内に生成されます。
クライアントの設定 本項では、Webサービス・クライアントを更新し、前項でセキュリティを保護したWebサービスを参照するように設定します。それにより、Webサービス・クライアントが、イ
ンポートされた証明書とデフォルトの認証情報を使用して、セキュリティ保護されたWebサービスにアクセスするようになります。1. Webサービス・クライアントを更新します。 a. Auct ionAppが稼働していることを
確認します。稼働していない場合は、「AuctionApp」ノードを右クリックし、「Deploy」を選択します。
b. N e t B e a n s I D E 7 . 1 . 2以降でA u c t i o n A p p W e b S e r v i c e
C l i e n tプロジェクトを開きます。A u c t i o n A p p W e b S e r v i c e Clientプロジェクトの「Web Service R e f e r e n c e s」ノードを展開し、「AuctionAppSOAPws」ノードを右クリックして「Refresh」を選択します。
c. 「Confirm Client Refresh」ウィザードで、「Also replace local wsdl file with original wsdl located at:」を選択します(図2参照)。
d. 「OK」をクリックします。 これにより、Webサービス・クライアントが、対応するWebサービス記述言語(WSDL)ファイルから再生成されます。
2. AuctionAppWebServiceClientプロジェクトの「Source Packages/META-INF」ノードにあるAuctionAppSOAPws.xmlファイルを開きます。 Auct ionAppSOAPws.xmlのwsp:
図2
図1 図3
ORACLE.COM/JAVAMAGAZINE ////////// JULY/AUGUST 2012
JAVA TECH
24
COMMUNITY
JAVA IN
ACTION
ABOUT US
blog
//new to java / Policyタグを図3のように編集します。
3. 「Au c t i o n A p pWe bS e r v i c e Client」プロジェクト・ノードを右クリックし、「Deploy」を選択して、クライアント・アプリケーションをデプロイします。
セキュリティ保護されたWebサービスのテスト次に、このサービスをテストします。すなわち、セキュリティ保護されたWebサービスを、設定したクライアント・アプリケーションから呼び出します。
そのために、JavaServer Face(JSF)によるサンプルのフロントエンド・アプリケーションを使用して、以下のタスクを実行します。
■■ 証明書とデフォルト・ユーザーを指定しない、セキュリティ保護されたWebサービスの呼び出しの試行
■■ 証明書とデフォルト・ユーザーを使用した、セキュリティ保護された入札額予測Webサービスの呼び出しの試行
1. 予測入札額を表示するセキュリティ保護されたWebサービスの呼び出しを試行します。
a. 先ほど開いたAuctionAppプロジェクトが稼働していることを確認します。稼働していない場合は、「AuctionApp」ノードを右クリックし、「Deploy」を選択します。
b. A u c t i o n A p p W e b ServiceClientプロジェクトの「Web S e r v i c e R e f e r e n c e s」ノードを展開し、「A u c t i o n A p p SOAP ws」ノードを右クリックして「Edit Web Service Attributes」を選択します。
c. 「Qual i ty Of Serv ice」タブにある「Security」セクションを展開します。
d. 「Use development defaults」オプションの選択が解除されていることを確認します(図4参照)。
e. 「OK」をクリックします。 f. 「Au c t i o n A p pW e bS e r v i c e
Cl ient」プロジェクトを右クリックし、
「Clean and Build」を選択します。
g. 「 A u c t i o n A p p W e b ServiceClient」プロジェクトを再び右クリックし、「Run」を選択します。
図5のように、すべてのエントリの一覧が表示されます。 h. 「Show all Bid Items」リン
クをクリックすると、図6のように入札エントリの一覧が表示されます。
i. Valsという名前の入札者に対する「View」リンクをクリックすると、図7のように、Valsの新たに予測された入札額が表示されます。
図6と図7からわかるように、入札額が12.0から0.0に変わっています。これは、セキュリティ保護されたWebサービスの呼び出しにクライアントが失敗したことを示します。
2. 証明書を使用して、予測入札額を表示するセキュリティ保護されたWebサービスを呼び出します。
a. 先ほど開いたAuctionAppが稼働していることを確認します。稼働していない場合は、「AuctionApp」ノードを右クリックし、「Deploy」を選択します。
b. A u c t i o n A p p W e b S e r v i c e C l i e n t プロ ジ ェ クト の「 W e b Service References」ノ ー ド を 展 開 し 、「AuctionAppSOAPws」ノードを 右 クリックして「Ed i t Web Se rv i ce
図4 図7
図5
図6
図8
図9
//new to java /
ORACLE.COM/JAVAMAGAZINE ////////// JULY/AUGUST 2012
JAVA TECH
25
COMMUNITY
JAVA IN
ACTION
ABOUT US
blog
Attributes」を選択します。 c. 「Quality Of Service」タブにあ
る「Security」セクションを展開します。
d. 「U s e d e v e l o p m e n t defaults」オプションを選択します(図8参照)。
e. 「OK」をクリックします。 f. 「AuctionAppWebService
Client」プロジェクトを右クリックし、「Clean and Build」を選択します。
g. 「AuctionAppWebService Client」プロジェクトを再び右クリックし、「Run」を選択します。
図5のように、すべてのエントリの一覧が表示されます。
h. 「Show all Bid Items」リンクをクリックすると、図6のように入札エントリの一覧が表示されます。
i. 入札者Valsに対する「View」リンクをクリックすると、図9のように、Valsの新たに予測された入札額が表示されます。
図6と図9からわかるように、入札額が12.0から1200.0に変わっています。これは、セキュリティ保護されたWebサービスの呼び出しにクライアントが成功したことを示します。
まとめ本記事では、既存のWebサービスに対するセキュリティと信頼性の設定、およびサービスにアクセスするためのデフォルトの認証情報の設定が、簡単に行えることを確認しました。GlassFishにバンドルされているキーストア・ファイルとトラストストア・ファイルは、非常に有用です。本記事では、NetBeans
とMetroを利用して、これらのファイルを自動的に更新し、すぐに開発に利用することができました。本シリーズのパート2では、特定の
証明書をGlassFishのキーストアおよびトラストストアにインポートし、本番環境で使用できるようにする方法を説明します。 </article>
LEARN MORE• NetBeansの『高度なWebサービス相互運用性』マニュアル
• Metro User Guide• GlassFishのリソース
Javaテクノロジーの総合情報メールマガジン
日本オラクルの技術者向け情報サイト、『Oracle Technology Network Japan』から、ついに待望の Java テクノロジーに特化した公式メールマガジンが出ました!エンタープライズ Java から、組み込み Java まで、幅広いテーマで Java の “ 旬 ”のトピックスをお届けします。
Java Developer Newsletter は、Java に取り組み始めたばかりの初心者から、日々の業務現場で Java を使いこなすプロフェッショナル・エンジニアまで、Java に関心のあるすべての方々を対象にしたメールマガジンです。
・米国オラクル発刊『Java Magazine』日本版の最新号のご紹介
・Java 最新の製品リリース情報
・Java 関連イベント・セミナー・勉強会のご案内 ・Java コミュニティからの情報
・Javaトレーニング・認定資格情報
・Java お役立ち情報(技術解説記事/書籍案内/イベントレポート/事例紹介など)
今すぐご登録ください!
こんな情報をお届けします
・Java の最新動向をキャッチしたい技術者・開発者 ・上級プログラミング・テクニック、サンプルコードなど よりディープな技術情報を求める方
・新技術の応用例やビジネス成功事例を知りたい方
・Java を勉強中で、スキルアップしたい方 ・Java 認定資格の取得を検討されている方 ・全国各地の Java コミュニティに参加したい方
こんな方におすすめです
・当メールマガジンのご登録は無料です。
・隔月1回配信ですので、ご負担になりません。
・HTML・テキストのマルチパート・メールをサポートしています。(お使いのメールソフトで表示モードをお選びいただけます)
・メルマガ読者だけのお楽しみ企画 ( プレゼント・ キャンペーンなど)も随時ご提供します。
登録は無料!読者だけの特典あり!
け情報サイト、『Oracle Technology Network Japan』から、ついに待望の Java テクノロジーにジンが出ました!エンタープライズ Java から、組み込み Java まで、幅広いテーマで Java の “ 旬 ”
Java Developer Newsletterのご案内
【サンプル・イメージ】
oracle.co.jp/java/oracle.co.jp/java/