Oracle® Fusion Middleware Oracle Web Services ManagerによるWebサービスの保護のユース・ケース 12c (12.2.1) E72707-01 |
|
前 |
次 |
この章では、基本認証を使用してRESTful Webサービスを保護する方法について説明します。
この章には、次のセクションがあります。
ユース・ケース・サマリーは、この章の情報が自分のニーズに合致するかどうかを迅速に判断するのに役立ちます。
次の表は、ユース・ケースの目標、ソリューションおよびコンポーネントをまとめたものです。必要なドキュメントへのリンクも提供されます。
ユース・ケース | 基本認証を使用して、RESTful Webサービスを保護します。 |
実装サマリー | RESTful Webサービスを開発し、Oracle Web Services Manager (OWSM)基本認証ポリシーをアタッチして保護します。 |
コンポーネント |
|
必須ドキュメント | このユース・ケースを完了するには、次のドキュメント・リソースを参照してください。
|
このユース・ケースは、次の操作に必要な手順を示します。
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サービスを検証します。
ユース・ケースを実装するには、次の手順を実行します。
開始する前に、次のタスクが実行されていることを確認してください。
次の製品コンポーネントをダウンロードおよびインストールします。
Oracle Fusion Middleware - OWSMを含む
詳細は、Oracle Fusion MiddlewareのインストールのプランニングのOracle Fusion Middlewareインストールの準備に関する項を参照してください。
Oracle JDeveloper Studio Edition
これは、このドキュメントのユース・ケースのサブセットにのみ必要です。
Oracle Fusion Middlewareソフトウェアの入手先とダウンロードの詳細は、OTNでOracle Fusion Middlewareダウンロード、インストール、構成のReadmeファイルを参照してください。
WebLogicドメインを構成します。
完全な手順は、『構成ウィザードによるWebLogicドメインの作成』のWebLogicドメインの作成に関する項を参照してください。
ドメインの管理サーバーを起動します。
完全な手順は、『Oracle WebLogic Serverサーバーの起動と停止の管理』のサーバーの起動と停止に関する項を参照してください。
次の管理ツールにアクセスできることを確認します。
Oracle Enterprise Manager Fusion Middleware Control:
http://localhost:7001/em
Oracle WebLogic Server管理コンソール
http://localhost:7001/console
RESTfulリソースをデプロイする前に、最初にグローバル・ポリシーを定義して、デフォルトですべてのRESTfulリソースを保護します。
次の手順では、OWSMグローバル・ポリシー・セットを定義し、すべてのRESTfulリソースに割り当てます。oracle/wss_http_token_service_policy
ポリシーがすべてのRESTfulリソースの基本認証の構成ポリシーにアタッチされます。
WebサービスのWLSTコマンドの詳細は、『インフラストラクチャ・コンポーネントのためのWLSTコマンド・リファレンス』のWebサービスのWLSTカスタムWLSTコマンドに関する項を参照してください。
デフォルトですべてのRESTfulリソースを保護するには:
注意: 完全な手順は、『Oracle Web Services ManagerによるWebサービスの保護とポリシーの管理』のWLSTを使用したポリシーのグローバルなアタッチに関する項を参照してください。 |
WebLogic Serverが稼働していることを確認します。
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.
セッションを開始します。
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.
すべての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.
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.
セッションをコミットします。
wls:/base_domain/serverConfig> commitWSMSession()
The policy set rest-policy-set is valid.
Creating policy set rest-policy-set in repository.
Session committed successfully.
次の手順を実行して、JDeveloperを使用した簡単なHelloWorld RESTful Webサービスを作成します。
注意: JDeveloperを使用する場合のヘルプは、[F1]を押すか、「ヘルプ」をクリックします。 |
JDeveloperを起動します。
完全な手順は、『Oracle JDeveloperのインストール』のOracle JDeveloper Studioのインストール後の次の手順に関する項を参照してください。
カスタム・アプリケーションの作成ウィザードを使用して、アプリケーションとプロジェクトを作成します。
「ファイル」→「新規」→「アプリケーション」、「一般」→「アプリケーション」→「カスタム・アプリケーション」の順に選択して、カスタム・アプリケーションの作成ウィザードを起動します。
アプリケーション名: RESTfulApplication
プロジェクト名: RESTfulService
プロジェクトの機能: Java
デフォルト・パッケージ: samples.helloworld
他のすべての値の場合は、デフォルトを受け入れます。
完全な手順は、『Oracle JDeveloperによるアプリケーションの開発』のアプリケーションとプロジェクトの作成に関する項を参照してください。
「Javaクラスの作成」ウィザードを使用した新しいJavaクラスの作成
RESTfulServiceプロジェクトを右クリックして、「新規」→「Javaクラス」を選択して、「Javaクラスの作成」ウィザードを起動します。
次の特性を定義します。
名前: HelloWorldResource
スーパークラスからのコンストラクタ: 選択解除
抽象メソッドの実装: 選択解除
他のすべての値の場合は、デフォルトを受け入れます。
完全な手順は、『Oracle JDeveloperによるアプリケーションの開発』の新しいJavaクラスまたはインタフェースの作成方法に関する項を参照してください。
次の太字
に示されているように、hello()メソッドをJavaクラスに追加します。
package samples.helloworld; public class HelloWorldResource { public String hello() { return "Hello!"; } }
「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サービスの作成に関する項を参照してください。
次の手順は、javax.ws.rs.core.SecurityContext
を使用した認証済ユーザーの取得方法を示しています。詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のSecurityContextを使用したRESTful Webサービスの保護に関する項を参照してください。
SecurityContext
を使用した認証済ユーザーを取得するには:
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 + "!"; } }
次の手順は、javax.ws.rs.core.Application
を拡張するクラスを作成してRESTful Webサービス・アプリケーション・デプロイメントのコンポーネントを定義する方法を示し、追加のメタデータを提供します。詳細は、『Oracle WebLogic Server RESTful Webサービスの開発と保護』のアプリケーション・サブクラスを使用したパッケージ化に関する項を参照してください。
アプリケーション・サブクラスを使用したRESTful Webサービスをパッケージ化するには:
「Javaクラスの作成」ウィザードを使用した新しいJavaクラスの作成
samples.helloworldパッケージを右クリックして、「新規」→「Javaクラス」を選択して、「Javaクラスの作成」ウィザードを起動します。ヘルプは、[F1]を押すか、「ヘルプ」をクリックします。
次の特性を定義します。
名前: MyApplication
パッケージ: samples.helloworld
拡張: javax.ws.rs.core.Application
スーパークラスからのコンストラクタ: 選択解除
抽象メソッドの実装: 選択解除
他のすべての値の場合は、デフォルトを受け入れます。
完全な手順は、『Oracle JDeveloperによるアプリケーションの開発』の新しいJavaクラスまたはインタフェースの作成方法に関する項を参照してください。
次の太字
で示されているコードを追加することで、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; } }
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; } }
WARファイルとしてRESTful Webサービス・アプリケーションをWebLogic Serverにデプロイします。
RESTful Webサービスをデプロイするには:
Webアプリケーションのデプロイメント・プロファイルを作成します。
「デプロイメント・プロファイルの作成」ウィザードを使用して、プロファイルのタイプおよび名前を定義します。
RESTfulサービス・アプリケーションを右クリックして「デプロイ」→「新規デプロイメント・プロファイル」を選択して、「デプロイメント・プロファイルの作成」ウィザードを起動します。ヘルプは、[F1]を押すか、「ヘルプ」をクリックします。
次の特性を定義します。
- プロファイル・タイプ: WARファイル
- デプロイメント・プロファイル名: helloworld
「WARデプロイメント・プロファイルのプロパティの編集」ウィザードを使用して、Webアプリケーションのコンテキスト・ルートを定義します。
「デプロイメント・プロファイルの作成」ウィザードで「OK」をクリックすると、「WARデプロイメント・プロファイルのプロパティの編集」ウィザードが自動的に起動します。ヘルプは、[F1]を押すか、「ヘルプ」をクリックします。
次の特性を定義します。
- Java EE Webコンテキスト・ルートを指定: restservice
「<application>のデプロイ」ウィザードを使用して、次の特性とともにWebアプリケーションをデプロイします。
RESTfulServiceアプリケーションを右クリックして「デプロイ」→「helloworld」を選択して、「<application>のデプロイ」ウィザードを起動します。ヘルプは、[F1]を押すか、「ヘルプ」をクリックします。
次の特性を定義します。
デプロイメント・アクション: WARにデプロイ
構成されたプロジェクト・ディレクトリのWARファイルを表示します。次に例を示します。
c:\JDeveloper\mywork\RESTfulApplication\RESTfulService\deploy\helloworld.war
WebLogic ServerにWARファイルをデプロイします。詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのアプリケーションとモジュールのデプロイに関する項を参照してください。
ブラウザで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サービスのテストに関する説明を参照してください。
RESTful Webサービスとクライアントの作成および保護の詳細は、次のリソースを参照してください。
Oracle WebLogic Serverの理解のJava EE 6の例に関する項の説明に従って、JAX-RSサンプルを使用してRESTful Webサービスを作成します。
Oracle WebLogic Server RESTful Webサービスの開発と保護
Oracle JDeveloperによるアプリケーションの開発におけるRESTful Webサービスの開発および保護に関する項