Oracle® Fusion Middleware

Oracle Web Services Managerを使用したWebサービスの保護のユース・ケース

12c (12.2.1)

E72707-01(原本部品番号:E57785-01)

2015年10月

Oracle Web Services Manager (OWSM)を使用してWebサービスを保護する方法を示すユース・ケースを提供する開発者と管理者のためのドキュメント。

Oracle Web Services Manager, 12c (12.2.1)を使用してWebサービスを保護するOracle Fusion Middlewareユース・ケース

E72707-01

Copyright © 2013, 2015 Oracle and/or its affiliates.All rights reserved.

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクル社までご連絡ください。

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs. No other rights are granted to the U.S. Government.

このソフトウェアもしくはハードウェアはさまざまな情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアもしくはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアもしくはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、Oracle社およびその関連会社は一切の責任を負いかねます。

OracleおよびJavaはOracle Corporationおよびその関連企業の登録商標です。その他の名称は、それぞれの所有者の商標または登録商標です。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

目次

タイトルおよび著作権情報

はじめに

- 対象読者

- ドキュメントのアクセシビリティについて

- 関連ドキュメント

- 表記規則

このガイドで説明する新機能

- リリース12c (12.2.1)の新機能と変更された機能

- リリース12c (12.1.3)の新機能と変更された機能

- リリース12c (12.1.3)に関するこのドキュメントにおけるその他の大きな変更

1 ユース・ケースの概要

2 SAMLメッセージ保護を使用したインバウンドSOAPリクエストの保護

- 2.1 ユース・ケース・サマリー

- 2.2 ユース・ケースの概要

- 2.2.1 対称鍵によるメッセージ保護の方法

- 2.2.2 キーストアに必要なキー

- 2.2.3 マルチドメインのユース・ケース(キーストアの強化)

- 2.2.4 SAML発行者をオーバーライドするタイミング

- 2.3 ユース・ケースの実装

- 2.3.1 タスク1: 前提条件

- 2.3.2 タスク2: WebLogic Serverユーザーの作成

- 2.3.3 タスク3: Javaキーストアの作成

- 2.3.4 タスク4: OWSMキーストアの構成

- 2.3.5 タスク5: 復号化キーのパスワードを資格証明ストアに格納

- 2.3.6 タスク6: Webサービスへのポリシーのアタッチ

- 2.3.7 タスク7: ポリシーをWebサービス・クライアントにアタッチ

3 基本認証を使用したRESTful Webサービスの保護

- 3.1 ユース・ケース・サマリー

- 3.2 ユース・ケースの概要

- 3.3 ユース・ケースの実装

- 3.3.1 タスク1: 前提条件の完了

- 3.3.2 タスク2: デフォルトですべてのRESTfulリソースを保護

- 3.3.3 タスク3: RESTful Webサービスの作成

- 3.3.4 タスク4: SecurityContextを使用した認証済ユーザーの取得

- 3.3.5 タスク5: アプリケーション・サブクラスを使用したパッケージ化

- 3.3.6 タスク6: RESTful Webサービスのデプロイ

- 3.4 ユース・ケースの検証

- 3.5 その他の情報源

4 RESTful Webサービスでのセキュリティ・アイデンティティの伝播

- 4.1 ユース・ケース・サマリー

- 4.2 ユース・ケースの概要

- 4.3 ユース・ケースの実装

- 4.3.1 タスク1: 前提条件の完了

- 4.3.2 RESTful Webサービスの作成、保護およびデプロイ

- 4.3.2.1 タスク1: RESTful Webサービスの作成

- 4.3.2.2 タスク2: SecurityContextを使用した認証済ユーザーの取得

- 4.3.2.3 タスク3: Webプロジェクトのサーブレット名の変更

- 4.3.2.4 タスク4: RESTful Webサービスの保護

- 4.3.2.5 タスク5: RESTful Webサービスのデプロイ

- 4.3.2.6 タスク6: RESTful Webサービスのテスト

- 4.3.3 RESTfulクライアントの作成、保護およびデプロイ

- 4.3.3.1 タスク7: RESTfulクライアントの作成

- 4.3.3.2 タスク8: HTTPサーブレットを変更したRESTfulクライアントの呼出し

- 4.3.3.3 タスク9: サーブレットWebアプリケーションの保護

- 4.3.3.4 タスク10: weblogic.xmlデプロイメント・ディスクリプタの作成

- 4.3.3.5 タスク11: RESTfulクライアントのデプロイ

- 4.3.3.6 タスク12: RESTfulクライアントへのアクセスのテスト

- 4.3.4 タスク14: キーストア・サービス(KSS)の設定

- 4.3.4.1 KSSを使用する理由

- 4.3.4.2 KSSの設定

- 4.3.5 タスク15: テスト・ユーザーの作成

- 4.4 ユース・ケースの検証

5 IP-STSとしてMicrosoft ADFS 2.0 STS、RP-STSとしてOracle STSを使用したフェデレーションの構成

- 5.1 ユース・ケース・サマリー

- 5.2 ユース・ケースの概要

- 5.3 ユース・ケースの実装

- 5.3.1 タスク1: Webサービスの構成

- 5.3.2 タスク2: RP-STSとしてのOracle STSの構成

- 5.3.3 タスク3: IP-STSとしてのMicrosoft ADFS 2.0 STSの構成

- 5.3.4 タスク4: Webサービス・クライアントの構成

- 5.4 その他の情報源

6 IP-STSとしてOracle STS、RP-STSとしてMicrosoft ADFS 2.0 STSを使用したフェデレーションの構成

- 6.1 ユース・ケース・サマリー

- 6.2 ユース・ケースの概要

- 6.3 ユース・ケースの実装

- 6.3.1 タスク1: Webサービスの構成

- 6.3.2 タスク2:RP-STSとしてのMicrosoft ADFS 2.0 STSの構成

- 6.3.3 タスク3: IP-STSとしてのOracle STSの構成

- 6.3.4 タスク4: Webサービス・クライアントの構成

- 6.4 その他の情報源

7 OpenSSO STSでのWS-Trustを使用したSAML HOKの構成

- 7.1 ユース・ケース・サマリー

- 7.2 ユース・ケースの概要

- 7.3 ユース・ケースの実装

- 7.3.1 タスク1: OpenSSO STSの構成

- 7.3.2 タスク2: OpenSSO STSでWS-Trustを使用してメッセージ保護付きでSAML鍵所有者を構成

- 7.4 その他の情報源

8 OpenSSO STSでWS-Trustを使用してSAML送信者保証を構成

- 8.1 ユース・ケース・サマリー

- 8.2 ユース・ケースの概要

- 8.3 ユース・ケースの実装

- 8.3.1 タスク1: OpenSSO STSの構成

- 8.3.2 タスク2: OpenSSO STSでWS-Trustを使用してメッセージ保護付きでSAML送信者保証を構成

- 8.4 その他の情報源

9 OpenSSO STSでWS-Trustを使用したSAMLベアラーの構成

- 9.1 ユース・ケース・サマリー

- 9.2 ユース・ケースの概要

- 9.3 ユース・ケースの実装

- 9.3.1 タスク1: OpenSSO STSの構成

- 9.3.2 タスク2: OpenSSO STSでWS-Trustを使用したメッセージ保護付きのSAMLベアラーの構成

- 9.4 その他の情報源

はじめに

この項では、対象読者、このガイドの使用方法を説明し、ドキュメントのアクセシビリティについての情報を提供します。

対象読者

このガイドのOracle Web Services Manager (OWSM)セキュリティ・ユース・ケースは次の読者を対象としています。

- Webサービスおよびセキュリティを管理するシステムおよびセキュリティ管理者。

- Webサービスを開発し、Webサービスをデプロイする前にセキュリティのテストを行うアプリケーション開発者。

- セキュリティ・ポリシーを作成するセキュリティ・アーキテクト

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracle Supportへのアクセス

