ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Web Services ManagerによるWebサービスの保護のユース・ケース
12c (12.1.3)
E59408-02
  目次へ移動
目次

前
 
次
 

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

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

実行サマリー

ユース・ケース 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.1 ユース・ケースの概要

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

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

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

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

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

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

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

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

4.2 ユース・ケースの実装

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

4.2.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.2.2 RESTful Webサービスの作成、保護およびデプロイ

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

4.2.2.1 タスク2: 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.2.2.2 タスク3: 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.2.2.3 タスク4: Webプロジェクトのサーブレット名の変更

「タスク2: 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.2.2.4 タスク5: 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.2.2.5 タスク6: 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.2.2.6 タスク7: 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. 「構成プロパティのユーザー名とパスワード」フィールドにweblogicwelcome1を入力します。

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

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

Hello weblogic

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

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

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

4.2.3.1 タスク8: 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.2.3.2 タスク9: 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.2.3.3 タスク10: サーブレット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.2.3.4 タスク11: weblogic.xmlデプロイメント・ディスクリプタの作成

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

  1. 「WebLogicデプロイメント・ディスクリプタの作成」ウィザードを使用して、weblogic.xmlデプロイメント・ディスクリプタを作成します。

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

    次の特性を定義します。

    • 選択記述子

      • 記述子: weblogic.xml

    • バージョンを選択

      • バージョン: 12.1.2

    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.2.3.5 タスク12: 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.2.3.6 タスク13: RESTfulクライアントへのアクセスのテスト

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

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

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

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

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

次に、KSSを設定します。

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

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

KSSを使用する理由

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

  • 統合されたツール

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

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

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

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

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

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

KSSの設定

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

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

    http://localhost:7001/em
    
  2. 「キーストア」ページからキーストアを作成します。

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

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

      - ストライプ名: owsm

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

      - キーストア名: keystore

      - 保護: ポリシー

      - 権限の付与: 無効

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

  3. 「鍵ペアの生成」ダイアログを使用して、鍵ペアを生成します。

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

    次の特性を定義します。

    • 別名: orakey

    • 共通名: orakey

    • 組織単位: us

    • : アメリカ合衆国

    • RSAキー・サイズ: 1024

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

  4. democa CA証明書をowsmストライプにインポートします。

    デフォルトでは、鍵ペアはKSSに同梱されているdemoca CAによって署名されます。

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

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

    図4-1については周囲のテキストで説明しています。

    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証明書をインポートするには、「キーストア」ページのowsmkeystoreを選択し、「管理」「インポート」の順にクリックします。

      次の特性を定義します。

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

      - 別名: democa

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

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

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

4.2.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ファイルを編集して、testuserwebuserロールにマップします。

    「セキュリティ」→「セキュリティ・ロールの割当て」で、webuserを選択して、有効なプリンシパルとしてtestuserを追加します。

4.3 ユース・ケースの検証

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

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

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

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

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サービスのテストに関する説明を参照してください。