JBoss 上での A2A クライアントと Java アプリケーションの統合
このコンテンツでは、JBoss アプリケーション サーバ バージョン 4.2.2 内の Java コンテナ JDBC 接続プールで使用される認証情報の管理に A2A クライアントを使用する例について説明します。
capamnew
このコンテンツでは、JBoss アプリケーション サーバ バージョン 4.2.2 内の Java コンテナ JDBC 接続プールで使用される認証情報の管理に A2A クライアントを使用する例について説明します。
2
歴史的な理由から、コード サンプル、ファイル、および環境変数名で、A2A は CSPM と呼ばれます。
この例では、認証情報のビューアおよび HSQLDB データ ストアを使用して、以下の機能を表示します。
- 認証情報のビューアは、CSPMClient Java クラスを使用して、認証情報マネージャ サーバに保存されている認証情報を表示する方法を示しています。この例を使用して簡単な統合を行い、認証情報マネージャへの接続および認証情報を取得する機能をテストします。例では、画面に認証情報を表示します。
- HSQLDB データ ストアでは、認証情報マネージャ JdbcDriver Java クラスを使用して、データ ストアを設定し、認証情報を取得し、HSQLDB データ ストアに接続する方法を示します。この例では、認証情報を取得し、データ ストアへのアクセスに使用します。
この例は、以下のディレクトリ内のすべての A2A クライアント インストールで使用可能です。
- UNIX:$CSPM_CLIENT_HOME/cloakware/cspmclient/examples/java/JBoss_Sample
- Windows:%CSPM_CLIENT_HOME%/cloakware/cspmclient/examples/java/JBoss_Sample
ファイル | 説明 |
ClassFactory.java | サンプル Web アプリケーションで使用されるオブジェクトを作成するために使用するクラス ファクトリ。クラスを使用すると、 CSPMClient クラスを作成して、データベースへの接続の取得に使用されるデータ ソースを取得する初期コンテキスト内での検索を実行できます。 |
CredentialsViewer.java | 認証情報を取得する認証情報マネージャ サーバに接続するために使用するサーブレット クラス。 |
ConnectionTester.java | データベースへの 10 個の接続を構築し、ベーシック SQL ステートメントを実行するために使用するサーブレット クラス。このクラスは、 ClassFactory クラスを使用して、DataSource クラスを取得します。 |
cspm_connect_hsql_org-ds.xml | HSQLDB ドライバを使用してデータ ソースを設定する方法を示す構成ファイル。 |
cspm_connect_hsql-ds.xml | 認証情報マネージャ JDBC ドライバを使用してデータ ソースを設定する方法を示す構成ファイル。ターゲット ドライバは HSQLDB です。 |
JBoss 用の統合プロセス
以下の手順を使用して、アプリケーションが認証情報の管理に認証情報マネージャ サーバを使用するように変更します。
- 開発環境を設定します。「JBoss 用の開発環境の設定」を参照してください。
- 必要に応じて、A2A クライアントを統合して認証情報を取得します。「JBoss 認証情報ビューア」を参照してください。
- データ ソース ファイルを作成または変更します。「HSQLDB データ ストアとの JBoss 接続プール」を参照してください。
- リクエスタを登録します。「JBoss リクエスタの登録」を参照してください。
JBoss 用の開発環境の設定
JBoss 開発と認証情報マネージャ統合の両方の開発環境を設定します。
この例には、WAR ファイルの作成と展開に使用できるビルド ディレクトリにある、 Apache ANT ビルド ファイルが含まれています。ビルド ファイルには ANT 1.6.5 以上との互換性があります。
JBoss 開発環境の設定
JBoss の開発環境を設定するには、以下の手順を使用します。
以下の手順に従います。
- JBoss アプリケーション サーバ 4.2.2 GA をインストールします。Http:http://sourceforge.net/projects/jboss/files/JBoss/JBoss-4.2.2.GA を参照してください。
- JBOSS_HOME 環境変数を設定します。https://docs.jboss.org/jbossas/docs/Installation_And_Getting_Started_Guide/5/html/setting_JBOSS_HOME.html を参照してください。
- Apache ANT 1.6.5 以上をインストールします。http://ant.apache.org/bindownload.cgi を参照してください。
- ANT_HOME環境変数を設定します。http://ant.apache.org/manual/install.html を参照してください。
- Java データベース HSQLDB 1.8.0 をインストールします。http://sourceforge.net/project/showfiles.php?group_id=23316 を参照してください。
- HSQL_HOME環境変数を、HSQL をインストールしたパス(opt/tools/hsqldbなど)に設定します。
JBoss と A2A クライアントの統合用の環境の設定
以下の手順で、JBoss と A2A クライアントの統合用の環境を設定します。
以下の手順に従います。
- A2A クライアントをインストールします
- JAVA_OPTS 環境変数を作成または追加します。
- UNIX の場合 :-Djava.library.path=$CSPM_CLIENT_HOME\lib-Dcspm_client_config_file=$CSPM_CLIENT_HOME\config\cspm_client_config.xml
- Windows の場合:-Djava.library.path=%CSPM_CLIENT_HOME%\lib-Dcspm_client_config_file=%CSPM_CLIENT_HOME%\config\cspm_client_config.xml
- A2A クライアントtoolsディレクトリにあるcloakwareJdbc.jarファイルを、デフォルトの JBoss 展開ディレクトリにコピーします。
- UNIX の場合 :コピー元:$CSPM_CLIENT_HOME/cspmclient/toolsコピー先:$JBOSS_HOME/server/default/lib
- Windows の場合:コピー元:%CSPM_CLIENT_HOME%/cspmclient/toolsコピー先:%JBOSS_HOME%/server/default/lib
- A2A クライアントlibフォルダにあるcspmclient.jarファイルを、デフォルトの JBoss 展開libフォルダにコピーします。
以下のディレクトリにある ANT ビルド ファイルを使用して、手順 2 および手順 3 を実行します。
- UNIX:$CSPM_CLIENT_HOME/examples/java/JBoss_Sample/build
- Windows:%CSPM_CLIENT_HOME%/examples/java/JBoss_Sample/build
このディレクトリから、「
ant deploy.driver.lib
」を入力します。サンプル JBoss アプリケーションの展開および実行
以下の手順で、Apache ANT タスクを使用して、サンプル Web アプリケーションをコンパイルおよび実行します。
以下の手順に従います。
- JBoss アプリケーション サーバが実行されていること(デフォルト設定)を確認します。
- コマンド ライン ウィンドウを開きます。
- 次のいずれかのディレクトリに移動します。
- UNIX:$CSPM_CLIENT_HOME/cloakware/cspmclient/examples/java/JBoss_Sample/build
- Windows:%CSPM_CLIENT_HOME%/cloakware/cspmclient/examples/java/JBoss_Sample/build
- ant start.hsqldを入力して、HSQLDB サーバを起動します。
- antを入力して、サンプルをコンパイルおよび展開します。
- Web ブラウザを開きます。
- 次のページをロードして、認証情報ビューアの Web アプリケーションを表示します:http://localhost:8080/cspmJBossSample。
JBoss 認証情報ビューア
この例のサーブレットは、A2A クライアント クラスを使用して、認証情報を取得する方法を示しています。
クラス ファクトリを使用して、
CSPMClient
クラスが作成されます。クラス ファイル
package com.cloakware.cspm.sample.web; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.cloakware.jdbc.StatusCodeMapping; import com.cloakware.cspm.client.CSPMClient; import com.cloakware.cspm.sample.ClassFactory; /** * This servlet class is used to retrieve credentials using the * CSPMClient class.<br> * <br> * The user enters a CSPMAlias Name and the servlet displays the information * returned by the CSPMClient class. <br> * <br> * Since the CSPMClient class only returns a status code, the base class * provides a class to convert the status code to a more meaningful sentence. */ public class CredentialsViewer extends HttpServlet { /* Attribute names */ private final String ERROR_MSG = "errorMsg"; /* Parameter names and attributes when refreshing the page */ private final String ALIAS_NAME = "aliasName"; private final String BYPASS_CACHE = "byPassCache"; /* Attributes used when displaying credentials/response from * the CSPMClient class. */ private final String RETURN_CODE = "returnCode"; private final String RETURN_MSG = "returnMsg"; private final String USERNAME = "username"; private final String PASSWORD = "password"; /* Error message */ private final String MSG_ALIAS_EMPTY = "Alias cannot be empty"; /* Response page */ private final String TARGET_JSP = "/index.jsp"; /** * Constructor of the object. */ public CredentialsViewer() { super(); } /** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * The method retrieves the alias name and the value of the checkbox * indicating if the CSPMClient cache needs to be bypassed. It then calls * the retrieveCredentials method of the CSPMClient class and displays the * results. An error message is displayed if the alias name is missing. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Retrieve the parameters String alias = (String)request.getParameter(ALIAS_NAME); Object byPassCache = request.getParameter(BYPASS_CACHE); // Make sure to redisplay the alias name. request.setAttribute(ALIAS_NAME, alias); request.setAttribute(BYPASS_CACHE, (byPassCache != null) ? "checked" : null); // if we have an alias if (alias != null && !"".equals(alias)) { // Class used to retrieve the credential. CSPMClient cspmClient = ClassFactory.getCSPMClient(); // Retrieve the credentials. if (byPassCache == null) { cspmClient.retrieveCredentials(alias); } else { cspmClient.retrieveCredentials(alias, "true"); } // Set the credentials in the request request.removeAttribute(ERROR_MSG); request.setAttribute(RETURN_CODE, cspmClient.getStatusCode()); String statusMsg = StatusCodeMapping .getStatusText(cspmClient); request.setAttribute(RETURN_MSG, statusMsg); request.setAttribute(USERNAME, cspmClient.getUserId()); request.setAttribute(PASSWORD, cspmClient.getPassword()); } else { // return an error message. request.setAttribute(ERROR_MSG, MSG_ALIAS_EMPTY); request.removeAttribute(RETURN_CODE); } // Get the request dispatcher RequestDispatcher dispatcher = getServletContext() .getRequestDispatcher(TARGET_JSP); // Forward to the jsp file to display the credentials dispatcher.forward(request, response); } }
HSQLDB データ ストアとの JBoss 接続プール
この例では、認証情報の取得に認証情報マネージャ サーバを使用するための、データ ソースを作成または変更する方法を示します。データ ソースの定義は、サフィックス ‑ds.xml で終わるファイルに保存され、展開フォルダ内にあります。
A2A クライアントをアプリケーションに統合するには、データ ソースによって使用される JDBC ドライバを変更します。認証情報マネージャの JDBC ドライバは、認証情報マネージャの JDBC URL として認識される任意の JDBC URL を提供するプロキシ JDBC ドライバとして機能します。データ ソースの構成では、特別な認証情報マネージャ スタイルの JDBC URL で使用する、対象となるドライバおよびエイリアスに関する情報を提供します。認証情報マネージャ スタイルの JDBC URL の形式は次のとおりです。
cspm:[url];CSPMDriver=target.driver;CSPMAlias=alias
認証情報マネージャ URL を次のように設定します。
- cspm:プレフィックスで始まることを確認します。
- プレフィックスに続いて標準の JDBC URL を入力します。ユーザ/パスワードの使用は避けてください。例:jdbc:hsqldb:hsql://localhost:9001/cspm1。
- 使用する明示的な JDBC ドライバを示すCSPMDriverを URL に含めます。
- 認証情報マネージャ サーバのデータベース ユーザのエイリアスであるCSPMAliasを URL に割り当てます。
認証情報マネージャの JDBC ドライバを使用するには、設定ファイル内の属性を変更します。
以下の手順に従います。
- 前記の指定に従って、connection-urlを設定します。
- driver-classをcom.cloakware.jdbc.JdbcDriverに設定します。
この接続取得の低レベル ドライバ管理は、(認証情報マネージャ サーバによって)データベース パスワードが変更されたユーザが取得したすべての新しい接続が、新しいパスワードを使用して作成されたことを意味します。このアクションは、任意のナレッジまたは所有する任意のデータ ソースの介入なしに自動的に発生します。
新しいパスワードで新しい接続が取得されますが、古いパスワードで取得した既存の接続がデータ ソース プール内に残る可能性があります。また、認証情報マネージャ エイリアスを新しいユーザに変更する場合、接続プールには(少なくとも一時的に)異なる実際のデータベース ユーザ用の接続が混在します。
このような
CA Technologies
ドライバによる接続管理で、データベース パスワードの変更がデータ ソースのアクティビティに対して透過的であることを確認します。この例で使用される XML ファイルは、以下のいずれかの場所にあります。
- UNIX:$CSPM_CLIENT_HOME/cspmclient/examples/java/JBoss_Sample/main/resources/datasources
- Windows:%CSPM_CLIENT_HOME%/cspmclient/examples/java/JBoss_Sample/main/resources/datasources
データ ソース
<?xml version="1.0" encoding="UTF-8"?> <!-- The Hypersonic embedded database JCA connection factory config --> <datasources> <local-tx-datasource> <!-- The jndi name of the DataSource, it is prefixed with java:/ --> <jndi-name>jdbc/CSPMSampleDS</jndi-name> <connection-url> cspm:jdbc:hsqldb:hsql://localhost:9001/cspm1; CSPMAlias=hsql;CSPMDriver=org.hsqldb.jdbcDriver </connection-url> <!-- The driver class --> <driver-class>com.cloakware.jdbc.JdbcDriver</driver-class> <!-- The login and password --> <user-name></user-name> <password></password> <!-- The minimum connections in a pool/sub-pool. --> <min-pool-size>5</min-pool-size> <!-- The maximum connections in a pool/sub-pool --> <max-pool-size>10</max-pool-size> <!-- The time before an unused connection is destroyed --> <idle-timeout-minutes>1</idle-timeout-minutes> <track-statements /> <prepared-statement-cache-size>32</prepared-statement-cache-size> <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml --> <metadata> <type-mapping>Hypersonic SQL</type-mapping> </metadata> </local-tx-datasource> </datasources>
JBoss リクエスタの登録
認証情報マネージャでリクエスタを登録する手順については、「リクエスト サーバ上での A2A クライアントのインストールおよびアクティブ化」を参照してください。以下のデータを使用します。
パラメータ | 説明 |
スクリプト名 | com.cloakware.cspm.sample.web.CredentialsViewer |
実行パス | C:\jboss-4.2.2.GA\bin |
Type | Java |
パラメータ | 説明 |
スクリプト名 | com.cloakware.client.jdbc.JdbcDriver |
実行パス | C:\jboss-4.2.2.GA\bin |
Type | Java |
ターゲット アプリケーションとして HSQLDB を登録する
認証情報マネージャを使用して、HSQLDB をターゲット アプリケーションとして登録する手順については、「認証情報マネージャのターゲットの設定」を参照してください。以下のデータを使用します。
パラメータ | 説明 |
アプリケーション名 | HSQLDB サーバ |
アプリケーション タイプ | HSQL |
DB ポート | 9001 |
パラメータ | 説明 |
アプリケーション | HSQLDB サーバ |
アカウント名 | sa |
パスワード | admin |
データベース名 | cspm1 |
パラメータ | 説明 |
アプリケーション | HSQLDB サーバ |
アカウント名 | TestUser |
パスワード | Test |
データベース名 | cspm1 |
A2A アカウント | 選択済み |
変更プロセス | 選択: - 以下のアカウントを使用して、パスワードの変更を行ってください: SA |
パラメータ | 説明 |
ターゲット エイリアス名 | hsql |
アプリケーション | HSQLDB サーバ |
アカウント | TestUser |
リクエスト サーバとターゲット エイリアス間のマッピングを登録する
リクエスト サーバとターゲット エイリアス間のマッピングを登録する手順については、「A2A 許可マッピングの追加」を参照してください。以下のデータを使用します。
パラメータ | 説明 |
ターゲット エイリアス | Hsql |
リクエスト サーバ | リクエスト サーバを選択します |
スクリプト | すべて |
HSQL データベースの使用方法
HSQLDB とは、Java で記述された SQL リレーショナル データベース エンジンです。これは、例では、データベース サーバとして使用されています。
以下の手順を使用してデータベース サーバを起動します。
以下の手順に従います。
- コマンド ライン ウィンドウを開きます。
- 次のいずれかのディレクトリに移動します。
- UNIX:$CSPM_CLIENT_HOME/cloakware/cspmclient/examples/java/ApacheTomcat/build
- Windows:%CSPM_CLIENT_HOME%/cloakware/cspmclient/examples/java/ApacheTomcat/build
- ant start.hsqldを入力して、HSQLDB サーバを起動します。
以下の手順を使用してデータベース サーバを停止します。
以下の手順に従います。
- コマンド ライン ウィンドウを開きます。
- 次のいずれかのディレクトリに移動します。
- UNIX:$CSPM_CLIENT_HOME/cloakware/cspmclient/examples/java/ApacheTomcat/build
- Windows:%CSPM_CLIENT_HOME%/cloakware/cspmclient/examples/java/ApacheTomcat/build
- ant shutdown.hsqldbを入力して、HSQLDB サーバを停止します。