サポートをご購入のOracleのお客様は、My Oracle Supportにアクセスして電子サポートを受けることができます。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info) か、聴覚に障害のあるお客様は (http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。

関連ドキュメント

詳細は、Oracle Fusion Middleware Webサービスのドキュメント・セットにある次のドキュメントを参照してください。

- Webサービスの管理

- 『Oracle JDeveloperによるアプリケーションの開発』のWebサービスの開発と保護に関する項

- Oracle Web Services Manager拡張可能アプリケーションの開発

- Oracle Application Development FrameworkによるFusion Webアプリケーションの開発

- Oracle WebLogic Server JAX-WS Webサービスの開発

- Oracle WebLogic Server JAX-RPC Webサービスの開発

- Oracle Infrastructure Webサービスの開発

- Oracle Web Services Manager相互運用性ソリュー ション・ガイド

- Oracle Fusion Middleware Oracle SOA Suite開発者ガイド

- Oracle Fusion Middleware Oracle WebCenter開発者ガイド

- Oracle WebLogic Server WebLogic Webサービスの保護

- Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理

- Oracle WebLogic Server WebLogic Webサービスの理解

- Webサービスの理解

- Oracle WebLogic Server WebLogic Webサービス・リファレンス

表記規則

このマニュアルでは次の表記規則を使用します。

規則

意味

太字

太字は、操作に関連するGraphical User Interface要素、または本文中で定義されている用語および用語集に記載されている用語を示します。

イタリック体

イタリックは、ユーザーが特定の値を指定するプレースホルダ変数を示します。

固定幅フォント

固定幅フォントは、段落内のコマンド、URL、サンプル内のコード、画面に表示されるテキスト、または入力するテキストを示します。

このガイドで説明する新機能

次の各トピックでは、Oracle Web Services Manager (OWSM)の新機能と変更された機能およびこのガイドで説明する主な変更について紹介し、追加情報へのリンクを示します。

機能とその使用方法の詳細は、このガイドの参照先を確認してください。

リリース12c (12.2.1)の新機能と変更された機能

修正や訂正などのマイナー更新がこのドキュメントに対して行われました。

リリース12c (12.1.3)の新機能と変更された機能

このドキュメントに記載されているOracle Fusion Middleware 12c (12.1.3)の新機能と変更された機能は次のとおりです。

- 基本認証を使用してRESTful Webサービスを保護する方法を示す新しいユース・ケースが提供されました。詳細は、「基本認証を使用したRESTful Webサービスの保護」を参照してください。

- RESTful Webサービスでのアイデンティティの伝播方法を示す新しいユース・ケースが提供されました。詳細は、「RESTful Webサービスでのセキュリティ・アイデンティティの伝播」を参照してください。

リリース12c (12.1.3)に関するこのドキュメントにおけるその他の大きな変更

12c (12.1.3)では、Oracle Fusion Middleware 12c (12.1.2)のWebサービスのためのセキュリティおよび管理者ガイドに記載されていたユース・ケースがこのガイドに移動されました。

1 ユース・ケースの概要

この章では、このドキュメントに記載されているOracle Web Services Manager (OWSM)セキュリティ・ユース・ケースの概要について説明します。

次の表に、このドキュメントで説明するユース・ケースをまとめます。

表1-1 ユース・ケースの概要

のソリューション" title="ユース・ケースの概要" width="100%">

ソリューション

説明

第2章「SAMLメッセージ保護を使用したインバウンドSOAPリクエストの保護」

次の目的のためにインバウンドSOAPリクエストを保護します。

- メッセージ・レベルの保護(つまり、メッセージの整合性とメッセージの機密性)を実行します。

- WS-Security 1.1標準に従ったインバウンドSOAPリクエストのSAMLベース認証を提供します。

第3章「基本認証を使用したRESTful Webサービスの保護」

アイデンティティ伝播を使用して、RESTful Webサービスを保護します。

第4章「RESTful Webサービスでのセキュリティ・アイデンティティの伝播」

RESTful Webサービスでセキュリティ・アイデンティティを伝播します。

第5章「IP-STSとしてMicrosoft ADFS 2.0 STS、RP-STSとしてOracle STSを使用したフェデレーションの構成」

IP-STSとしてMicrosoft ADFS 2.0 STS、RP-STSとしてOracle STSを使用したWebサービス・フェデレーションを構成します。

第6章「IP-STSとしてOracle STS、RP-STSとしてMicrosoft ADFS 2.0 STSを使用したフェデレーションの構成」

IP-STSとしてOracle STS、RP-STSとしてMicrosoft ADFS 2.0 STSを使用したWebサービス・フェデレーションを構成します。

第7章「OpenSSO STSでのWS-Trustを使用したSAML HOKの構成」

OpenSSO STSでWS-Trustを使用してメッセージ保護付きでSAML鍵所有者(HOK)を構成します。

第8章「OpenSSO STSでWS-Trustを使用してSAML送信者保証を構成」

OpenSSO STSでWS-Trustを使用してSAML送信者保証を構成します。

第9章「OpenSSO STSでWS-Trustを使用したSAMLベアラーの構成」

OpenSSO STSでWS-Trustを使用して、SAMLベアラーを構成します。

このマニュアルおよびこの他のマニュアルに、なじみのない用語が出てきた場合は、用語集で定義を確認してください。

2 SAMLメッセージ保護を使用したインバウンドSOAPリクエストの保護

この章では、SAMLメッセージ保護を使用したインバウンドSOAPリクエストの保護方法について説明します。

この章の構成は、次のとおりです。

- ユース・ケース・サマリー

- ユース・ケースの概要

- ユース・ケースの実装

2.1 ユース・ケース・サマリー

ユース・ケースの実装には、高レベルのタスクおよび関連する概念の理解が必要です。

この項では次の高レベルのタスクについて説明し、関連情報を提供します。

ユース・ケース

次の目的のためにインバウンドSOAPリクエストを保護します。

- メッセージ・レベルの保護(つまり、メッセージの整合性とメッセージの機密性)を実行します。

- WS-Security 1.1標準に従ったインバウンドSOAPリクエストのSAMLベース認証を提供します。

解決策

WS-Security 1.1に準拠しているOracle Web Services Manager (OWSM) SAMLポリシーをWebサービスおよびクライアントにアタッチして、必要なキーおよびキーストアを構成します。

コンポーネント

- Oracle Fusion Middleware

- Oracle Web Services Manager(OWSM)

- 保護するWebサービスおよびクライアント・アプリケーション

必須ドキュメント

このユース・ケースを完了するには、次のドキュメント・リソースを参照してください。

- Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理

- Oracle Web Services Managerの理解

- http://download.oracle.com/javase/6/docs/technotes/tools/windows/keytool.htmlのkeytool Javadoc

2.2 ユース・ケースの概要

このユース・ケースは、次の操作に必要な手順を示します。

- インバウンドSOAPリクエストのSAMLベース認証を使用したメッセージ・レベルの保護を実行するため、適切なOWSMセキュリティ・ポリシーをアタッチします。
特に、次のポリシーをクライアントおよびサービスにそれぞれアタッチします。

- wss11_saml_token_with_message_protection_client_policy

- wss11_saml_token_with_message_protection_service_policy

- 必要なキーおよびキーストアを構成します。
メッセージは、WS-Securityの対称鍵テクノロジのBasic 128スイートを使用して保護されます。具体的には、RSA鍵メカニズム(メッセージの機密性)、SHA-1ハッシュ・アルゴリズム(メッセージの整合性)、およびAES-128ビットの暗号化が使用されます。そのため、keytool(またはその他のツール)を使用してこのポリシーに必要な署名や暗号化鍵を作成する場合は、必ずRSA鍵メカニズム、SHA-1アルゴリズム、そしてAES-128ビット暗号化を使用して、キーのポリシー要件を満たす必要があります。サポートされているアルゴリズム・スイートの詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のサポートされているアルゴリズム・スイートに関する項を参照してください。

次の項では、SAMLメッセージ保護のユース・ケースの追加のバックグラウンドについて説明します。

- 「対称鍵によるメッセージ保護の方法」

- 「キーストアに必要なキー」

- 「マルチドメインのユース・ケース(キーストアの強化)」

- 「SAML発行者をオーバーライドするタイミング」

詳細は、「Oracle Web Services Managerの理解」の鍵と証明書の理解に関する項とwss11に関する項を参照してください。

2.2.1 対称鍵によるメッセージ保護の方法

このユース・ケースのSAMLセキュリティ・ポリシーは、対称鍵テクノロジを使用します。対称鍵暗号は、次のような単一の共有の秘密鍵に依存します。

1. クライアントは、対称鍵を作成し、それを使用して署名してメッセージを暗号化し、そしてリクエスト・メッセージでWebサービスとそれを共有します。
対称鍵を保護するために、リクエスト・メッセージで送信された対称鍵は、Webサービスの証明書を使用して暗号化されます。

2. Webサービスはリクエスト・メッセージ内の対称鍵を使用して、リクエスト・メッセージの署名を検証してそれを復号化し、それからレスポンス・メッセージに署名して暗号化します。

次のプロセス・フローを考慮します。

リクエストを作成するため、OWSMエージェントは次の手順を実行します。

1. 共有の対称鍵を生成し、それを使用してリクエスト・メッセージの署名と暗号化の両方を行います。

2. その独自の秘密鍵を使用して、リクエスト・メッセージの署名を裏書きします。

3. Webサービスの公開鍵を使用して、対称鍵を暗号化します。

4. 対称鍵をリクエストとともにWebサービスに送信します。クライアントはリクエストで公開鍵を送信して、Webサービスがその署名を検証できるようにします。

Webサービスがリクエストを受け取った場合、次の手順を実行します。

1. 秘密鍵を使用して対称鍵を復号化します。

2. 対称鍵を使用して署名を検証するためにリクエスト・メッセージを復号化します。

3. リクエスト・メッセージ内のクライアントの公開鍵を使用して、その裏書署名を検証します。

クライアントにレスポンスを送信するため、Webサービスは次の手順を実行します。

1. リクエストとともに送信されたクライアントが生成した同じ対称鍵を使用して、レスポンス・メッセージに署名します。

2. クライアントが生成した同じ対称鍵を使用して、レスポンス・メッセージを暗号化します。

OWSMエージェントはレスポンス・メッセージを受け取ると、次のことを行います。

1. 最初に生成した対称鍵を使用して、レスポンス・メッセージを復号化します。

2. 最初に生成した対称鍵を使用して、レスポンス・メッセージの署名を検証します。

2.2.2 キーストアに必要なキー

このユース・ケースの場合、クライアントとWebサービスが、同じキーストアにアクセスする同じドメインにあります。結果として、同じ秘密/公開鍵ペアを共有できます。

特に、クライアントは、秘密鍵orakeyを使用してリクエスト・メッセージの署名を裏書きし、公開鍵orakeyを使用して対称鍵を暗号化できます。次に、Webサービスが公開鍵orakeyを使用して裏書きを検証し、秘密鍵orakeyを使用して対称鍵を復号化します。

2.2.3 マルチドメインのユース・ケース(キーストアの強化)

クライアントとWebサーバーが同じドメインになく、同じキーストアにアクセスしない場合は、クライアントとWebサービスは各自が秘密/公開鍵のペアを持つ必要があります。

表2-1に示すように、複数ドメインのユース・ケースで要件について考慮します。

表2-1 複数ドメインのユース・ケース要件

Webサービス・クライアント

Webサービス

クライアントのキーストアに独自の秘密/公開鍵のペアが必要です。

サービス・キーストアに独自の秘密/公開鍵のペアが必要です。

Webサービスの公開鍵が必要です。

クライアントのキーストア内の公開鍵に対応する中間証明書とルート証明書が必要です。

これらの証明書を使用して、信頼される証明チェーンを生成して署名を検証します。

実行時の対称鍵の生成

対称鍵が必要ですが、これはリクエスト・メッセージで送信されます。

クライアントが対称鍵を暗号化するために使用する公開鍵、つまりWebサービスの公開鍵については、次の2つのアプローチがあります。

- Webサービス・クライアントが使用できるように、Webサービスのbase64エンコード形式の公開証明書がWSDLで発行されます。詳細は、Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理のサービス・アイデンティティ証明書拡張の使用に関する項を参照してください。この使用方法では、Webサービスの公開鍵はクライアントのキーストアになくても構いません。

- 証明書がWSDLでパブリッシュされていない場合、「構成」ページでkeystore.recipient.aliasの値を指定できます。または、ポリシーをアタッチするときに「セキュリティ構成の詳細」コントロールを使用して、クライアントごとにこの値をオーバーライドできます。キーストア受信者の別名は、アウトバウンドSOAPメッセージの暗号化用のキーを取得するときにキーストア内の公開鍵を検索するために使用される別名を指定します。この方法では、Webサービスの公開鍵はクライアントのキーストアにある必要があります。

2.2.4 SAML発行者をオーバーライドするタイミング

クライアント・ポリシーのsaml.issuer.nameプロパティは、SAMLトークンの発行者を特定し、そのデフォルトはwww.oracle.comという値です。このユース・ケースでは、www.oracle.comデフォルトを使用します。

オプションで、「構成」ページでsaml.issuer.nameの値を指定できます。または、ポリシーをアタッチするときに「セキュリティ構成の詳細」コントロールを使用して、クライアントごとにこの値をオーバーライドできます。

ポリシーで別のSAML認証局(発行者)を使用する場合は、その発行者名をクライアントで構成し、SAMLログイン・モジュール内の使用可能な発行者のリストに含める必要があります。詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のSAMLアサーション発行者名の追加に関する項を参照してください。

2.3 ユース・ケースの実装

このユース・ケースは、SAMLメッセージの保護を実装する次のタスクについて説明します。

- タスク1: 前提条件

- タスク2: WebLogic Serverユーザーの作成

- タスク3: Javaキーストアの作成

- タスク4: OWSMキーストアの構成

- タスク5: 復号化キーのパスワードを資格証明ストアに格納

- タスク6: Webサービスへのポリシーのアタッチ

- タスク7: ポリシーをWebサービス・クライアントにアタッチ

2.3.1 タスク1: 前提条件

このユース・ケースを実装する前に、次のことを確認してください

2.3.2 タスク2: WebLogic Serverユーザーの作成

SAMLトークンのユーザーがWebLogic Serverアイデンティティ・ストアに存在することを確認する必要があります。存在しない場合は作成する必要があります。Oracle WebLogic Server管理コンソール・オンライン・ヘルプのユーザーの作成に関する項の説明に従って、WebLogic Server管理コンソールを使用してユーザーをアイデンティティ・ストアに追加します。

Webサービスのランタイムは、WS-SecurityヘッダーからSAMLトークンを抽出し、SAMLトークン内の名前を使用してWebLogic Serverアイデンティティ・ストアに対してユーザーを検証します。特に、SAMLログイン・モジュールは、Webサービスに代わってSAMLトークンを検証します。次に、SAMLログイン・モジュールは認証を完了するために、検証されたトークンからユーザー名を抽出し、Oracle Platform Security Services (OPSS)に(間接的に)渡します。詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』の「Fusion Middleware Controlを使用したSAMLおよびSAML2ログイン・モジュールの構成」を参照してください。

デフォルトの認証プロバイダなど、構成済のWebLogic Server認証プロバイダをここで呼び出すことができます。

2.3.3 タスク3: Javaキーストアの作成

キーストアを作成し、秘密鍵および信頼できるCA証明書をロードします。

次の手順では、keytoolユーティリティを使用してJavaキーストアを作成および管理します。このユース・ケースでは、JKSキーストアを使用します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』の秘密鍵の生成とJavaキーストアの作成に関する項を参照してください。

注意:
次のタスクのいずれかを実行する場合、別名を指定します。

- -genkeyコマンドを使用してエンティティをキーストアに追加し、鍵ペアを生成します(公開鍵と秘密鍵)。

- -importコマンドを使用して、証明書または証明書チェーンを信頼できる証明書のリストに追加します。

これ以後、keytoolコマンドでエンティティを参照する場合は、このときに指定した別名を使用する必要があります。

1. 新しいキー・ペアと自己署名証明書を作成します。
genkeyコマンドを使用してキー・ペア(公開鍵と秘密鍵)を作成します。秘密鍵が存在しない場合、genkeyは新しい秘密鍵を作成します。

次のコマンドは、default-keystore.jksキーストアに署名アルゴリズムとしてRSA-SHA1、別名orakeyを使用したRSA鍵を生成します。別名を指定できます。別名をorakeyに設定する必要はありません。

keytool -genkey -alias orakey -keyalg "RSA" -sigalg "SHA1withRSA" -dname "CN=test, C=US" -keystore default-keystore.jks

keytoolユーティリティから必要な鍵とキーストアのパスワードを要求するプロンプトが表示されます。これらのパスワードは後で必要になります。

2. 認証局(CA)への証明書リクエストを生成します。
リクエストの生成には、-certreqコマンドを使用します。CAは証明書または証明書チェーンを戻します。

次のコマンドでは、orakey別名の証明書リクエストが生成されます。

keytool -certreq -alias orakey -sigalg "SHA1withRSA" -file certreq_file -storetype jks -keystore default-keystore.jks

3. 自己署名証明書を信頼できるCA証明書で置き換えます(インポートします)。
既存の自己署名証明書をCAから返される証明書で置き換える必要があります。これを実行するには、-importコマンドを実行します。次のコマンドでは、default-keystore.jksキーストアの信頼できるCA証明書で置き換えます。keytoolユーティリティから必要なパスワードを要求するプロンプトが表示されます。

keytool -import -alias orakey -file certreq_file -keystore default-keystore.jks

2.3.4 タスク4: OWSMキーストアの構成

OWSMキーストアを構成します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のOWSMキーストアの構成に関するを参照してください。

2.3.5 タスク5: 復号化キーのパスワードを資格証明ストアに格納

復号化キーのパスワードを資格証明ストアに格納します。キー名としてkeystore.enc.csf.keyを使用します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』の資格証明ストアへの鍵およびユーザー資格証明の追加に関する項を参照してください。

2.3.6 タスク6: Webサービスへのポリシーのアタッチ

wss11_saml_token_with_message_protection_service_policyをWebサービスにアタッチして、メッセージ署名およびメッセージ暗号化に対してポリシー・アサーションを構成します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する項を参照してください。

デフォルトでは、ポリシーによってリクエストおよびレスポンスの本体全体が署名および暗号化されます。署名および暗号化する個々の本体要素を指定するオプションがあります。また、署名および暗号化するヘッダー要素を指定できます。必要に応じてメッセージの署名および暗号化を構成できます。ただし、クライアント・ポリシー設定と一致する必要があります。

ポリシーの構成の詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のoracle/wss11_saml_token_with_message_protection_service_policyに関する項を参照してください。

2.3.7 タスク7: ポリシーをWebサービス・クライアントにアタッチ

wss11_saml_token_with_message_protection_client_policyをWebサービス・クライアントにアタッチし、メッセージの署名、メッセージの暗号化あるいはその両方のポリシー・アサーションを構成します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する項を参照してください。

デフォルトでは、ポリシーによってリクエストおよびレスポンスの本体全体が署名および暗号化されます。署名および暗号化する個々の本体要素を指定するオプションがあります。また、署名および暗号化するヘッダー要素を指定できます。必要に応じてメッセージの署名および暗号化を構成できます。ただし、サービス・ポリシー設定と一致する必要があります。

クライアント・ポリシーのsaml.issuer.nameプロパティは、SAMLトークンの発行者を特定し、そのデフォルトはwww.oracle.comという値です。このユース・ケースでは、www.oracle.comデフォルトを使用します。saml.issuser.nameプロパティのオーバーライドの詳細は、SAML発行者をオーバーライドするタイミングに関する項を参照してください。

ポリシーの構成の詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のoracle/wss11_saml_token_with_message_protection_client_policyに関する項を参照してください。

3 基本認証を使用したRESTful Webサービスの保護

この章では、基本認証を使用してRESTful Webサービスを保護する方法について説明します。

この章には、次のセクションがあります。

- 第3.2項「ユース・ケースの概要」

- 第3.3項「ユース・ケースの実装」

- 第3.4項「ユース・ケースの検証」

- 3.5項「その他の情報源」

3.1 ユース・ケース・サマリー

ユース・ケース・サマリーは、この章の情報が自分のニーズに合致するかどうかを迅速に判断するのに役立ちます。

次の表は、ユース・ケースの目標、ソリューションおよびコンポーネントをまとめたものです。必要なドキュメントへのリンクも提供されます。

ユース・ケース

基本認証を使用して、RESTful Webサービスを保護します。

実装サマリー

RESTful Webサービスを開発し、Oracle Web Services Manager (OWSM)基本認証ポリシーをアタッチして保護します。

コンポーネント

- Oracle WebLogic Server

- Oracle Web Services Manager(OWSM)

- Oracle JDeveloper

必須ドキュメント

このユース・ケースを完了するには、次のドキュメント・リソースを参照してください。

- Oracle WebLogic Server RESTful Webサービスの開発と保護

- Oracle JDeveloperによるアプリケーションの開発におけるRESTful Webサービスの開発および保護に関する項

3.2 ユース・ケースの概要

このユース・ケースは、次の操作に必要な手順を示します。

- JDeveloperを使用して簡単なHelloWorld RESTful Webサービスを作成します。

- javax.ws.rs.core.SecurityContextを使用して、出力メッセージに認証済ユーザーの名前を表示します。

- アプリケーション・サブクラスを使用してRESTful Webサービスをパッケージ化して、RESTful Webサービス・アプリケーション・デプロイメントのコンポーネントを定義し、追加のメタデータを提供します。

- OWSMグローバル・ポリシーを定義して、デフォルトですべてのRESTful Webサービスを保護します。

- WebLogic Server管理コンソールを使用して、WARファイルとしてRESTful WebサービスをWebLogic Serverにデプロイします。

- ブラウザを使用して、HelloWorld Webサービスを検証します。

3.3 ユース・ケースの実装

ユース・ケースを実装するには、次の手順を実行します。

- タスク1: 前提条件の完了

- タスク2: デフォルトですべてのRESTfulリソースを保護

- タスク3: RESTful Webサービスの作成

- タスク4: SecurityContextを使用した認証済ユーザーの取得

- タスク5: アプリケーション・サブクラスを使用したパッケージ化

- タスク6: RESTful Webサービスのデプロイ

3.3.1 タスク1: 前提条件の完了

開始する前に、次のタスクが実行されていることを確認してください。

1. 次の製品コンポーネントをダウンロードおよびインストールします。

- Oracle Fusion Middleware - OWSMを含む
詳細は、Oracle Fusion MiddlewareのインストールのプランニングのOracle Fusion Middlewareインストールの準備に関する項を参照してください。

- Oracle JDeveloper Studio Edition
これは、このドキュメントのユース・ケースのサブセットにのみ必要です。

Oracle Fusion Middlewareソフトウェアの入手先とダウンロードの詳細は、OTNでOracle Fusion Middlewareダウンロード、インストール、構成のReadmeファイルを参照してください。

2. WebLogicドメインを構成します。
完全な手順は、『構成ウィザードによるWebLogicドメインの作成』のWebLogicドメインの作成に関する項を参照してください。

3. ドメインの管理サーバーを起動します。
完全な手順は、『Oracle WebLogic Serverサーバーの起動と停止の管理』のサーバーの起動と停止に関する項を参照してください。

4. 次の管理ツールにアクセスできることを確認します。

- Oracle Enterprise Manager Fusion Middleware Control:

http://localhost:7001/em

- Oracle WebLogic Server管理コンソール

http://localhost:7001/console

3.3.2 タスク2: デフォルトですべてのRESTfulリソースを保護

RESTfulリソースをデプロイする前に、最初にグローバル・ポリシーを定義して、デフォルトですべてのRESTfulリソースを保護します。

次の手順では、OWSMグローバル・ポリシー・セットを定義し、すべてのRESTfulリソースに割り当てます。oracle/wss_http_token_service_policyポリシーがすべてのRESTfulリソースの基本認証の構成ポリシーにアタッチされます。

WebサービスのWLSTコマンドの詳細は、『インフラストラクチャ・コンポーネントのためのWLSTコマンド・リファレンス』のWebサービスのWLSTカスタムWLSTコマンドに関する項を参照してください。

デフォルトですべてのRESTfulリソースを保護するには:

ビデオ

注意:
完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のWLSTを使用したポリシーのグローバルなアタッチに関する項を参照してください。

1. WebLogic Serverが稼働していることを確認します。

2. WLSTを起動し、『Webサービスの管理』のWebサービスのカスタムWLSTコマンドへのアクセスに関する項の説明に従って、WebLogic Serverの実行中のインスタンスに接続します。

wls:/offline> connect('weblogic', 'welcome1', 't3://localhost:7001')
Connecting to t3://localhost:7001 with userid weblogic ...
Successfully connected to Admin Server "AdminServer" that belongs to domain "base_domain".

Warning: An insecure protocol was used to connect to the
server. To ensure on-the-wire security, the SSL port or
Admin port should be used instead.

3. セッションを開始します。

wls:/base_domain/serverConfig> beginWSMSession()
Location changed to domainRuntime tree. This is a read-only tree with DomainMBean as the root.
For more help, use help('domainRuntime')

Session started for modification.

4. すべてのRESTfulリソースのOWSMグローバル・ポリシー・セットを定義します。

wls:/base_domain/serverConfig> createWSMPolicySet('rest-policy-set','rest-resource', 'Service("*")')

Description defaulted to "Global policy attachments for RESTful Resource resources."
The policy set was created successfully in the session.

5. oracle/wss_http_token_service_policyポリシーをすべてのRESTfulリソースの基本認証を必要とするポリシー・セットにアタッチします。

wls:/base_domain/serverConfig> attachPolicySetPolicy('oracle/wss_http_token_service_policy')

Policy reference "oracle/wss_http_token_service_policy" added.

6. セッションをコミットします。

wls:/base_domain/serverConfig> commitWSMSession()

The policy set rest-policy-set is valid.
Creating policy set rest-policy-set in repository.

Session committed successfully.

3.3.3 タスク3: RESTful Webサービスの作成

次の手順を実行して、JDeveloperを使用した簡単なHelloWorld RESTful Webサービスを作成します。

注意:
JDeveloperを使用する場合のヘルプは、[F1]を押すか、「ヘルプ」をクリックします。

1. JDeveloperを起動します。
完全な手順は、『Oracle JDeveloperのインストール』のOracle JDeveloper Studioのインストール後の次の手順に関する項を参照してください。

2. カスタム・アプリケーションの作成ウィザードを使用して、アプリケーションとプロジェクトを作成します。
「ファイル」→「新規」→「アプリケーション」、「一般」→「アプリケーション」→「カスタム・アプリケーション」の順に選択して、カスタム・アプリケーションの作成ウィザードを起動します。

- アプリケーション名: RESTfulApplication

- プロジェクト名: RESTfulService

- プロジェクトの機能: Java

- デフォルト・パッケージ: samples.helloworld

他のすべての値の場合は、デフォルトを受け入れます。

完全な手順は、『Oracle JDeveloperによるアプリケーションの開発』のアプリケーションとプロジェクトの作成に関する項を参照してください。

3. 「Javaクラスの作成」ウィザードを使用した新しいJavaクラスの作成
RESTfulServiceプロジェクトを右クリックして、「新規」→「Javaクラス」を選択して、「Javaクラスの作成」ウィザードを起動します。

次の特性を定義します。

- 名前: HelloWorldResource

- スーパークラスからのコンストラクタ: 選択解除

- 抽象メソッドの実装: 選択解除

他のすべての値の場合は、デフォルトを受け入れます。

完全な手順は、『Oracle JDeveloperによるアプリケーションの開発』の新しいJavaクラスまたはインタフェースの作成方法に関する項を参照してください。

4. 次の太字に示されているように、hello()メソッドをJavaクラスに追加します。

package samples.helloworld;
public class HelloWorldResource {
public String hello() {
return "Hello!";
}
}

5. 「JavaクラスからのRESTfulサービスの作成」ウィザードを使用して、JavaクラスからRESTfulサービスを作成します。
HelloWorldResource.javaを右クリックして「RESTfulサービスの作成」を選択し、「JavaクラスからのRESTfulサービスの作成」ウィザードを起動します。

次の特性を定義します。

- ルート・パス: helloworld

- HTTPメソッドの構成: hello

- タイプ: GET

- 生成: text/plain

他のすべての値の場合は、デフォルトを受け入れます。

コードが次のように更新されます。

package samples.helloworld;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path("helloworld")
public class HelloWorldResource {

@GET
@Produces("text/plain")
public String hello() {
return "Hello!";
}
}

完全な手順は、『Oracle JDeveloperによるアプリケーションの開発』のRESTful Webサービスの作成に関する項を参照してください。

3.3.4 タスク4: SecurityContextを使用した認証済ユーザーの取得

次の手順は、javax.ws.rs.core.SecurityContextを使用した認証済ユーザーの取得方法を示しています。詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のSecurityContextを使用したRESTful Webサービスの保護に関する項を参照してください。

SecurityContextを使用した認証済ユーザーを取得するには:

1. javax.ws.rs.core.Contextアノテーションを使用してインスタンスをクラス・フィールド、セッター・メソッドまたはメソッド・パラメータに注入することで、SecurityContextにアクセスします。
前の手順で作成したhello()メソッドを更新して、次のようにSecurityContextを使用して取得した認証済ユーザー名を出力します。

package samples.helloworld;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.SecurityContext;
import javax.ws.rs.core.Context;
import java.security.Principal;

@Path("helloworld")
public class HelloWorldResource {

@GET
@Produces("text/plain")
public String hello(@Context SecurityContext sc) {
String user = "";
if (sc != null) {
Principal p = sc.getUserPrincipal();
if (p != null) {
user = p.getName();
}
}
return "Hello " + user + "!";
}
}

3.3.5 タスク5: アプリケーション・サブクラスを使用したパッケージ化

次の手順は、javax.ws.rs.core.Applicationを拡張するクラスを作成してRESTful Webサービス・アプリケーション・デプロイメントのコンポーネントを定義する方法を示し、追加のメタデータを提供します。詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のアプリケーション・サブクラスを使用したパッケージ化に関する項を参照してください。

アプリケーション・サブクラスを使用したRESTful Webサービスをパッケージ化するには:

1. 「Javaクラスの作成」ウィザードを使用した新しいJavaクラスの作成
samples.helloworldパッケージを右クリックして、「新規」→「Javaクラス」を選択して、「Javaクラスの作成」ウィザードを起動します。ヘルプは、[F1]を押すか、「ヘルプ」をクリックします。

次の特性を定義します。

- 名前: MyApplication

- パッケージ: samples.helloworld

- 拡張: javax.ws.rs.core.Application

- スーパークラスからのコンストラクタ: 選択解除

- 抽象メソッドの実装: 選択解除

他のすべての値の場合は、デフォルトを受け入れます。

完全な手順は、『Oracle JDeveloperによるアプリケーションの開発』の新しいJavaクラスまたはインタフェースの作成方法に関する項を参照してください。

2. 次の太字で示されているコードを追加することで、getClasses()メソッドをオーバーライドして、RESTful Webサービス・リソースのリストを戻します(この場合はHelloWorldResource)。

package samples.helloworld;

import javax.ws.rs.core.Application;
import java.util.HashSet;
import java.util.Set;

public class MyApplication extends Application {
public Set<java.lang.Class<?>> getClasses() {
Set<java.lang.Class<?>> s = new HashSet<Class<?>>();
s.add(HelloWorldResource.class);
return s;
}
}

3. javax.ws.rs.ApplicationPathアノテーションを追加して、サーブレットにマップされる基底URIパターンを定義します。この情報がリソースの基底URIで使用される方法の詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』の「実行時の処理: 基底URIの構成方法」を参照してください。

package samples.helloworld;

import javax.ws.rs.core.Application;
import java.util.HashSet;
import java.util.Set;

import javax.ws.rs.ApplicationPath;

@ApplicationPath("resources")
public class MyApplication extends Application {
public Set<java.lang.Class<?>> getClasses() {
Set<java.lang.Class<?>> s = new HashSet<Class<?>>();
s.add(HelloWorldResource.class);
return s;
}
}

3.3.6 タスク6: RESTful Webサービスのデプロイ

WARファイルとしてRESTful Webサービス・アプリケーションをWebLogic Serverにデプロイします。

RESTful Webサービスをデプロイするには:

1. Webアプリケーションのデプロイメント・プロファイルを作成します。

1. 「デプロイメント・プロファイルの作成」ウィザードを使用して、プロファイルのタイプおよび名前を定義します。
RESTfulサービス・アプリケーションを右クリックして「デプロイ」→「新規デプロイメント・プロファイル」を選択して、「デプロイメント・プロファイルの作成」ウィザードを起動します。ヘルプは、[F1]を押すか、「ヘルプ」をクリックします。

次の特性を定義します。

- プロファイル・タイプ: WARファイル

- デプロイメント・プロファイル名: helloworld

2. 「WARデプロイメント・プロファイルのプロパティの編集」ウィザードを使用して、Webアプリケーションのコンテキスト・ルートを定義します。
「デプロイメント・プロファイルの作成」ウィザードで「OK」をクリックすると、「WARデプロイメント・プロファイルのプロパティの編集」ウィザードが自動的に起動します。ヘルプは、[F1]を押すか、「ヘルプ」をクリックします。

次の特性を定義します。

- Java EE Webコンテキスト・ルートを指定: restservice

2. 「<application>のデプロイ」ウィザードを使用して、次の特性とともにWebアプリケーションをデプロイします。
RESTfulServiceアプリケーションを右クリックして「デプロイ」→「helloworld」を選択して、「<application>のデプロイ」ウィザードを起動します。ヘルプは、[F1]を押すか、「ヘルプ」をクリックします。

次の特性を定義します。

- デプロイメント・アクション: WARにデプロイ

3. 構成されたプロジェクト・ディレクトリのWARファイルを表示します。次に例を示します。

c:\JDeveloper\mywork\RESTfulApplication\RESTfulService\deploy\helloworld.war

4. WebLogic ServerにWARファイルをデプロイします。詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのアプリケーションとモジュールのデプロイに関する項を参照してください。

3.4 ユース・ケースの検証

ブラウザでRESTful Webサービスにアクセスするには、ブラウザで次のURLを入力して、RESTful Webサービスをテストします。

http://<host>:<port>/restservice/resources/helloworld

たとえば、http://localhost:7001/restservice/resources/helloworldです。

プロンプトが表示されたら、WebLogic Serverのユーザー名とパスワードを入力します。たとえば、weblogicとwelcome1です。

次のメッセージがブラウザで戻されます。

Hello weblogic!

Fusion Middleware ControlのWeb Servicesテスト・クライアントまたは「Webサービスのテスト」ページを使用して、Webサービスの基本機能および拡張機能をテストできます。詳細は、『Webサービスの管理』のWebサービスのテストに関する説明を参照してください。

3.5 その他の情報源

RESTful Webサービスとクライアントの作成および保護の詳細は、次のリソースを参照してください。

- Oracle WebLogic Serverの理解のJava EE 6の例に関する項の説明に従って、JAX-RSサンプルを使用してRESTful Webサービスを作成します。

- Oracle WebLogic Server RESTful Webサービスの開発と保護

- Oracle JDeveloperによるアプリケーションの開発におけるRESTful Webサービスの開発および保護に関する項

4 RESTful Webサービスでのセキュリティ・アイデンティティの伝播

この章では、RESTful Webサービスでのセキュリティ・アイデンティティの伝播方法について説明します。

この章には、次のセクションがあります。

- 第4.2項「ユース・ケースの概要」

- 第4.3項「ユース・ケースの実装」

- 第4.4項「ユース・ケースの検証」

4.1 ユース・ケース・サマリー

ユース・ケース・サマリーは、この章の情報が自分のニーズに合致するかどうかを迅速に判断するのに役立ちます。

次の表は、ユース・ケースの目標、ソリューションおよびコンポーネントをまとめたものです。必要なドキュメントへのリンクも提供されます。

ユース・ケース

RESTful Webサービスでセキュリティ・アイデンティティを伝播します。たとえば、ユーザーがブラウザ経由でWebポータルにアクセスし、資格証明の入力を求められた場合、Webポータルでユーザー・リクエストを完了するためにアクセスする必要があるバックエンド・サービスにこれらの資格証明が伝播される可能性があります。

実装サマリー

RESTful Webサービスおよびクライアントを作成し、Oracle Web Services Manager (OWSM) SAMLポリシーを使用して保護します。

コンポーネント

- Oracle Fusion Middleware - Oracle Web Services Manager (OWSM)を含む

- Oracle JDeveloper

必須ドキュメント

このユース・ケースを完了するには、次のドキュメント・リソースを参照してください。

- Oracle WebLogic Server RESTful Webサービスの開発と保護

- Oracle JDeveloperによるアプリケーションの開発におけるRESTful Webサービスの開発および保護に関する項

4.2 ユース・ケースの概要

このユース・ケースは、次の操作に必要な手順を示します。

- JDeveloperを使用して簡単なHelloWorld RESTful Webサービスを作成します。

- javax.ws.rs.core.SecurityContextを使用して、出力メッセージに認証済ユーザーの名前を表示します。

- WARファイルとしてRESTful WebサービスをWebLogic Serverにデプロイします。

- HelloWorld RESTful Webサービスをテストします。

- JDeveloperを使用して、RESTful WebサービスのRESTfulクライアント・プロキシを作成および保護します。

- SAMLセキュリティに必要なキーストアおよび証明書を設定します。

- RESTfulクライアント・プロキシを検証します。

4.3 ユース・ケースの実装

このユース・ケースは次のタスクを含みます。

- タスク1: 前提条件の完了

- RESTful Webサービスの作成、保護およびデプロイ

- タスク1: RESTful Webサービスの作成

- タスク2: SecurityContextを使用した認証済ユーザーの取得

- タスク3: Webプロジェクトのサーブレット名の変更

- タスク4: RESTful Webサービスの保護

- タスク5: RESTful Webサービスのデプロイ

- RESTfulクライアントの作成、保護およびデプロイ

- タスク7: RESTfulクライアントの作成

- タスク8: HTTPサーブレットを変更したRESTfulクライアントの呼出し

- タスク9: サーブレットWebアプリケーションの保護

- タスク10: weblogic.xmlデプロイメント・ディスクリプタの作成

- タスク11: RESTfulクライアントのデプロイ

- タスク15: テスト・ユーザーの作成

- タスク14: キーストア・サービス(KSS)の設定

4.3.1 タスク1: 前提条件の完了

開始する前に、次のタスクが実行されていることを確認してください。

1. 次の製品コンポーネントをダウンロードおよびインストールします。

- Oracle Fusion Middleware - OWSMを含む
詳細は、Oracle Fusion MiddlewareのインストールのプランニングのOracle Fusion Middlewareインストールの準備に関する項を参照してください。

- Oracle JDeveloper
これは、このドキュメントのユース・ケースのサブセットにのみ必要です。

Oracle Fusion Middlewareソフトウェアの入手先とダウンロードの詳細は、OTNでOracle Fusion Middlewareダウンロード、インストール、構成のReadmeファイルを参照してください。

2. WebLogicドメインを構成します。
完全な手順は、『構成ウィザードによるWebLogicドメインの作成』のWebLogicドメインの作成に関する項を参照してください。

3. ドメインの管理サーバーを起動します。
完全な手順は、『Oracle WebLogic Serverサーバーの起動と停止の管理』のサーバーの起動と停止に関する項を参照してください。

4. 次の管理ツールにアクセスできることを確認します。

- Oracle Enterprise Manager Fusion Middleware Control:

http://localhost:7001/em

- Oracle WebLogic Server管理コンソール

http://localhost:7001/console

4.3.2 RESTful Webサービスの作成、保護およびデプロイ

次のタスクを実行して、RESTful Webサービスを作成、保護およびデプロイします。

- タスク1: RESTful Webサービスの作成

- タスク2: SecurityContextを使用した認証済ユーザーの取得

- タスク3: Webプロジェクトのサーブレット名の変更

- タスク4: RESTful Webサービスの保護

- タスク5: RESTful Webサービスのデプロイ

4.3.2.1 タスク1: RESTful Webサービスの作成

JDeveloperを使用した簡単なhelloworld RESTful Webサービスを作成するには:

注意:
JDeveloperを使用する場合のヘルプは、[F1]を押すか、「ヘルプ」をクリックします。

1. JDeveloperを起動します。
完全な手順は、『Oracle JDeveloperのインストール』のOracle JDeveloper Studioのインストール後の次の手順に関する項を参照してください。

2. 「Javaデスクトップ・アプリケーション」ウィザードを使用して、アプリケーションとプロジェクトを作成します。
「ファイル」→「新規」→「アプリケーション」、「一般」→「アプリケーション」→「Javaデスクトップ・アプリケーション」の順に選択して、「Javaデスクトップ・アプリケーション」ウィザードを起動します。

次の特性を定義します。

- アプリケーション名: rest-saml-idprop

- アプリケーション・パッケージの接頭辞: examples.wsm.helloworld

- プロジェクト名: service

- デフォルト・パッケージ: examples.wsm.helloworld

他のすべての値は、デフォルトを使用します。

完全な手順は、『Oracle JDeveloperによるアプリケーションの開発』のアプリケーションとプロジェクトの作成に関する項を参照してください。

3. 「Javaクラスの作成」ウィザードを使用して、serviceプロジェクトに新しいJavaクラスを作成します。
serviceプロジェクトを右クリックして「新規」→「Javaクラス」を選択し、「Javaクラスの作成」ウィザードを起動します。

次の特性を定義します。

- 名前: HelloWorldIdPropSample

- パッケージ: examples.wsm.helloworld

他のすべての値は、デフォルトを使用します。

HelloWorldIdPropSample.javaファイルが作成され、JDeveloperで開きます。

完全な手順は、『Oracle JDeveloperによるアプリケーションの開発』の新しいJavaクラスまたはインタフェースの作成方法に関する項を参照してください。

4. 次の太字に示されているように、hello()メソッドをJavaクラスに追加します。

package examples.wsm.helloworld;

public class HelloWorldIdPropSample {
public HelloWorldIdPropSample() {
super();
}

public String hello() {
return "Hello";
}
}

5. 「JavaクラスからのRESTfulサービスの作成」ウィザードを使用して、JavaクラスからRESTfulサービスを作成します。
HelloWorldIdPropSample.javaを右クリックして「RESTfulサービスの作成」を選択し、「JavaクラスからのRESTfulサービスの作成」ウィザードを起動します。

次の特性を定義します。

- プラットフォーム: JAX-RS 1.xスタイル

- ルート・パス: helloworld

- HTTPメソッドの構成: hello

- メソッド: GET

- 生成: text/plain

- パス: user

完全な手順は、『Oracle JDeveloperによるアプリケーションの開発』のRESTful Webサービスの作成に関する項を参照してください。

コードが次のように更新されます。

package examples.wsm.helloworld;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path("helloworld")
public class HelloWorldIdPropSample {
public HelloWorldIdPropSample() {
super();
}

@GET
@Produces("text/plain")
@Path("user")
public String hello() {
return "Hello";
}
}

4.3.2.2 タスク2: SecurityContextを使用した認証済ユーザーの取得

次の手順は、javax.ws.rs.core.SecurityContextを使用した認証済ユーザーの取得方法を示しています。詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のSecurityContextを使用したRESTful Webサービスの保護に関する項を参照してください。

SecurityContextを使用した認証済ユーザーを取得するには:

1. javax.ws.rs.core.Contextアノテーションを使用してインスタンスをクラス・フィールド、セッター・メソッドまたはメソッド・パラメータに注入することで、SecurityContextにアクセスします。
前の手順で作成したhello()メソッドを更新して、次のようにSecurityContextを使用して取得した認証済ユーザー名を出力します。

package examples.wsm.helloworld;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.SecurityContext;
import javax.ws.rs.core.Context;
import java.security.Principal;

@Path("helloworld")
public class HelloWorldIdPropSample {
public HelloWorldIdPropSample() {
super();
}

@GET
@Produces("text/plain")
@Path("user")
public String hello(@Context SecurityContext sc) {
String user = "No user";
if (sc != null) {
Principal p = sc.getUserPrincipal();
if (p != null) {
user = p.getName();
}
}
return "Hello " + user;
}
}

4.3.2.3 タスク3: Webプロジェクトのサーブレット名の変更

「タスク1: RESTful Webサービスの作成」の説明に従って「JavaクラスからのRESTfulサービスの作成」ウィザードを使用してRESTful Webサービスを作成した場合、JDeveloperにより、プロジェクトがWebプロジェクトに自動的に変更され、web.xmlファイルが追加されました。デフォルトでは、Webプロジェクトのサーブレット名はjerseyです。

Web Content/WEB-INFフォルダにあるweb.xmlファイルを編集して、helloworldなどのわかりやすい名前を指定します。次に例を示します。

<?xml version = '1.0' encoding = 'windows-1252'?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>helloworld</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>helloworld</servlet-name>
<url-pattern>/resources/*</url-pattern>
</servlet-mapping>
</web-app>

4.3.2.4 タスク4: RESTful Webサービスの保護

RESTful Webサービスを保護するために、いずれかのOWSM事前定義済セキュリティ・ポリシーをアタッチできます。OWSM事前定義済セキュリティ・ポリシーは、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理のRESTful WebサービスでサポートされているOWSMポリシーに関する項に記載されています。

「ポリシー」ウィザードを使用して次のポリシーをアタッチし、RESTful Webサービスを保護します: oracle/multi_token_rest_service_policy

web.xmlファイルを右クリックして「RESTfulアプリケーションの保護」を選択し、「ポリシー」ウィザードを起動します。

セキュリティ・ポリシー構成がWeb Content/WEB-INFフォルダの次に示すようなwsm-assembly.xmlデプロイメント・ディスクリプタ・ファイルに保存されます。wsm-assembly.xmlファイルが存在しない場合は作成されます。

<orawsp:wsm-assembly xmlns:orawsp="http://schemas.oracle.com/ws/2006/01/policy">
<sca11:policySet xmlns:sca11="http://docs.oasis-open.org/ns/opencsa/sca/200912" name="policySet"
appliesTo="REST-RESOURCE()" attachTo="SERVICE('helloworld')" orawsp:highId="1"
xml:id="REST-RESOURCE__SERVICE__helloworld__">
<wsp:PolicyReference xmlns:wsp="http://www.w3.org/ns/ws-policy"
DigestAlgorithm="http://www.w3.org/ns/ws-policy/Sha1Exc"
URI="oracle/multi_token_rest_service_policy" orawsp:status="enabled" orawsp:id="1"/>
</sca11:policySet>
</orawsp:wsm-assembly>

完全な手順は、『Oracle JDeveloperによるアプリケーションの開発』のRESTfulサービスへのポリシーのアタッチに関する項を参照してください。

4.3.2.5 タスク5: RESTful Webサービスのデプロイ

WARファイルとしてRESTful Webサービス・アプリケーションをWebLogic Serverにデプロイします。

RESTful Webサービスをデプロイするには:

1. Webアプリケーションのデプロイメント・プロファイルを作成します。

1. 「デプロイメント・プロファイルの作成」ウィザードを使用して、プロファイルのタイプおよび名前を定義します。
serviceプロジェクトを右クリックして「デプロイ」→「新規デプロイメント・プロファイル」を選択して、「デプロイメント・プロファイルの作成」ウィザードを起動します。

次の特性を定義します。

- プロファイル・タイプ: WARファイル

- デプロイメント・プロファイル名: helloworld

2. 「WARデプロイメント・プロファイルのプロパティの編集」ウィザードを使用して、Webアプリケーションのコンテキスト・ルートを定義します。
「デプロイメント・プロファイルの作成」ウィザードで「OK」をクリックすると、「WARデプロイメント・プロファイルのプロパティの編集」ウィザードが自動的に起動します。

次の特性を定義します。

- Java EE Webコンテキスト・ルートを指定: rest-saml-idprop

2. 「<アプリケーション>のデプロイ」ウィザードを使用して、Webアプリケーションをデプロイします。
serviceアプリケーションを右クリックして「デプロイ」→「helloworld」を選択して、「<アプリケーション>のデプロイ」ウィザードを起動します。

次の特性を定義します。

- デプロイメント・アクション: WARにデプロイ

3. 構成されたプロジェクト・ディレクトリのWARファイルを表示します。次に例を示します。

c:\JDeveloper\mywork\rest-saml-idprop\service\deploy\helloworld.war

4. RESTful WebサービスをデプロイするWebLogic Serverを起動したことを確認してください。
Fusion Middleware Controlを起動し、WARファイルをデプロイします。

http://localhost:7001/em

5. Java EEアプリケーションのデプロイ・アシスタントを使用して、WARファイルをデプロイします。
Java EEアプリケーションのデプロイ・アシスタントにアクセスします。ナビゲーション・ペインの「WebLogicドメイン」→domainname→「AdminServer」を選択し、コンテンツ・ペインの「Weblogicサーバー」→「デプロイメント」を選択して、「デプロイ」をクリックすることで、Java EEアプリケーションのデプロイ・アシスタントにアクセスします。

詳細は、『Oracle Fusion Middlewareの管理』のJava EEアプリケーションのデプロイに関する項を参照してください。

4.3.2.6 タスク6: RESTful Webサービスのテスト

Fusion Middleware Controlを使用して、RESTful Webサービス・アプリケーションをテストします。

RESTful Webサービスをテストするには:

1. Fusion Middleware Controlを起動します。

http://localhost:7001/em

2. RESTful Webサービス・アプリケーションのサマリー・ページを表示します。

1. ナビゲータ・ペインで、「アプリケーションのデプロイ」フォルダを開いてドメインのアプリケーションを開き、アプリケーションのデプロイを開き、helloworld (AdminServer)アプリケーション名を選択します。

2. コンテンツ・ペインで「アプリケーションのデプロイ」、「Webサービス」を順に選択します。

3. ページの「Webサービスの詳細」セクションで、「RESTfulサービス」タブをクリックし、アプリケーション名「helloworld」をクリックして「RESTfulサービス・アプリケーション」ページに移動します。

完全な手順は、『Webサービスの管理』のRESTfulサービス・アプリケーションの詳細の表示に関する項を参照してください。

3. 「RESTfulサービスのテスト」をクリックします。
RESTful Webサービス・アプリケーションWADLファイルが自動的に解析されます。デフォルトでは、GET(hello)メソッドが選択されます(これがアプリケーションで使用可能な唯一のメソッドであるため)。

4. テスト・クライアントを構成します。

1. 「リクエスト」タブで、「OWSMセキュリティ・ポリシー」を選択します。

2. 「クライアント・ポリシー」リストのoracle/wss_http_token_client_policyを選択します。

3. 「構成プロパティのユーザー名とパスワード」フィールドにweblogicとwelcome1を入力します。

5. 「Webサービスのテスト」をクリックします。

次の情報が「レスポンス」タブで戻されます。

Hello weblogic

詳細は、『Webサービスの管理』のWebサービスのテストに関する説明を参照してください。

4.3.3 RESTfulクライアントの作成、保護およびデプロイ

次のタスクを実行して、RESTfulクライアントを作成および保護します。

- タスク7: RESTfulクライアントの作成

- タスク8: HTTPサーブレットを変更したRESTfulクライアントの呼出し

- タスク9: サーブレットWebアプリケーションの保護

- タスク10: weblogic.xmlデプロイメント・ディスクリプタの作成

- タスク11: RESTfulクライアントのデプロイ

4.3.3.1 タスク7: RESTfulクライアントの作成

JDeveloperを使用して簡単なRESTfulクライアントを作成するには:

1. 「Webプロジェクト作成」ウィザードを使用して、新しいWebプロジェクトを作成します。
「ファイル」→「新規」→「プロジェクト」、「Webプロジェクト」の順に選択して、「Javaデスクトップ・アプリケーション」ウィザードを起動します。

次の特性を定義します。

- 場所

- プロジェクト名: rest-client

- Webアプリケーション

- サーブレット3.0/JSP 2.2 (Java EE 6)

- Webプロジェクト・プロファイル

- Java EE Webアプリケーション名: rest-saml-idprop-client

- Java EEコンテキスト・ルート: rest-saml-idprop-client

他のすべての値は、デフォルトを使用します。

完全な手順は、『Oracle JDeveloperによるアプリケーションの開発』のアプリケーションとプロジェクトの作成に関する項を参照してください。

2. 「HTTPサーブレット作成」ウィザードを使用して、RESTfulクライアントとして機能するHTTPサーブレットを作成します。
rest-clientプロジェクトを右クリックして「新規」→「ギャラリから」、「Web層」→「サーブレット」→「HTTPサーブレット」の順に選択し、「HTTPサーブレット作成」ウィザードを起動します。

次の特性を定義します。

- サーブレット情報

- クラス: HelloWorldServlet

- サーブレット・マッピング

- URLパターン: /hellorestclient

他のすべての値は、デフォルトを使用します。

HelloWorldServlet.javaファイルがプロジェクト・ディレクトリ内に作成され、JDeveloperで自動的に開きます。

完全な手順は、『Oracle JDeveloperによるアプリケーションの開発』のHTTPサーブレットの生成方法に関する項を参照してください。

3. RESTfulクライアントおよびプロキシの作成ウィザードを使用して、RESTfulクライアント・プロキシを作成します。
rest-clientプロジェクトを右クリックして「新規」→「ギャラリから」、「ビジネス層」→「Webサービス」→「RESTfulクライアントおよびプロキシ」の順に選択して、RESTfulクライアントおよびプロキシの作成ウィザードを起動します。

次の特性を定義します。

- デプロイメント・プラットフォームの選択

- Jersey 1.xスタイル

- WADLの選択

- URL: http://localhost:7001/rest-saml-idprop/resources/application.wadl

- プロキシ名のカスタマイズ

- クラス名: HelloWorldRestClient

- クライアント・ポリシー構成

- セキュリティ・ポリシー: oracle/http_saml20_token_bearer_client_policy

他のすべての値は、デフォルトを使用します。

完全な手順は、『Oracle JDeveloperによるアプリケーションの開発』のRESTful Webサービス・クライアントの作成方法に関する項を参照してください。

4.3.3.2 タスク8: HTTPサーブレットを変更したRESTfulクライアントの呼出し

次に太字で示されているように、HelloWorldServlet HTTPサーブレットを変更して、RESTfulクライアントを呼び出します。

package examples.wsm.helloworld;
...
import com.sun.jersey.api.client.Client;
import examples.wsm.helloworld.HelloWorldRestClient.Helloworld;
...
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
Client client = HelloWorldRestClient.createClient();
HelloWorldRestClient.Helloworld
hello = HelloWorldRestClient.helloworld(client);
String output = hello.user().getAsTextPlain(String.class);
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>HelloWorldServlet</title></head>");
out.println("<body>");
out.println("<p>The servlet has received a GET. This is the reply.</p>");
out.println("<p>Output from RESTful service:" + output + "</p>");
out.println("</body></html>");
out.close();
}
}

4.3.3.3 タスク9: サーブレットWebアプリケーションの保護

次に示すようにWeb Content/WEB-INFフォルダにあるrest-clientプロジェクトのweb.xmlファイルを編集して、サーブレットWebアプリケーションを保護します。

1. 「サーブレット」で、次のようにHelloWorldServletのエントリを追加します。

- 名前: HelloWorldServlet

- タイプ: サーブレット・クラス

- サーブレット・クラス/JSPファイル: examples.wsm.helloworld.HelloWorldServlet

2. 「セキュリティ」で、次の値を構成します。

- ログイン認証

- HTTP基本認証

- セキュリティ・ロール

- webuser

- セキュリティ制約: Webリソース収集

- Webリソース名: 成功

- 適用先: すべてのHTTPメソッド

- URLパターン: /hellorestclient

- セキュリティ制約: 認可

- 権限: 有効

- セキュリティ・ロール: webuser

web.xmlは、次のように更新されます。

<?xml version = '1.0' encoding = 'windows-1252'?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>examples.wsm.helloworld.HelloWorldServlet</servlet-class>
</servlet>
<security-constraint>
<web-resource-collection>
<web-resource-name>Success</web-resource-name>
<url-pattern>/hellorestclient</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>webuser</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>
<security-role>
<role-name>webuser</role-name>
</security-role>
</web-app>

4.3.3.4 タスク10: weblogic.xmlデプロイメント・ディスクリプタの作成

weblogic.xmlデプロイメント・ディスクリプタを作成するには:

1. 「WebLogicデプロイメント・ディスクリプタの作成」ウィザードを使用して、weblogic.xmlデプロイメント・ディスクリプタを作成します。
rest-clientプロジェクトを右クリックして、「新規」→「ギャラリから」、「一般」→「デプロイメント・ディスクリプタ」→「WebLogicデプロイメント・ディスクリプタ」の順に選択して、「WebLogicデプロイメント・ディスクリプタの作成」ウィザードを起動します。

次の特性を定義します。

- 選択記述子

- 記述子: weblogic.xml

- バージョンを選択

- バージョン: 12.2.1

weblogic.xmlファイルがWebContent/WEB-INFフォルダに作成され、JDeveloperで自動的に開きます。

2. 「セキュリティ」で、次の値を構成します。

- ロール割当てとして実行

- ロール名: webuser

- プリンシパル: weblogic

weblogic.xmlファイルが次のように作成されます。

<?xml version = '1.0' encoding = 'windows-1252'?>
<weblogic-web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.5/weblogic-web-app.xsd"
xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
<security-role-assignment>
<role-name>webuser</role-name>
<principal-name>weblogic</principal-name>
</security-role-assignment>
</weblogic-web-app>

4.3.3.5 タスク11: RESTfulクライアントのデプロイ

WARファイルとしてRESTfulクライアント・アプリケーションをWebLogic Serverにデプロイします。

クライアントをデプロイするには:

1. Webアプリケーションのデプロイメント・プロファイルを作成します。

1. 「デプロイメント・プロファイルの作成」ウィザードを使用して、プロファイルのタイプおよび名前を定義します。
rest-clientプロジェクトを右クリックし、「デプロイ」→「新規デプロイメント・プロファイル」を選択して、「デプロイメント・プロファイルの作成」ウィザードを起動します。

次の特性を定義します。

- プロファイル・タイプ: WARファイル

- デプロイメント・プロファイル名: helloworld-restclient

2. 「WARデプロイメント・プロファイルのプロパティの編集」ウィザードを使用して、Webアプリケーションのコンテキスト・ルートを定義します。
「デプロイメント・プロファイルの作成」ウィザードで「OK」をクリックすると、「WARデプロイメント・プロファイルのプロパティの編集」ウィザードが自動的に起動します。

次の特性を定義します。

- 一般: Java EE Webコンテキスト・ルートを指定: rest-saml-idprop-client

2. 「<アプリケーション>のデプロイ」ウィザードを使用して、Webアプリケーションをデプロイします。
rest-clientアプリケーションを右クリックして、「デプロイ」→helloworld-restclientを選択して、「<アプリケーション>のデプロイ」ウィザードを起動します。

次の特性を定義します。

- デプロイメント・アクション: WARにデプロイ

3. 構成されたプロジェクト・ディレクトリのWARファイルを表示します。次に例を示します。

c:\JDeveloper\mywork\rest-saml-idprop\rest-client\deploy\helloworld-restclient.war

4. Fusion Middleware Controlを起動し、WARファイルをデプロイします。

http://localhost:7001/em

詳細は、『Oracle Fusion Middlewareの管理』のJava EEアプリケーションのデプロイに関する項を参照してください。

4.3.3.6 タスク12: RESTfulクライアントへのアクセスのテスト

次の手順「タスク14: キーストア・サービス(KSS)の設定」の説明に従ってキーストア・サービス(KSS)が構成されるまで、RESTful Webサービス・クライアントへのアクセスが失敗します。

ブラウザでRESTful Webサービス・クライアントにアクセスするには、ブラウザで次のURLを入力して、RESTful Webサービスをテストします。

http://<host>:<port>/rest-saml-idprop-client/hellorestclient

プロンプトが表示されたら、WebLogic Serverのユーザー名とパスワードを入力します。たとえば、weblogicとwelcome1です。

次のエラーが戻されるので注意してください: Error 500--Internal Server Error.

次に、KSSを設定します。

4.3.4 タスク14: キーストア・サービス(KSS)の設定

OWSMは公開鍵暗号化を使用してSAMLベアラー・トークンに署名するため、キーストアの設定が必要です。鍵とキーストアにより、メッセージ保護を構成するための基本が提供されます。

4.3.4.1 KSSを使用する理由

KSSは、Oracle Platform Security Services (OPSS)によって提供されるサービスです。KSSには、JKSを介した次の利点があります:

- 統合されたツール

- Fusion Middleware ControlまたはWLSTを使用して、KSSキーおよび証明書のCRUD操作を実行します。

- CA署名キーと証明書を生成する内部CA。

- 向上したライフサイクル管理

- 複数のドメインで同じキーストアを共有する機能は、記憶域を一元化して簡略化されます(たとえば、データベース記憶域など)。

- キーストアを分離する機能(たとえば、OWSMでは「ストライプ」の概念から独自のキーストアを持つことができます。)

- パスワードがキーストアの秘密鍵にアクセスするために必要ない場合の簡略化された管理。

4.3.4.2 KSSの設定

KSSキーストアを設定するには:

1. Fusion Middleware Controlを起動します。

http://localhost:7001/em

2. 「キーストア」ページからキーストアを作成します。
「キーストア」ページに移動するには、「WebLogicドメイン」→「セキュリティ」→「キーストア」を選択します。

1. 「ストライプの作成」をクリックして、次の特性を定義します。
- ストライプ名: owsm

2. リストでowsmを選択して、「キーストアの作成」をクリックして、次の特性を定義します。
- キーストア名: keystore

- 保護: ポリシー

- 権限の付与: 無効

完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のメッセージ保護のOPSSキーストア・サービスの使用に関する項を参照してください。

3. 「鍵ペアの生成」ダイアログを使用して、鍵ペアを生成します。
「鍵ペアの生成」ダイアログに移動するには、「キーストア」ページのowsm→keystoreを選択し、「管理」、「鍵ペアの生成」の順にクリックします。

次の特性を定義します。

- 別名: orakey

- 共通名: orakey

- 組織単位: us

- 国: アメリカ合衆国

- RSAキー・サイズ: 1024

完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のメッセージ保護のOPSSキーストア・サービスの使用に関する項を参照してください。

4. democa CA証明書をowsmストライプにインポートします。
デフォルトでは、鍵ペアはKSSに同梱されているdemoca CAによって署名されます。

使用している証明書を表示するには、「キーストア」ページのowsm→keystoreを選択して、「管理」、orakey別名の順にクリックして、「別名: orakeyの証明書の詳細 」ダイアログを表示します。

図4-1 「別名: orakeyの証明書の詳細」ダイアログ

OWSMエージェントが署名の証明書の証明書パスを検証できないため、CAをowsmキーストアにインポートするまで、サーバー側の証明書の検証に失敗します。

systemストライプ内のcastoreキーストアからdemoca CA証明書をエクスポートし、owsmストライプ内のorakeyキーストアにインポートします。

1. democa CA証明書をエクスポートするには、「キーストア」ページの「system」→castoreを選択し、「管理」をクリックし、democa別名を選択し、「エクスポート」をクリックします。
「証明書」ダイアログで、「証明書のエクスポート」をクリックしてローカル・ファイルに保存します(またはコンテンツを任意のファイルにコピーして貼り付けます)。

完全な手順は、『Oracle Platform Security Servicesによるアプリケーションの保護』のFusion Middleware Controlを使用した証明書または信頼できる証明書のエクスポートに関する項を参照してください。

2. democa CA証明書をインポートするには、「キーストア」ページのowsm→keystoreを選択し、「管理」、「インポート」の順にクリックします。
次の特性を定義します。

- 証明書タイプ: 信頼できる証明書

- 別名: democa

- 証明書または証明連鎖を含むファイルの選択: 有効

「ファイルの選択」をクリックし、エクスポートされた証明書ファイルに移動し、「開く」をクリックし、「OK」をクリックして証明書をインポートします。

完全な手順は、『Oracle Platform Security Servicesによるアプリケーションの保護』のFusion Middleware Controlを使用した証明書または信頼できる証明書のインポートに関する項を参照してください。

4.3.5 タスク15: テスト・ユーザーの作成

テスト・ユーザーを作成するには:

1. WebLogic Server管理コンソールを起動します。次に例を示します。

http://localhost:7001/console

完全な手順は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプの管理コンソールの起動に関する項を参照してください。

2. パスワードwelcome1を使用して、testuserという名前のユーザーを作成します。
完全な手順は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのユーザーの作成に関する項を参照してください。

3. JDeveloperで、Web Content/WEB-INFフォルダにあるrest-clientプロジェクトのweblogic.xmlファイルを編集して、testuserをwebuserロールにマップします。
「セキュリティ」→「セキュリティ・ロールの割当て」で、webuserを選択して、有効なプリンシパルとしてtestuserを追加します。

4.4 ユース・ケースの検証

ブラウザでRESTful Webサービス・クライアントにアクセスするには、ブラウザで次のURLを入力して、RESTful Webサービスをテストします。

http://<host>:<port>/rest-saml-idprop-client/hellorestclient

プロンプトが表示されたら、WebLogic Serverのユーザー名とパスワードを入力します。たとえば、weblogicとwelcome1またはtestuserとwelcome1です。

次のメッセージがブラウザで戻されます。

The servlet has received a GET. This is the reply.
Output from RESTful service: Hello testuser

Fusion Middleware ControlのWeb Servicesテスト・クライアントまたは「Webサービスのテスト」ページを使用して、Webサービスの基本機能および拡張機能をテストできます。詳細は、『Webサービスの管理』のWebサービスのテストに関する説明を参照してください。

5 IP-STSとしてMicrosoft ADFS 2.0 STS、RP-STSとしてOracle STSを使用したフェデレーションの構成

この章では、Identity Provided STS (IP-STS)としてMicrosoft ADFS 2.0 STS、Replying Party (RP-STS)としてOracle STSを使用したWebサービス・フェデレーションの構成方法について説明します。

この章には、次のセクションがあります。

- ユース・ケース・サマリー

- ユース・ケースの概要

- ユース・ケースの実装

- その他の情報源

5.1 ユース・ケース・サマリー

ユース・ケース・サマリーは、この章の情報が自分のニーズに合致するかどうかを迅速に判断するのに役立ちます。

次の表は、ユース・ケースの目標、ソリューションおよびコンポーネントをまとめたものです。必要なドキュメントへのリンクも提供されます。

ユース・ケース

IP-STSとしてMicrosoft ADFS 2.0 STS、RP-STSとしてOracle STSを使用したWebサービス・フェデレーションを構成します。

解決策

Oracle Web Services Manager (OWSM) WS-TrustポリシーをWebサービスおよびクライアントにアタッチして、Oracle STSおよびMicrosoft ADFS 2.0 STSを構成してセキュリティ・ドメイン間の信頼を確立します。

コンポーネント

- Oracle WebLogic Server

- Oracle Web Services Manager(OWSM)

- Oracle STS

- Microsoft ADFS 2.0 STS

- 保護するWebサービスおよびクライアント・アプリケーション

5.2 ユース・ケースの概要

このユース・ケースは、次の操作に必要な手順を示します。

- 適切なOWSMセキュリティ・ポリシーをアタッチして、SAMLベアラー認証を使用したメッセージ・レベルの保護を実行します。
特に、次のポリシーをクライアントおよびサービスにそれぞれアタッチします。

- oracle/wss_sts_issued_saml_bearer_token_over_ssl_client_policyおよびoracle/sts_trust_config_client_templateに基づくポリシー

- oracle/wss_sts_issued_saml_bearer_token_over_ssl_service_policy

- IP-STSとしてMicrosoft ADFS 2.0 STS、RP-STSとしてOracle STSを使用して、Webサービス・フェデレーションを構成します。

サービス、RP-STSおよびIP-STSを保護するには、SSL付きトランスポート・セキュリティを使用します。

5.3 ユース・ケースの実装

ユース・ケースを実装するには、次のタスクを実行します。

- タスク1: Webサービスの構成

- タスク2: RP-STSとしてのOracle STSの構成

- タスク3: IP-STSとしてのMicrosoft ADFS 2.0 STSの構成

- タスク4: Webサービス・クライアントの構成

注意:
次の各項には、Oracle STSおよびMicrosoft ADFS 2.0 STSの高レベルな構成手順が示されています。これらの構成手順の実行方法の詳細は、特定のSTSのドキュメントを参照してください。

- Oracle STSの場合: http://www.oracle.com/technetwork/middleware/id-mgmt/overview/oraclests-166231.html

- Microsoft ADFS 2.0 STSの場合: http://technet.microsoft.com/en-us/library/adfs2(v=ws.10).aspx

5.3.1 タスク1: Webサービスの構成

Webサービスを構成するには:

1. oracle/wss_sts_issued_saml_bearer_token_over_ssl_service_policyポリシーをWebサービスにアタッチします。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する項を参照してください。

2. Oracle STS /wssbearerエンドポイントの署名証明書をOWSMキーストアにインポートします。

3. 信頼する発行者および信頼するDNとして、Oracle STSエンドポイントを定義します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のSAML署名証明書の信頼できる発行者および信頼できる識別名リストの定義に関する項を参照してください。

5.3.2 タスク2: RP-STSとしてのOracle STSの構成

RP-STSとしてOracle STSを構成するには、次の手順を実行します。完全な手順は、http://www.oracle.com/technetwork/middleware/id-mgmt/overview/oraclests-166231.htmlのOracle STSドキュメントを参照してください。

1. ポート14101で一方向SSLが有効になるようにWebLogic Serverを構成します。

2. Oracle STS /wssbearerエンドポイントを次のように構成します。

- ポリシー(URI sts/wss_sts_issued_saml_bearer_token_over_ssl_service_policy)をアタッチします。

- OWSM LRG SAML Validation検証テンプレートを作成して受信SAMLトークンを検証し、それをエンドポイントに適用します。

3. Oracle STSでサービスをリプライ・パーティ・パートナとして追加します。

4. IP-STSとして機能するMicrosoft ADFS 2.0 STSインスタンスを、信頼できるアイデンティティ・プロバイダとして追加します。

1. Microsoft ADFS 2.0 STSインスタンスの発行局パートナ・プロファイルを構成します。

2. Microsoft ADFS 2.0 STSインスタンスを発行局パートナとして追加します。パートナ名として、インスタンスのSAMLアサーションの発行者を指定します。

3. Microsoft ADFS 2.0 STSインスタンスの署名証明書をOWSMキーストアにインポートします。

5.3.3 タスク3: IP-STSとしてのMicrosoft ADFS 2.0 STSの構成

IP-STSとしてMicrosoft ADFS 2.0 STSを構成するには、次の手順を実行します。完全な手順は、http://technet.microsoft.com/en-us/library/adfs2(v=ws.10).aspxのMicrosoft ADFS 2.0 STSドキュメントを参照してください。

1. /usernamemixedエンドポイントが有効であることを確認します。

2. ADFS 2.0管理コンソールを使用して、IP-STSとして機能するOracle STSインスタンスをリライイング・パーティとして追加します。

3. RP-STSのSAMLベアラー・トークンを発行するようにADFS 2.0 STSを構成します。

5.3.4 タスク4: Webサービス・クライアントの構成

Webサービス・クライアントを構成するには:

1. ポリシーoracle/wss_sts_issued_saml_bearer_token_over_ssl_client_policyをアタッチし、Webサービスを参照するように構成します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する項を参照してください。
また、sts.in.orderを、Oracle STSエンドポイントのURIに設定し、その後にADFS 2.0 STSエンドポイントを続けます。次に例を示します。

http://m2.example.com:14100/sts/wssbearer;
http://http://m1.example.com/adfs/services/trust/13/usernamemixed

2. oracle/sts_trust_config_client_templateからポリシーを作成し、それを次のように変更し、クライアントにアタッチします。

- ポートURIをADFS 2.0 STSエンドポイントに設定します。次に例を示します。

http://m1.example.com/adfs/services/trust/13/usernamemixed

- クライアント・ポリシーURI oracle/wss_sts_issued_saml_bearer_token_over_ssl_client_policyを設定します。

完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のWebサービス・ポリシーの作成および編集に関する項を参照してください。

3. oracle/sts_trust_config_client_templateからポリシーを作成し、それを次のように変更し、クライアントにアタッチします。

- ポートURIをOracle STSエンドポイントに設定します。次に例を示します。

http://m2.example.com:14100/sts/wssbearer

- WSDL URIをOracle STSエンドポイントに設定します。次に例を示します。

http://m2.example.com:14100/sts/wss11user?wsdl

完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のWebサービス・ポリシーの作成および編集に関する項を参照してください。

5.4 その他の情報源

この章のソリューションが実装されているその他のテクノロジおよびツールの詳細は、次の参考資料を参照してください。

- Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理

- Oracle Web Services Managerの理解

- http://www.oracle.com/technetwork/middleware/id-mgmt/overview/oraclests-166231.htmlのOracle STSドキュメント

- Microsoft ADFS 2.0 STS: http://technet.microsoft.com/en-us/library/adfs2(v=ws.10).aspx

6 IP-STSとしてOracle STS、RP-STSとしてMicrosoft ADFS 2.0 STSを使用したフェデレーションの構成

この章では、Identity Provided STS (IP-STS)としてOracle STS、Replying Party (RP-STS)としてMicrosoft ADFS 2.0 STSを使用したWebサービス・フェデレーションの構成方法について説明します。

この章には、次のセクションがあります。

- ユース・ケース・サマリー

- ユース・ケースの概要

- ユース・ケースの実装

- その他の情報源

6.1 ユース・ケース・サマリー

ユース・ケース・サマリーは、この章の情報が自分のニーズに合致するかどうかを迅速に判断するのに役立ちます。

次の表は、ユース・ケースの目標、ソリューションおよびコンポーネントをまとめたものです。必要なドキュメントへのリンクも提供されます。

ユース・ケース

IP-STSとしてOracle STS、RP-STSとしてMicrosoft ADFS 2.0 STSを使用したWebサービス・フェデレーションを構成します。

解決策

Oracle Web Services Manager (OWSM) WS-TrustポリシーをWebサービスおよびクライアントにアタッチして、Oracle STSおよびMicrosoft ADFS 2.0 STSを構成してセキュリティ・ドメイン間の信頼を確立します。

コンポーネント

- Oracle WebLogic Server

- Oracle Web Services Manager(OWSM)

- Oracle STS

- Microsoft ADFS 2.0 STS

- 保護するWebサービスおよびクライアント・アプリケーション

6.2 ユース・ケースの概要

このユース・ケースは、次の操作に必要な手順を示します。

- SAML鍵所有者(HOK)認証を使用してメッセージ・レベルの保護を実行するため、適切なOWSMセキュリティ・ポリシーをアタッチします。
特に、次のポリシーをクライアントおよびサービスにそれぞれアタッチします。

- oracle/wss11_sts_issued_saml_hok_with_message_protection_client_policyおよびoracle/sts_trust_config_client_templateに基づくポリシー

- oracle/wss11_sts_issued_saml_hok_with_message_protection_service_policy

- IP-STSとしてOracle STS、RP-STSとしてMicrosoft ADFS 2.0 STSを使用して、Webサービス・フェデレーションを構成します。

6.3 ユース・ケースの実装

この使用例は、次のタスクで構成されています。

- タスク1: Webサービスの構成

- タスク2: RP-STSとしてのMicrosoft ADFS 2.0 STSの構成

- タスク3: IP-STSとしてのOracle STSの構成

- タスク4: Webサービス・クライアントの構成

6.3.1 タスク1: Webサービスの構成

Webサービスを構成するには:

1. oracle/wss11_sts_issued_saml_hok_with_message_protection_service_policyをWebサービスにアタッチします。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のポリシーのアタッチに関する項を参照してください。

2. ADFS 2.0 STS /issuedtokensymmetricbasic256エンドポイントの署名証明書をOWSMキーストアにインポートします。

3. 信頼する発行者および信頼するDNとしてADFS 2.0 STSエンドポイントを定義します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のSAML署名証明書の信頼できる発行者および信頼できる識別名リストの定義に関する項を参照してください。

6.3.2 タスク2: RP-STSとしてのMicrosoft ADFS 2.0 STSの構成

RP-STSとしてMicrosoft ADFS 2.0 STSを構成するには、次の手順を実行します。完全な手順は、http://technet.microsoft.com/en-us/library/adfs2(v=ws.10).aspxのOracle STSドキュメントを参照してください。

1. /issuedtokensymmetricbasic256エンドポイントが有効であることを確認します。

2. ADFS 2.0管理コンソールを使用して、サービスをリライイング・パーティとして追加します。

3. ADFS 2.0管理コンソールを使用して、IP-STSとして機能するOracle STSインスタンスを信頼できるクレーム・プロバイダとして追加します。

6.3.3タスク3: IP-STSとしてのOracle STSの構成

IP-STSとしてOracle STSを構成するには、次の手順を実行します。完全な手順は、http://www.oracle.com/technetwork/middleware/id-mgmt/overview/oraclests-166231.htmlのOracle STSドキュメントを参照してください。

1. Oracle STS /wss11userエンドポイントを次のように構成します。

- ポリシー(URI sts/wss11_username_token_with message_protection_service_policy)をアタッチします。

- OWSM LRG UN Validation検証テンプレートを作成して受信トークンを検証し、それをエンドポイントに適用します。

2. Oracle STSで、RP-STSとして機能するMicrosoft ADFS 2.0 STSインスタンスを、リライイング・パートナ・パーティとして追加します。

3. Oracle STSでオーディエンス制限条件を有効にします。
ADFS 2.0では、クレーム・プロバイダのSAMLアサーションに対してAudienceRestrictionUriの設定を要求しますが、Oracle STSが発行するアサーションではこれがデフォルトで設定されないため、この手順が必要になります。

4. Oracle STSが使用する256バイトの証明鍵を発行する、個別の発行テンプレートを構成します。

6.3.4 タスク4: Webサービス・クライアントの構成

Webサービス・クライアントを構成するには:

1. oracle/wss11_sts_issued_saml_hok_with_message_protection_client_policyからポリシーを作成し、次のように変更して、クライアントにアタッチします。

- アルゴリズム・スイートをBasic128ではなくBasic256に設定します。

- 導出キーを有効に設定します。

- sts.in.orderを、ADFS 2.0 STSエンドポイントのURIに設定し、その後にOracle STSエンドポイントを続けます。次に例を示します。

http://m1.example.com/adfs/services/trust/13/issuedtokensymmetricbasic256;
http://m2.example.com:14100/sts/wss11user

2. oracle/sts_trust_config_client_templateからポリシーを作成し、それを次のように変更し、クライアントにアタッチします。

- ポートURIをADFS 2.0 STSエンドポイントに設定します。次に例を示します。

http://m1.example.com/adfs/services/trust/13/issuedtokensymmetricbasic256

- クライアント・ポリシーURIを手順1で作成したポリシーに設定します。

oracle/wss11_sts_issued_saml_hok_with_message_protection_client_policy_adfs

3. oracle/sts_trust_config_client_templateからポリシーを作成し、それを次のように変更し、クライアントにアタッチします。

- ポートURIをOracle STSエンドポイントに設定します。次に例を示します。

http://m2.example.com:14100/sts/wss11user

- WSDL URIをOracle STSエンドポイントに設定します。

6.4 その他の情報源

この章のソリューションが実装されているその他のテクノロジおよびツールの詳細は、次の参考資料を参照してください。

- Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理

- Oracle Web Services Managerの理解

- http://www.oracle.com/technetwork/middleware/id-mgmt/overview/oraclests-166231.htmlのOracle STSドキュメント

- Microsoft ADFS 2.0 STS: http://technet.microsoft.com/en-us/library/adfs2(v=ws.10).aspx

7 OpenSSO STSでのWS-Trustを使用したSAML HOKの構成

この章では、OpenSSO STSでWS-Trustを使用してメッセージ保護付きでSAML鍵所有者(HOK)を構成する方法について説明します。

この章には、次のセクションがあります。

- ユース・ケース・サマリー

- ユース・ケースの概要

- ユース・ケースの実装

- その他の情報源

7.1 ユース・ケース・サマリー

ユース・ケース・サマリーは、この章の情報が自分のニーズに合致するかどうかを迅速に判断するのに役立ちます。

次の表は、ユース・ケースの目標、ソリューションおよびコンポーネントをまとめたものです。必要なドキュメントへのリンクも提供されます。

ユース・ケース

OpenSSO STSでWS-Trustを使用してメッセージ保護付きでSAML鍵所有者(HOK)を構成します。

解決策

WS-Trustポリシーを使用してメッセージ保護付きでOracle Web Services Manager (OWSM) SAML HOKをWebサービスおよびクライアントにアタッチし、OpenSSO STSを構成します。

コンポーネント

- Oracle WebLogic Server

- Oracle Web Services Manager(OWSM)

- OpenSSO STS

- 保護するWebサービスおよびクライアント・アプリケーション

7.2 ユース・ケースの概要

このユース・ケースは、次の操作に必要な手順を示します。

- OpenSSO STSでWS-Trustを使用してメッセージ・レベルの保護付きでSAML HOKを実行するため、適切なOWSMセキュリティ・ポリシーをアタッチします。
WS-Trust 1.3仕様は、セキュリティ・トークンのリクエストおよび発行を行う際の枠組みを提供するWS-Securityへの拡張機能と、ブローカ・トラスト関係への拡張機能を定義します。WS-Trust拡張機能は、セキュリティ・トークンの発行、更新および検証を行う方法を提供しています。Webサービス・クライアントとWebサービスとの間の通信を保護するには、両者がセキュリティ資格証明を交換する必要があります。WS-Trust仕様で定義されているように、これらの資格証明は、信頼ブローカとして機能する信頼できるセキュリティ・トークン・サービス(STS)から取得できます。つまり、Webサービス・クライアントおよびWebサービスは、明示的に相互に信頼し合っていませんが、両方がSTSを信頼しているため、暗黙的に相互に信頼し合っています。詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理のWebサービスWS-Trustの概要に関する項を参照してください。

特に、次のポリシーをクライアントおよびサービスにそれぞれアタッチします。

- oracle/wss11_sts_issued_saml_hok_with_message_protection_client_policy

- oracle/wss11_sts_issued_saml_hok_with_message_protection_service_policyおよびoracle/sts_trust_config_service_policy

- OpenSSO STSを構成します。

このユース・ケースは、Java EE WebサービスおよびSOAコンポジット・クライアントで構成されます。

7.3 ユース・ケースの実装

このユース・ケースでは、OpenSSO STSでWS-Trustを使用してSAML HOKメッセージ保護を実装する次のタスクについて説明します。

- タスク1: OpenSSO STSの構成

- タスク2: OpenSSO STSでWS-Trustを使用してメッセージ保護付きでSAML鍵所有者を構成

7.3.1 タスク1: OpenSSO STSの構成

OpenSSO STSを構成するには

1. OpenSSO STSインスタンスにログインします。

2. 「構成」→「グローバル」→「セキュリティ・トークン・サービス」に移動します。

3. 「セキュリティ」→セキュリティ・メカニズム→STSサービスによって受け入れられるセキュリティ・トークンで、すべてのオプションを有効にします。

4. ユーザー・トークンの資格証明セクションで、必要に応じてユーザー名とパスワードを設定して、トークンの新しい資格証明を追加します。
この例の場合、ユーザー名とパスワードをtestに設定します。

5. On Behalf ofトークン・セクションで、「On Behalf ofトークンの認証チェーン」ドロップダウンリストから「ldapService」eを選択します。

6. 「署名」セクションで、次のオプションを有効にします。
- リクエストの署名は検証済

- レスポンスの署名は有効(「本文」および「タイムスタンプ」を選択します)

7. 「暗号化」セクションで、次のオプションを有効にします。
- 「リクエストは復号化されているか」(「本文」および「ヘッダー」を選択します)

- レスポンスは暗号化されているか

8. 「暗号化アルゴリズム」ドロップダウン・リストから「AES」を選択し、暗号化強度ドロップダウン・リストから128を選択します。

9. メッセージ保護要求者トークンとともにWS-Security 1.1 Kerberosトークンをサポートするには、「Kerberosの構成」セクションで次の値を構成します。

表7-1 メッセージ保護構成を含むOpenSSO STS Kerberosトークン

構成するプロパティ

指定する目的

Kerberosドメイン・サーバー

ドメイン・サーバーの完全修飾ホスト名。

Kerberosドメイン

ドメイン名。

Kerberosサービス・プリンシパル

サービス・プリンシパル名(<ホスト>/<マシン名>@<REALM NAME>の形式)

Kerberosキー・タブ・ファイル

STS用に作成されたキー・タブ・ファイルの場所。

Kerberos署名を検証する

JDK6が使用されている場合にのみ有効です。

10. SSLをサポートするには、次の手順を実行します。

1. トークン発行属性セクションで、OpenSSOインスタンスに基づいてSSLエンドポイントを編集します。

2. 「署名」で、トランスポートがSSLにより保護されている場合に署名の検証を無効にするオプションを有効にします。

3. 「暗号化」で、トランスポートがSSLにより保護されている場合に復号化を無効にするオプションを有効にします。

11. OpenSSO STSをホストするサーバー上でSSLをサポートするには:

- OpenSSO STSをホストするWebLogic Serverで、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のSSLのキーストアの構成に関する項で説明する手順を実行します。

- Open SSO STSをホストするGlassfishサーバーの場合は、次の手順を実行します。

1. 次のコマンドを発行することによりアプリケーション・サーバーのための新しい鍵ペアを生成します。
keytool -genkey -keyalg <algorithm for generating the key pair> -keystore keystore.jks -validity <days> -alias <alias_name>

次に例を示します。

keytool -genkey -keyalg RSA -keystore <glassfish_install_dir>/domains/<sts_deploy_domain>/config/keystore.jks -validity 365 -alias owsm

氏名の入力を求めるプロンプトが表示されたら、証明書を生成する対象のマシンのホスト名を入力します。他のプロンプトで、該当する詳細を入力します。

2. 次のコマンドを発行することにより証明書署名リクエスト(CSR)を生成します。
keytool -certreq -alias owsm -file owsm.csr -keystore keystore.jks -storepass changeit

有効な証明書を取得するために、生成後にowsm.csrファイルに書き込まれたリクエストを認証局に送信する必要があります。たとえば、OpenSSO QAチームによって維持されている証明書管理サーバー(https://mahogany.red.iplanet.com)に送信します。

3. 証明書管理サーバー(https://mahogany.red.iplanet.com)にアクセスし、左側のペインでSSLサーバーをクリックし、.csrファイルの「BEGIN CERTIFICATE REQUEST」から「END CERTIFICATE REQUEST」までの内容をPKCS # 10リクエスト・フィールドに貼り付けます。
必要に応じてその他のフィールドに入力し、リクエストを送信します。リクエストが承認されると、同じページの取得タブから証明書を取得できます。

4. BEGIN CERTIFICATEからEND CERTIFICATEの証明書の内容(PKCS # 7形式)を.cert拡張子のファイルにコピーし、次のkeytoolコマンドを使用することによりサーバー証明書を<glassfish_install_dir>/domains/<sts_deploy_domain>/config/keystore.jksファイルにインポートします。
keytool -import -v -alias owsm -file owsm.cert -keystore keystore.jks -storepass changeit

証明書を信頼する場合は、プロンプトが表示されたら「YES」を入力します。

5. 認証局のSSL証明書にアクセスします。https://mahogany.red.iplanet.comにアクセスし、SSLサーバー→取得タブ→証明書のリスト→「検索」に移動します。ページの最初の「詳細」ボタンをクリックし、BASE64でエンコードされた証明書を別の.certファイルにコピーします例: mahogany.cert

6. 次のコマンドを使用して、この証明書を別名rootcaとして<glassfish_install_dir>/domains/<sts_deploy_domain>/config/cacerts.jksファイルにインポートします。
keytool -import -v -alias rootca -file mahogany.cert -keystore cacerts.jks -storepass changeit

7. クライアント側のtruststore.jksファイルについても、前述の手順を繰り返すことが必要になる場合があります。該当ファイルから既存のrootca別名を削除し、前述のように新たにインポートします(キーストア・ファイルの場所を変更します)。

8. 新しい証明書を使用してGlassFishを構成するには、http://hostname:admin-port/で管理コンソールにアクセスし、「構成」→HTTPサービス→http-listener2 (デフォルトのSSL有効ポート)→「SSL」に移動して、証明書のニックネームをs1as (自己署名証明書)からowsmに変更します。

9. Glassfishを再起動します。

7.3.2 タスク2: OpenSSO STSでWS-Trustを使用してメッセージ保護付きでSAML鍵所有者を構成

OpenSSO STSでWS-Trustを使用してメッセージ保護付きでSAML鍵所有者を構成するには:

1. STSサービス・ポリシーを構成します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』の自動ポリシー構成のポリシーの構成に関する項を参照してください。
後述するように、oracle/sts_trust_config_service_policyをコピーし、要求者トークン・タイプに基づいてポリシー構成を編集します。

メッセージ保護要求者トークンでWS-Security 1.0ユーザー名トークンをサポートするには:

- orasp:port-uri="http://<host>:<port>/openssosts/sts/wss10un"

- orasp:wsdl-uri="http://<host>:<port>/openssosts/sts/wss10un?wsdl" (オプション)

メッセージ保護要求者トークンでSSL経由でWS-Security 1.0ユーザー名トークンをサポートするには:

- orasp:port-uri="https://<host>:<sslport>/openssosts/sts/tlswss10un"

- orasp:wsdl-uri="https://<host>:<sslport>/openssosts/sts/tlswss10un?wsdl" (オプション)

メッセージ保護要求者トークンでWS-Security 1.0 X509トークンをサポートするには:

- orasp:port-uri="http://<host>:<port>/openssosts/sts/wss10x509"

- orasp:wsdl-uri="http://<host>:<port>/openssosts/sts/wss10x509?wsdl" (オプション)

メッセージ保護要求者トークンでWS-Security 1.1 Kerberosトークンをサポートするには:

- orasp:port-uri="http://<host>:<port>/openssosts/sts/wss11kerberos"

- orasp:wsdl-uri="http://<host>:<port> (オプション)

2. Webサービスを構成します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』の自動ポリシー構成のWebサービスの構成に関する項を参照してください。
手順1で作成したポリシー、その後でoracle/wss11_sts_issued_saml_hok_with_message_protection_service_policyをJava EE Webサービスにアタッチします。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のFusion Middleware Controlを使用した単一サブジェクトへのポリシーの直接アタッチに関する項を参照してください。

注意:
デフォルトでは、oracle/wss11_sts_issued_saml_hok_with_message_protection_service_policyポリシーはトークン・タイプSAML 1.1により構成されています。トークン・タイプをSAML 2.0に構成する場合、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のWebサービス・ポリシーのクローニングに関する項の説明に従って、ポリシーをコピーして編集する必要があります。(この値はクライアント・ポリシーに一致する必要があります。)

3. Webサービス・クライアント・ポリシーを構成します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』の自動ポリシー構成のWebサービス・クライアントの構成に関する項を参照してください。
SOAコンポジット・クライアントにoracle/wss11_sts_issued_saml_hok_with_message_protection_client_policyポリシーをアタッチし、要求者トークンの必要に応じて、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のoracle/ws11_sts_issued_saml_hok_with_message_protection_client_templateに関する項に記載されているクライアント構成プロパティをオーバーライドします。

sts.auth.user.csf.keyには、デフォルトのOpenSSO STS構成で使用可能なユーザー資格証明を設定する必要があります。つまり、ユーザー名test、パスワードtestです。ただし、X509要求者トークンでは設定する必要はありません。

ポリシーをアタッチする場合のクライアント構成プロパティのオーバーライドの詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のFusion Middleware Controlを使用したWebサービス・クライアントへのポリシーの直接アタッチに関する項を参照してください。

注意:
デフォルトでは、oracle/wss11_sts_issued_saml_hok_with_message_protection_client_policyポリシーはトークン・タイプSAML 1.1により構成されています。トークン・タイプをSAML 2.0に構成する場合、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のWebサービス・ポリシーのクローニングに関する項の説明に従って、ポリシーをコピーして編集する必要があります。

7.4 その他の情報源

この章のソリューションが実装されているその他のテクノロジおよびツールの詳細は、次の参考資料を参照してください。

- Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理

- Oracle Web Services Managerの理解

- http://download.oracle.com/javase/6/docs/technotes/tools/windows/keytool.htmlのkeytool Javadoc

8 OpenSSO STSでWS-Trustを使用してSAML送信者保証を構成

この章では、OpenSSO STSでWS-Trustを使用してSAML送信者保証を構成する方法について説明します。

この章には、次のセクションがあります。

- ユース・ケース・サマリー

- ユース・ケースの概要

- ユース・ケースの実装

- その他の情報源

8.1 ユース・ケース・サマリー

ユース・ケース・サマリーは、この章の情報が自分のニーズに合致するかどうかを迅速に判断するのに役立ちます。

次の表は、ユース・ケースの目標、ソリューションおよびコンポーネントをまとめたものです。必要なドキュメントへのリンクも提供されます。

ユース・ケース

OpenSSO STSでWS-Trustを使用してSAML送信者保証を構成します。

解決策

WS-Trustポリシーを使用してメッセージ保護付きでOracle Web Services Manager (OWSM) SAML送信者保証をWebサービス・クライアントにアタッチし、メッセージ保護ポリシーを使用してOWSM SAML送信者保証をWebサービスにアタッチして、OpenSSO STSを構成します。

コンポーネント

- Oracle WebLogic Server

- Oracle Web Services Manager(OWSM)

- OpenSSO STS

- 保護するWebサービスおよびクライアント・アプリケーション

8.2 ユース・ケースの概要

このユース・ケースは、次の操作に必要な手順を示します。

- OpenSSO STSでWS-Trustを使用してメッセージ・レベル保護付きでSAML送信者保証を実行するため、適切なOWSMセキュリティ・ポリシーをアタッチします。
WS-Trust 1.3仕様は、セキュリティ・トークンのリクエストおよび発行を行う際の枠組みを提供するWS-Securityへの拡張機能と、ブローカ・トラスト関係への拡張機能を定義します。WS-Trust拡張機能は、セキュリティ・トークンの発行、更新および検証を行う方法を提供しています。Webサービス・クライアントとWebサービスとの間の通信を保護するには、両者がセキュリティ資格証明を交換する必要があります。WS-Trust仕様で定義されているように、これらの資格証明は、信頼ブローカとして機能する信頼できるセキュリティ・トークン・サービス(STS)から取得できます。つまり、Webサービス・クライアントおよびWebサービスは、明示的に相互に信頼し合っていませんが、両方がSTSを信頼しているため、暗黙的に相互に信頼し合っています。詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理のWebサービスWS-Trustの概要に関する項を参照してください。

特に、次のポリシーをクライアントおよびサービスにそれぞれアタッチします。

- oracle/wss11_sts_issued_saml_with_message_protection_client_policyおよびoracle/sts_trust_config_client_policy

- oracle/wss11_saml_token_with_message_protection_service_policy

- OpenSSO STSを構成します。

このユース・ケースは、Java EE WebサービスおよびSOAコンポジット・クライアントで構成されます。

8.3 ユース・ケースの実装

このユース・ケースでは、OpenSSO STSでWS-Trustを使用してメッセージ保護付きでSAML送信者保証を実装する次のタスクについて説明します。

- タスク1: OpenSSO STSの構成

- タスク2: OpenSSO STSでWS-Trustを使用してメッセージ保護付きでSAML送信者保証を構成

8.3.1 タスク1: OpenSSO STSの構成

OpenSSO STSを構成するには:

1. OpenSSO STSインスタンスにログインします。

2. 「構成」→「グローバル」→「セキュリティ・トークン・サービス」に移動します。

3. 「セキュリティ」→セキュリティ・メカニズム→STSサービスによって受け入れられるセキュリティ・トークンで、すべてのオプションを有効にします。

4. ユーザー・トークンの資格証明セクションで、必要に応じてユーザー名とパスワードを設定して、トークンの新しい資格証明を追加します。
この例の場合、ユーザー名とパスワードをtestに設定します。

5. On Behalf ofトークン・セクションで、「On Behalf ofトークンの認証チェーン」ドロップダウンリストから「ldapService」eを選択します。

6. 「署名」セクションで、次のオプションを有効にします。
- リクエストの署名は検証済

- レスポンスの署名は有効(「本文」および「タイムスタンプ」を選択します)

7. 「暗号化」セクションで、次のオプションを有効にします。
- 「リクエストは復号化されているか」(「本文」および「ヘッダー」を選択します)

- レスポンスは暗号化されているか

8. 「暗号化アルゴリズム」ドロップダウン・リストから「AES」を選択し、暗号化強度ドロップダウン・リストから128を選択します。

9. メッセージ保護要求者トークンとともにWS-Security 1.1 Kerberosトークンをサポートするには、「Kerberosの構成」セクションで次の値を構成します。

表8-1 メッセージ保護構成を含むOpenSSO STS Kerberosトークン

構成するプロパティ

指定する目的

Kerberosドメイン・サーバー

ドメイン・サーバーの完全修飾ホスト名。

Kerberosドメイン

ドメイン名。

Kerberosサービス・プリンシパル

サービス・プリンシパル名(<ホスト>/<マシン名>@<REALM NAME>の形式)

Kerberosキー・タブ・ファイル

STS用に作成されたキー・タブ・ファイルの場所。

Kerberos署名を検証する

JDK6が使用されている場合にのみ有効です。

10. SSLをサポートするには、次の手順を実行します。

1. トークン発行属性セクションで、OpenSSOインスタンスに基づいてSSLエンドポイントを編集します。

2. 「署名」で、トランスポートがSSLにより保護されている場合に署名の検証を無効にするオプションを有効にします。

3. 「暗号化」で、トランスポートがSSLにより保護されている場合に復号化を無効にするオプションを有効にします。

11. OpenSSO STSをホストするサーバー上でSSLをサポートするには:

- OpenSSO STSをホストするWebLogic Serverで、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のSSLのキーストアの構成に関する項で説明する手順を実行します。

- Open SSO STSをホストするGlassfishサーバーの場合は、次の手順を実行します。

1. 次のコマンドを発行することによりアプリケーション・サーバーのための新しい鍵ペアを生成します。
keytool -genkey -keyalg <algorithm for generating the key pair> -keystore keystore.jks -validity <days> -alias <alias_name>

次に例を示します。

keytool -genkey -keyalg RSA -keystore <glassfish_install_dir>/domains/<sts_deploy_domain>/config/keystore.jks -validity 365 -alias owsm

氏名の入力を求めるプロンプトが表示されたら、証明書を生成する対象のマシンのホスト名を入力します。他のプロンプトで、該当する詳細を入力します。

2. 次のコマンドを発行することにより証明書署名リクエスト(CSR)を生成します。
keytool -certreq -alias owsm -file owsm.csr -keystore keystore.jks -storepass changeit

有効な証明書を取得するために、生成後にowsm.csrファイルに書き込まれたリクエストを認証局に送信する必要があります。たとえば、OpenSSO QAチームによって維持されている証明書管理サーバー(https://mahogany.red.iplanet.com)に送信します。

3. 証明書管理サーバー(https://mahogany.red.iplanet.com)にアクセスし、左側のペインでSSLサーバーをクリックし、.csrファイルの「BEGIN CERTIFICATE REQUEST」から「END CERTIFICATE REQUEST」までの内容をPKCS # 10リクエスト・フィールドに貼り付けます。
必要に応じてその他のフィールドに入力し、リクエストを送信します。リクエストが承認されると、同じページの取得タブから証明書を取得できます。

4. BEGIN CERTIFICATEからEND CERTIFICATEの証明書の内容(PKCS # 7形式)を.cert拡張子のファイルにコピーし、次のkeytoolコマンドを使用することによりサーバー証明書を<glassfish_install_dir>/domains/<sts_deploy_domain>/config/keystore.jksファイルにインポートします。
keytool -import -v -alias owsm -file owsm.cert -keystore keystore.jks -storepass changeit

証明書を信頼する場合は、プロンプトが表示されたら「YES」を入力します。

5. 認証局のSSL証明書にアクセスします。https://mahogany.red.iplanet.comにアクセスし、SSLサーバー→取得タブ→証明書のリスト→「検索」に移動します。ページの最初の「詳細」ボタンをクリックし、BASE64でエンコードされた証明書を別の.certファイルにコピーします例: mahogany.cert

6. 次のコマンドを使用して、この証明書を別名rootcaとして<glassfish_install_dir>/domains/<sts_deploy_domain>/config/cacerts.jksファイルにインポートします。
keytool -import -v -alias rootca -file mahogany.cert -keystore cacerts.jks -storepass changeit

7. クライアント側のtruststore.jksファイルについても、前述の手順を繰り返すことが必要になる場合があります。該当ファイルから既存のrootca別名を削除し、前述のように新たにインポートします(キーストア・ファイルの場所を変更します)。

8. 新しい証明書を使用してGlassFishを構成するには、http://hostname:admin-port/で管理コンソールにアクセスし、「構成」→HTTPサービス→http-listener2 (デフォルトのSSL有効ポート)→「SSL」に移動して、証明書のニックネームをs1as (自己署名証明書)からowsmに変更します。

9. Glassfishを再起動します。

8.3.2 タスク2: OpenSSO STSでWS-Trustを使用してメッセージ保護付きでSAML送信者保証を構成

OpenSSO STSでWS-Trustを使用してメッセージ保護付きでSAML送信者保証を構成するには:

1. クライアント側のSTSポリシーを構成します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』の自動ポリシー構成のポリシーの構成に関する項を参照してください。

注意:
信頼はWebサービスとクライアント間に存在するために、SAML送信者保証確認に自動ポリシー構成は使用できません。詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のWS-Trustを使用したSAML送信者保証の構成に関する項を参照してください。

oracle/sts_trust_config_client_policyをコピーし、要求者トークン・タイプに基づいてポリシー構成を編集します。

メッセージ保護要求者トークンでWS-Security 1.0ユーザー名トークンをサポートするには:

- orasp:policy-reference-uri="oracle/wss10_username_token_with_message_protection_client_policy"

- orasp:port-endpoint="http://<host>:<port>/openfm/SecurityTokenService/#wsdl.endpoint(SecurityTokenService/ISecurityTokenService_Port_UN_WSS10_SOAP12)"

- orasp:port-uri="http://<host>:<port>/openssosts/sts/wss10un"

- orasp:sts-keystore-recipient-alias="test"

メッセージ保護要求者トークンでSSL経由でWS-Security 1.0ユーザー名トークンをサポートするには:

- orasp:policy-reference-uri="oracle/wss_username_token_over_ssl_client_policy"

- orasp:port-endpoint="http://localhost:8080/openfm/SecurityTokenService/#wsdl.endpoint(SecurityTokenService/ISecurityTokenService_Port_TLS_UN_WSS10_SOAP12)"

- orasp:port-uri="https://<host>:<sslport>/openssosts/sts/tlswss10un"

- orasp:sts-keystore-recipient-alias="test"

メッセージ保護要求者トークンでWS-Security 1.0 X509トークンをサポートするには:

- orasp:policy-reference-uri="oracle/wss10_x509_token_with_message_protection_client_policy"

- orasp:port-endpoint="http://localhost:8080/openfm/SecurityTokenService/#wsdl.endpoint(SecurityTokenService/ISecurityTokenService_Port_X509_WSS10_SOAP12)"

- orasp:port-uri="http://<host>:<port>/openssosts/sts/wss10x509"

- orasp:sts-keystore-recipient-alias="test"

2. Java EE Webサービスにoracle/wss11_saml_token_with_message_protection_service_policyポリシーをアタッチし(SAML送信者保証のシナリオでは対応する発行済トークン・ポリシーはありません)、サービスの暗号化鍵の別名およびパスワードを指定するためにkeystore.enc.csf.keyをオーバーライドします。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のFusion Middleware Controlを使用した単一サブジェクトへのポリシーの直接アタッチに関する項を参照してください。

注意:
デフォルトでは、oracle/wss11_saml_hok_with_message_protection_service_policyポリシーはトークン・タイプSAML 1.1により構成されています。トークン・タイプをSAML 2.0に構成する場合、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のWebサービス・ポリシーのクローニングに関する項の説明に従って、ポリシーをコピーして編集する必要があります。

3. 手順1で作成したポリシー、その後でoracle/wss11_sts_issued_saml_with_message_protection_client_policyポリシーをSOAコンポジット・クライアントにアタッチし、要求者トークンの必要に応じて、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のwss11_sts_issued_saml_with_message_protection_client_templateに関する項に記載されているクライアント構成プロパティをオーバーライドします。
完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のFusion Middleware Controlを使用した単一サブジェクトへのポリシーの直接アタッチに関する項を参照してください。

「On Behalf Of」ユース・ケースは、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のwss11_sts_issued_saml_with_message_protection_client_templateに関する項に示されているように、sts.auth.on.behalf.of.csf.keyおよびon.behalf.ofプロパティに依存します。詳細は、『Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理』のOn Behalf Ofユース・ケースに関する項を参照してください。

on.behalf.ofプロパティをtrueに設定する必要があります。sts.auth.on.behalf.of.csf.keyには、「on behalf of」ユース・ケースをサポートするデフォルトのOpenSSO STS構成で使用可能なユーザー資格証明を設定する必要があります。つまり、demo、パスワードchangeitです。

注意:
ポリシーをアタッチする場合のクライアント構成プロパティのオーバーライドの詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のFusion Middleware Controlを使用したWebサービス・クライアントへのポリシーの直接アタッチに関する項を参照してください。

4. ユーザーにかわって(on behalf of) OpenSSO STSからのトークンをリクエストする権限をクライアント・アプリケーションに付与するために、WSIdentityPermissionをwsm-agent-core.jarに付与します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のWSIdentityPermission権限の設定に関する項を参照してください。

8.4 その他の情報源

この章のソリューションが実装されているその他のテクノロジおよびツールの詳細は、次の参考資料を参照してください。

- Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理

- Oracle Web Services Managerの理解

- http://download.oracle.com/javase/6/docs/technotes/tools/windows/keytool.htmlのkeytool Javadoc

9 OpenSSO STSでWS-Trustを使用したSAMLベアラーの構成

この章では、OpenSSO STSでWS-Trustを使用したSAMLベアラーの構成方法について説明します。

この章には、次のセクションがあります。

- ユース・ケース・サマリー

- ユース・ケースの概要

- ユース・ケースの実装

- その他の情報源

9.1 ユース・ケース・サマリー

ユース・ケース・サマリーは、この章の情報が自分のニーズに合致するかどうかを迅速に判断するのに役立ちます。

次の表は、ユース・ケースの目標、ソリューションおよびコンポーネントをまとめたものです。必要なドキュメントへのリンクも提供されます。

ユース・ケース

OpenSSO STSでWS-Trustを使用して、SAMLベアラーを構成します。

解決策

WS-Trustポリシーを使用してメッセージ保護付きでOracle Web Services Manager (OWSM) SAMLベアラーをWebサービスとクライアントにアタッチし、OpenSSO STSを構成します。

コンポーネント

- Oracle WebLogic Server

- Oracle Web Services Manager(OWSM)

- OpenSSO STS

- 保護するWebサービスおよびクライアント・アプリケーション

9.2 ユース・ケースの概要

このユース・ケースは、次の操作に必要な手順を示します。

- OpenSSO STSでWS-Trustを使用してメッセージ・レベルの保護付きでSAMLベアラーを実行するため、適切なOWSMセキュリティ・ポリシーをアタッチします。
WS-Trust 1.3仕様は、セキュリティ・トークンのリクエストおよび発行を行う際の枠組みを提供するWS-Securityへの拡張機能と、ブローカ・トラスト関係への拡張機能を定義します。WS-Trust拡張機能は、セキュリティ・トークンの発行、更新および検証を行う方法を提供しています。Webサービス・クライアントとWebサービスとの間の通信を保護するには、両者がセキュリティ資格証明を交換する必要があります。WS-Trust仕様で定義されているように、これらの資格証明は、信頼ブローカとして機能する信頼できるセキュリティ・トークン・サービス(STS)から取得できます。つまり、Webサービス・クライアントおよびWebサービスは、明示的に相互に信頼し合っていませんが、両方がSTSを信頼しているため、暗黙的に相互に信頼し合っています。詳細は、Oracle Web Services ManagerによるWebサービスの保護およびポリシーの管理のWebサービスWS-Trustの概要に関する項を参照してください。

特に、次のポリシーをクライアントおよびサービスにそれぞれアタッチします。

- oracle/ws11_sts_issued_saml_bearer_token_over_ssl_client_policy

- oracle/wss11_sts_issued_saml_bearer_token_over_ssl_service_policyおよびoracle/sts_trust_config_service_policy

- OpenSSO STSを構成します。

このユース・ケースは、Java EE WebサービスおよびSOAコンポジット・クライアントで構成されます。

9.3 ユース・ケースの実装

このユース・ケースは、OpenSSO STSでWS-Trustを使用したメッセージ保護付きのSAMLベアラーを実装する次のタスクについて説明します。

- タスク1: OpenSSO STSの構成

- タスク2: OpenSSO STSでWS-Trustを使用したメッセージ保護付きのSAMLベアラーの構成

9.3.1 タスク1: OpenSSO STSの構成

OpenSSO STSを構成するには

1. OpenSSO STSインスタンスにログインします。

2. 「構成」→「グローバル」→「セキュリティ・トークン・サービス」に移動します。

3. 「セキュリティ」→セキュリティ・メカニズム→STSサービスによって受け入れられるセキュリティ・トークンで、すべてのオプションを有効にします。

4. ユーザー・トークンの資格証明セクションで、必要に応じてユーザー名とパスワードを設定して、トークンの新しい資格証明を追加します。
この例の場合、ユーザー名とパスワードをtestに設定します。

5. On Behalf ofトークン・セクションで、「On Behalf ofトークンの認証チェーン」ドロップダウンリストから「ldapService」eを選択します。

6. 「署名」セクションで、次のオプションを有効にします。
- リクエストの署名は検証済

- レスポンスの署名は有効(「本文」および「タイムスタンプ」を選択します)

7. 「暗号化」セクションで、次のオプションを有効にします。
- 「リクエストは復号化されているか」(「本文」および「ヘッダー」を選択します)

- レスポンスは暗号化されているか

8. 「暗号化アルゴリズム」ドロップダウン・リストから「AES」を選択し、暗号化強度ドロップダウン・リストから128を選択します。

9. メッセージ保護要求者トークンとともにWS-Security 1.1 Kerberosトークンをサポートするには、「Kerberosの構成」セクションで次の値を構成します。

表9-1 メッセージ保護構成を含むOpenSSO STS Kerberosトークン

構成するプロパティ

指定する目的

Kerberosドメイン・サーバー

ドメイン・サーバーの完全修飾ホスト名。

Kerberosドメイン

ドメイン名。

Kerberosサービス・プリンシパル

サービス・プリンシパル名(<ホスト>/<マシン名>@<REALM NAME>の形式)

Kerberosキー・タブ・ファイル

STS用に作成されたキー・タブ・ファイルの場所。

Kerberos署名を検証する

JDK6が使用されている場合にのみ有効です。

10. SSLをサポートするには、次の手順を実行します。

1. トークン発行属性セクションで、OpenSSOインスタンスに基づいてSSLエンドポイントを編集します。

2. 「署名」で、トランスポートがSSLにより保護されている場合に署名の検証を無効にするオプションを有効にします。

3. 「暗号化」で、トランスポートがSSLにより保護されている場合に復号化を無効にするオプションを有効にします。

11. OpenSSO STSをホストするサーバー上でSSLをサポートするには:

- OpenSSO STSをホストするWebLogic Serverで、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のSSLのキーストアの構成に関する項で説明する手順を実行します。

- Open SSO STSをホストするGlassfishサーバーの場合は、次の手順を実行します。

1. 次のコマンドを発行することによりアプリケーション・サーバーのための新しい鍵ペアを生成します。
keytool -genkey -keyalg <algorithm for generating the key pair> -keystore keystore.jks -validity <days> -alias <alias_name>

次に例を示します。

keytool -genkey -keyalg RSA -keystore <glassfish_install_dir>/domains/<sts_deploy_domain>/config/keystore.jks -validity 365 -alias owsm

氏名の入力を求めるプロンプトが表示されたら、証明書を生成する対象のマシンのホスト名を入力します。他のプロンプトで、該当する詳細を入力します。

2. 次のコマンドを発行することにより証明書署名リクエスト(CSR)を生成します。
keytool -certreq -alias owsm -file owsm.csr -keystore keystore.jks -storepass changeit

有効な証明書を取得するために、生成後にowsm.csrファイルに書き込まれたリクエストを認証局に送信する必要があります。たとえば、OpenSSO QAチームによって維持されている証明書管理サーバー(https://mahogany.red.iplanet.com)に送信します。

3. 証明書管理サーバー(https://mahogany.red.iplanet.com)にアクセスし、左側のペインでSSLサーバーをクリックし、.csrファイルの「BEGIN CERTIFICATE REQUEST」から「END CERTIFICATE REQUEST」までの内容をPKCS # 10リクエスト・フィールドに貼り付けます。
必要に応じてその他のフィールドに入力し、リクエストを送信します。リクエストが承認されると、同じページの取得タブから証明書を取得できます。

4. BEGIN CERTIFICATEからEND CERTIFICATEの証明書の内容(PKCS # 7形式)を.cert拡張子のファイルにコピーし、次のkeytoolコマンドを使用することによりサーバー証明書を<glassfish_install_dir>/domains/<sts_deploy_domain>/config/keystore.jksファイルにインポートします。
keytool -import -v -alias owsm -file owsm.cert -keystore keystore.jks -storepass changeit

証明書を信頼する場合は、プロンプトが表示されたら「YES」を入力します。

5. 認証局のSSL証明書にアクセスします。https://mahogany.red.iplanet.comにアクセスし、SSLサーバー→取得タブ→証明書のリスト→「検索」に移動します。ページの最初の「詳細」ボタンをクリックし、BASE64でエンコードされた証明書を別の.certファイルにコピーします例: mahogany.cert

6. 次のコマンドを使用して、この証明書を別名rootcaとして<glassfish_install_dir>/domains/<sts_deploy_domain>/config/cacerts.jksファイルにインポートします。
keytool -import -v -alias rootca -file mahogany.cert -keystore cacerts.jks -storepass changeit

7. クライアント側のtruststore.jksファイルについても、前述の手順を繰り返すことが必要になる場合があります。該当ファイルから既存のrootca別名を削除し、前述のように新たにインポートします(キーストア・ファイルの場所を変更します)。

8. 新しい証明書を使用してGlassFishを構成するには、http://hostname:admin-port/で管理コンソールにアクセスし、「構成」→HTTPサービス→http-listener2 (デフォルトのSSL有効ポート)→「SSL」に移動して、証明書のニックネームをs1as (自己署名証明書)からowsmに変更します。

9. Glassfishを再起動します。

9.3.2 タスク2: OpenSSO STSでWS-Trustを使用したメッセージ保護付きのSAMLベアラーの構成

OpenSSO STSでWS-Trustを使用してメッセージ保護付きでSAMLベアラーを構成するには:

1. STSサービス・ポリシーを構成します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のSTS用の自動ポリシー構成の設定に関する項を参照してください。
後述するように、oracle/sts_trust_config_service_policyをコピーし、要求者トークン・タイプに基づいてポリシー構成を編集します。

メッセージ保護要求者トークンでWS-Security 1.0ユーザー名トークンをサポートするには:

- orasp:port-uri="http://<host>:<port>/openssosts/sts/wss10un"

- orasp:wsdl-uri="http://<host>:<port>/openssosts/sts/wss10un?wsdl" (オプション)

メッセージ保護要求者トークンでSSL経由でWS-Security 1.0ユーザー名トークンをサポートするには:

- orasp:port-uri="https://<host>:<sslport>/openssosts/sts/tlswss10un"

- orasp:wsdl-uri="https://<host>:<sslport>/openssosts/sts/tlswss10un?wsdl" (オプション)

メッセージ保護要求者トークンでWS-Security 1.0 X509トークンをサポートするには:

- orasp:port-uri="http://<host>:<port>/openssosts/sts/wss10x509"

- orasp:wsdl-uri="http://<host>:<port>/openssosts/sts/wss10x509?wsdl" (オプション)

メッセージ保護要求者トークンでWS-Security 1.1 Kerberosトークンをサポートするには:

- orasp:port-uri="http://<host>:<port>/openssosts/sts/wss11kerberos"

- orasp:wsdl-uri="http://<host>:<port> (オプション)

2. Webサービスを構成します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』の自動ポリシー構成のWebサービスの構成に関する項を参照してください。
手順1で作成したポリシー、その後でoracle/wss11_sts_issued_saml_bearer_token_over_ssl_service_policyをアタッチします。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のFusion Middleware Controlを使用した単一サブジェクトへのポリシーの直接アタッチに関する項を参照してください。

3. Webサービス・クライアントを構成します。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』の自動ポリシー構成のWebサービス・クライアントの構成に関する項を参照してください。
SOAコンポジット・クライアントにoracle/ws11_sts_issued_saml_bearer_token_over_ssl_client_policyポリシーをアタッチし、要求者トークンの必要に応じて、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のoracle/ws11_sts_issued_saml_bearer_token_over_ssl_client_templateに記載されているクライアント構成プロパティをオーバーライドします。完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のFusion Middleware Controlを使用した単一サブジェクトへのポリシーの直接アタッチに関する項を参照してください。

sts.auth.user.csf.keyには、デフォルトのOpenSSO STS構成で使用可能なユーザー資格証明を設定する必要があります。つまり、ユーザー名test、パスワードtestです。ただし、X509要求者トークンでは設定する必要はありません。

ポリシーをアタッチする場合のクライアント構成プロパティのオーバーライドの詳細は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のFusion Middleware Controlを使用したWebサービス・クライアントへのポリシーの直接アタッチに関する項を参照してください。

9.4 その他の情報源

この章のソリューションが実装されているその他のテクノロジおよびツールの詳細は、次の参考資料を参照してください。

- Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理

- Oracle Web Services Managerの理解

- http://download.oracle.com/javase/6/docs/technotes/tools/windows/keytool.htmlのkeytool Javadoc

オラクルの法律上の注意点について

コピーライトについて

Copyright © 1994-2016, Oracle and/or its affiliates.All rights reserved.

ライセンス制約の保証と結果的に生じる損害の免責

このソフトウェアおよび関連ドキュメントの使用と開示は、ライセンス契約の制約条件に従うものとし、知的財産に関する法律により保護されています。ライセンス契約で明示的に許諾されている場合もしくは法律によって認められている場合を除き、形式、手段に関係なく、いかなる部分も使用、複写、複製、翻訳、放送、修正、ライセンス供与、送信、配布、発表、実行、公開または表示することはできません。このソフトウェアのリバース・エンジニアリング、逆アセンブル、逆コンパイルは互換性のために法律によって規定されている場合を除き、禁止されています。

保証免責

ここに記載された情報は予告なしに変更される場合があります。また、誤りが無いことの保証はいたしかねます。誤りを見つけた場合は、オラクルまでご連絡ください。

制限付権利について

このソフトウェアまたは関連ドキュメントを、米国政府機関もしくは米国政府機関に代わってこのソフトウェアまたは関連ドキュメントをライセンスされた者に提供する場合は、次の通知が適用されます。

U.S. GOVERNMENT END USERS: Oracle programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, delivered to U.S. Government end users are "commercial computer software" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations.As such, use, duplication, disclosure, modification, and adaptation of the programs, including any operating system, integrated software, any programs installed on the hardware, and/or documentation, shall be subject to license terms and license restrictions applicable to the programs.No other rights are granted to the U.S. Government.

危険な用途への使用について

このソフトウェアまたはハードウェアは様々な情報管理アプリケーションでの一般的な使用のために開発されたものです。このソフトウェアまたはハードウェアは、危険が伴うアプリケーション(人的傷害を発生させる可能性があるアプリケーションを含む)への用途を目的として開発されていません。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用する際、安全に使用するために、適切な安全装置、バックアップ、冗長性(redundancy)、その他の対策を講じることは使用者の責任となります。このソフトウェアまたはハードウェアを危険が伴うアプリケーションで使用したことに起因して損害が発生しても、Oracle Corporationおよびその関連会社は一切の責任を負いかねます。

商標と登録商標について

OracleおよびJavaはオラクルおよびその関連会社の登録商標です。その他の社名、商品名等は各社の商標または登録商標である場合があります。

Intel、Intel Xeonは、Intel Corporationの商標または登録商標です。すべてのSPARCの商標はライセンスをもとに使用し、SPARC International, Inc.の商標または登録商標です。AMD、Opteron、AMDロゴ、AMD Opteronロゴは、Advanced Micro Devices, Inc.の商標または登録商標です。UNIXは、The Open Groupの登録商標です。

第三者のコンテンツ、製品、サービスに対する免責事項

このソフトウェアまたはハードウェア、そしてドキュメントは、第三者のコンテンツ、製品、サービスへのアクセス、あるいはそれらに関する情報を提供することがあります。適用されるお客様とOracle Corporationとの間の契約に別段の定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスに関して一切の責任を負わず、いかなる保証もいたしません。適用されるお客様とOracle Corporationとの間の契約に定めがある場合を除いて、Oracle Corporationおよびその関連会社は、第三者のコンテンツ、製品、サービスへのアクセスまたは使用によって損失、費用、あるいは損害が発生しても一切の責任を負いかねます。

アルファ版およびベータ版ドラフト・ドキュメントについて

このドキュメントが試作版の場合:

このドキュメントは試作版であり、デモおよび暫定使用のみを目的としたものです。このソフトウェアを使用するハードウェアに限定するものではありません。Oracle Corporationおよびその関連会社は、このドキュメントに関して一切の責任を負わず、いかなる保証もいたしません。また、このドキュメントを使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。

非公開のアルファ版およびベータ版ドラフト・ドキュメントについて

このドキュメントが非公開の試作版の場合:

このドキュメントに含まれる情報は、情報の共有のみを目的としたものであって、顧客諮問委員会(Customer Advisory Board)のメンバーとしてのお客様の立場でのみ、またはお客様のベータ・トライアル契約のみに従って検討されるべきものとします。マテリアル、コード、または機能の提供をお約束するものではなく、購入決定を行う際の判断材料とすべきではありません。このドキュメントに記載されている特徴または機能の開発、リリースおよび時期については、オラクルの裁量により決定されます。

このドキュメントには、ソフトウェアまたは印刷物などの形式を問わず、オラクルが独占的な権利を有する財産的情報が含まれています。この機密資料へのアクセスと使用は、お客様とオラクルとの間で締結され、お客様が遵守に同意した、Oracle Master Agreement、Oracle License and Oracle Services Agreement (オラクル・ライセンスおよびサービスに関する契約書)、Oracle PartnerNetwork Agreement、Oracle Distribution Agreementまたはその他のライセンス契約の条件に従うものとします。このドキュメントとその内容の開示、コピー、複製および配布には、オラクルによる事前の承諾を必要とします。このドキュメントはライセンス契約の一部となるものではなく、オラクルおよびその子会社や関連会社との契約を構成するものではありません。

ドキュメントのアクセシビリティについて

オラクルのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWebサイトhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc を参照してください。

Oracle Supportへのアクセス

サポートをご契約のお客様には、My Oracle Supportを通して電子支援サービスを提供しています。詳細情報はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=infoか、聴覚に障害のあるお客様はhttp://www.oracle.com/pls/topic/lookup?ctx=acc&id=trsを参照してください。