Java 用のエージェント API
エージェント API は、ポリシー サーバと連携して、ポリシー サーバの認証および認可の機能を活用するためのカスタム エージェント アプリケーションを作成します。また、アプリケーション固有データを送信するためのセキュアな通信トンネルを構築することもできます。 エージェント API を直接または(別のエージェントを介して)間接的に使用して構築されるアプリケーションを作成する開発者は、以下に示す実装特有の詳細を意識する必要がありません。
sm1252sp1jjp
エージェント API は、ポリシー サーバと連携して、ポリシー サーバの認証および認可の機能を活用するためのカスタム エージェント アプリケーションを作成します。また、アプリケーション固有データを送信するためのセキュアな通信トンネルを構築することもできます。 エージェント API を直接または(別のエージェントを介して)間接的に使用して構築されるアプリケーションを作成する開発者は、以下に示す実装特有の詳細を意識する必要がありません。
- LDAP ディレクトリ、SQL データベース、Windows ドメインなどのユーザ ネームスペース
- ユーザ名とパスワードによる単純な認証方式や、PKI システムの複雑な認証方式
- グループ メンバシップまたは個別のプロファイルデータに基づく認可
エージェント API のその他の利点としては、全面的なセッション管理サポート、自動暗号化キー ロールオーバ、リアルタイム ポリシー更新などがあります。
エージェント API には、ポリシー サーバへのローカルまたはリモート アクセス タイプがあります。
Single Sign-On
エージェントSingle Sign-On
エージェントはエージェント API のクライアントです。エージェントは、ポリシー サーバによって処理されるアクセス制御ポリシーを適用します。ポリシー サーバは、リソースに対して特定の知識を持たない汎用ポリシー エンジンです。リソースについての特定の知識は、エージェントによって提供されます。エージェントは、リソースの解釈を定義し、許可のないユーザからリソースを保護するゲート キーパーとして機能します。各種のリソースを保護するためにさまざまなエージェント タイプが用意されています。一部のエージェント タイプは、製品の一部として出荷される事前定義された標準エージェントです。たとえば、Web サーバに HTTP アクセス制御を提供する Web エージェントなどです。ただし、カスタム エージェントを実装するために エージェント API を使用することもできます。
エージェント API を使用すると、さまざまなコンテキスト固有の方法でユーザを認証および許可できるカスタム エージェントを作成できます。たとえば、以下を実行するエージェントを FTP 転送に対して作成できます。
- 基本名およびパスワード認証情報の代わりに証明書ベースの認証を実装します。
- 個別のユーザの許可レベルに基づいてアップロードおよびダウンロードを許可します。
カスタム エージェントは、標準 Web エージェントまたは
CA Access Gateway
を持つシングル サインオン環境に参加することができます。以下の図は、エージェントがエージェント API を使用するときに発生するプロセス フローを示しています。
エージェント タイプ
エージェント タイプは、エージェントの動作を定義します。カスタム エージェントを開発した後、そのエージェントの新規エージェント タイプを管理 UI で設定する必要があります。たとえば、カスタム FTP エージェントを開発した場合、その FTP エージェントのエージェント タイプを管理 UI で設定する必要があります。
エージェント API クラス階層
Java エージェント API への主要なアクセス ポイントは AgentAPI クラスです。AgentAPI クラスによって必要とされるデータを保持するための他のクラスがいくつか提供されています。
- 属性
- AttributeList
- BinaryBuffer
- InitDef
- ManagementContextDef
- RealmDef
- ResourceContextDef
- ServerDef
- SessionDef
- TokenDescriptor
- TunnelServiceRequest
- UserCredentials
注:
Pure Java エージェント API には、JNI エージェント API で提供されるすべてのクラスは含まれません。具体的には、Pure Java エージェント API には、ServiceAPI.class と ServiceSession.class は含まれません。Java 用のエージェント API の実装
Java 用のエージェント API を使用するとき、エージェントのコーディングには Java を使用します。エージェント API には 2 つの実装があります。
- ネイティブ C/C++ エージェント API ライブラリに依存する JNI API。この実装は、SDK バージョン 5.x 以降で提示されるインターフェースを使用します。
- JNI API で使用されるネイティブ コードを純粋な Java コンポーネントで置き換える、純粋な Java エージェント API。この API の現在のバージョンは JNI API と同じインターフェースを使用します。
純粋な Java エージェント API は、ネイティブ モード コンポーネントがないため、新しい動作環境への移植が簡単です。純粋な Java 実装を使用して記述されたアプリケーションは、個別のオペレーティング システムではなく、実装をホストする Java 仮想マシンに対してのみ証明書を必要とします。
JNI API の実装
以下の手順に従います。
- 付属のリリース ノートに示される必須ソフトウェアを確認します。
- サンプル コードを確認します。
- クライアント アプリケーション用のソース コードを記述します。
- Java 仮想マシン(JVM)が呼び出される場合に、システムが JNI サポート ライブラリを見つけることができることを確認します。以下の変数を変更することで、ライブラリがあるディレクトリへのパスを含めます。
- Windows の場合:が含まれるように PATH 変数を変更し、smjavaagentapi.dll、smerrlog.dll、および smcommonutil.dll が検出されるようにします。install_path\sdk\bin
- Solaris の場合:が含まれるように LD_LIBRARY_PATH を変更し、libsmjavaagentapi.so、libsmerrlog.so、および libsmcommonutil.so が検出されるようにします。install_path/sdk/bin
- AIX の場合:が含まれるように LIBPATH を変更し、libsmjavaagentapi.so、libsmerrlog.so、および libsmcommonutil.so が検出されるようにします。install_path/sdk/bin
- Linux の場合:が含まれるように LD_LIBRARY_PATH を変更し、libsmjavaagentapi.so、libsmerrlog.so、および libsmcommonutil.so が検出されるようにします。install_path/sdk/bin
- HP-UX 11 の場合:が含まれるように SHLIB_PATH を変更し、libsmjavaagentapi.so、libsmerrlog.so、および libsmcommontuil.so が検出されるようにします。install_path/sdk/bin
注: Java エージェント API は HP10 では利用できません。 - Java エージェント API を使用するエージェントをコンパイルまたは実行する場合に、JNI Java エージェント API JAR ファイルを検出できることを確認してください。JAR ファイル smjavaagentapi.jar は以下の場所に保存されます。
- Windows プラットフォーム:install_path\sdk\java
- UNIX プラットフォーム:install_path/sdk/java
CLASSPATH 設定に smjavaagentapi.jar を追加します。コンパイルの際に、-classpath スイッチを使用します。 - javac を使用して Java エージェント API アプリケーションをコンパイルします。例については、サンプル ディレクトリ smjavaagentapi の java-build.bat または java-build.sh を参照してください。
- Java エージェント API アプリケーションを使用するためにポリシー サーバを設定します。
- アプリケーションを実行します。例については、サンプル ディレクトリ smjavaagentapi の java-run.bat または java-run.sh を参照してください。
純粋な Java エージェント API の実装
純粋な Java エージェント API の使用方法を以下に示します。
下位互換性
純粋な Java エージェント API は、JNI API とのバイナリおよびソース互換性を維持します。純粋な Java エージェント API は、これらのインターフェースの移植性の拡張に加えて、ポリシー管理 API および DMS API を含むポリシー サーバへの接続にエージェント API に依存する他のすべての Java SDK インターフェースをサポートします。
設定制限
純粋な Java エージェント API は、アプリケーション サーバ エージェントまたは
Single Sign-On
SDK で開発されたエージェントのいずれに対しても設定を変更しません。純粋な Java エージェント API の設定は、以下の例外を除いて JNI API の設定と同じです。- JNI API から純粋な Java エージェント API への UNIX エージェントの移行には、ポリシー サーバへのトラステッド ホスト エンティティの再登録が必要です。これは、JNI Java API 内の共有秘密鍵が純粋な Java 実装とは異なって計算されるためです。
- Unix および Windows システム(ネイティブ コード エージェント API でのファイル ロッキングに互換性がないため)の両方で、SmHost.conf ファイルは C/C++、JNI API、または純粋な Java エージェント API を使用するエージェントの間で共有することはできません。したがって、ブートストラップ設定ファイルの個別のコピーを純粋な Java エージェント API エージェント用に維持する必要があります。
- 5.x- タイプのカスタムの純粋な Java エージェントに対するホストを登録するには、smreghost.exe ではなく smreghost.bat (または UINX では smreghost.sh)を使用する必要があります。
- Unix システム上の JNI API からのアップグレードでは、4.x encryptkey ツールで暗号化される共有秘密鍵を使用するカスタムの 4.x ベースのエージェントのユーザは、アップグレードされるエージェントのエージェント側で共有秘密キーを更新する必要があります。
以下の手順に従います。
- 付属のリリース ノートに示される必須ソフトウェアを確認します。
- サンプル コードを確認します。
- クライアント アプリケーション用のソース コードを記述します。
- Java エージェント API を使用するエージェントをコンパイルまたは実行する場合に、純粋な Java エージェント API の .jar ファイルを検出できることを確認してください。JAR ファイル smagentapi.jar は以下の場所に保存されます。
- Windows プラットフォーム:install_path\sdk\java
- UNIX プラットフォーム:install_path/sdk/java
CLASSPATH 設定にsmagentapi.jarおよびcrypto.jarを追加します。コンパイルの際に、-classpathスイッチを使用します。 - javac を使用して Java エージェント API アプリケーションをコンパイルします。 例については、サンプル ディレクトリ smjavaagentapi の java-build.bat または java-build.sh を参照してください。
- Java エージェント API アプリケーションを使用するためにポリシー サーバを設定します。
- アプリケーションを実行します。
純粋な Java エージェント API トレースの有効化
純粋な Java エージェント API は、コンソールに出力される詳細なトレース メッセージをサポートします。smreghost などエージェント API を使用するコマンド ライン ツールを実行する場合にこれらのメッセージは役立ちます。
トレース メッセージを有効にするには、enableDebug という名前のシステム プロパティを true に設定します。コマンド ラインから、-Dcom.ca.siteminder.sdk.agentapi.enableDebug="true" を追加します。例:
>SM_SMREGHOST_CLASSPATH="c:\ca\sdk\java\smagentapi.jar;c:\ca\sdk\java\cryptoj.jar">java -Dcom.ca.siteminder.sdk.agentapi.enableDebug="true" -classpath %SM_SMREGHOST_CLASSPATH% com.ca.siteminder.sdk.agentapi.SmRegHost-i 127.0.0.1 -hc host_conf1 -hn trustedhost3 -u siteminder -p password