Java API フロー
Policy Management API または DMS API でクライアント アプリケーションを作成するには、以下の手順を実行します。
casso126jjp
Policy Management API または DMS API でクライアント アプリケーションを作成するには、以下の手順を実行します。
2
ポリシー サーバへの接続の確立
ポリシー サーバへの接続を確立するには、ユーティリティ パッケージの SmApiConnection クラスを使用します。このクラスは、Java API 要求が送信されるエージェント API ハンドルを保持します。
このクラスには 2 つのタイプの接続ハンドルがあります。
- デフォルト接続ハンドル。デフォルト接続ハンドルには以下の特徴があります。
- エージェント API オブジェクトの単一のインスタンスを表します。
- プロセスを通してスタティックです。
- ポリシー管理 および DMS クライアントの両方からの エージェント API オブジェクトへの接続を許可します。
単一のエージェント API オブジェクト インスタンスを通してポリシー サーバへの複数の接続を確立できます。 - ユーザ定義の接続ハンドル。複数のユーザ定義接続オブジェクトを作成できます。各オブジェクトはポリシー サーバへの複数の接続をサポートできます。
デフォルト接続の確立
ポリシー サーバへの接続をすでに確立していない場合、自動的な接続を要求できます。
CA Single Sign-on
が接続を自動的に確立する場合は、デフォルトの Java エージェント API オブジェクトおよびハンドルが作成されます。ただし、有効なユーザ定義ハンドルがすでに存在する場合は、CA Single Sign-on
によってデフォルトのオブジェクトおよびハンドルが作成されることはありません。ユーザ定義のハンドルはデフォルトのハンドルに優先されます。ポリシー サーバへのデフォルト接続を自動的に確立する方法
- 以下のコンストラクタを使用して API 接続オブジェクトを作成します。SmApiConnection (boolean bDefaultAgentConnectionboolean disableLoadBalancing)
- コンストラクタで、bDefaultAgentConnection を true に設定します。たとえば、以下のようにします。SmApiConnection m_defaultConnection = new SmApiConnection(true,false);
- bDefaultAgentConnection が false である場合、クライアント コード内で接続を明確に確立する必要があります。
自動接続には以下の要件があります。
- Web エージェントは、同じマシンのエージェント API を実行している場所にインストールされます。
- Web エージェント設定オブジェクト内のプロパティ DefaultAgentName にはエージェント名が含まれます。ポリシー サーバで Web エージェント設定オブジェクトを定義します。
- Apache の Web エージェントでは、エージェント設定ファイルへのパスは CLASSPATH にあります。Microsoft IIS Web エージェントでは、この設定情報はレジストリにあるため、CLASSPATH 参照は必要ではありません。
ポリシー サーバへのユーザ定義の接続を確立します
2 つの方法のいずれかを使用してユーザ定義の接続を確立します。
- SmApiConnection オブジェクトのコンストラクタ内の既存の Java エージェント API 接続ハンドルを参照する。
- setAgentApiConnection() メソッドを使用して新規接続を手動で確立する。
注:
すでにポリシー サーバへの接続を確立している場合、後続の Policy Management API または DMS API コールを作成するためにその接続を使用できます。既存のエージェント API 接続を使用して接続を作成する方法
- 以下のコンストラクタを通して接続オブジェクトを作成します。SmApiConnection (netegrity.siteminder.javaagent.AgentAPIagentApiConnection)
- コンストラクタで、既存のエージェント API 接続のハンドルを渡すには agentApiConnection を使用します。たとえば、以下のようにします。SmApiConnection myConnection = new SmApiConnection (myAgentApiConnection);新しい Java エージェント API ハンドルはユーザ定義のハンドルです。
デフォルト接続をまだ実行しておらず、ユーザ定義の接続オブジェクトが必要な場合、エージェント API を使用してエージェント オブジェクトを作成し、以下のように新規接続を作成できます。
- エージェント オブジェクトを作成します。以下のソースのいずれかからの接続パラメータに基づくエージェント オブジェクトを作成できます。
- たとえば以下のような、コード内で定義されたユーザ定義の接続パラメータ。AgentAPI agent = new AgentAPI();ServerDef sd = new ServerDef();sd.serverIpAddress = POLICY_IP;sd.connectionMin = CX_MIN;sd.connectionMax = CX_MAX;sd.connectionStep = CX_STEP;sd.timeout = CX_TIMEOUT;sd.authorizationPort = AZ_PORT;sd.authenticationPort = AUTH_PORT;sd.accountingPort = ACC_PORT;InitDef init=new InitDef(AGENT_LOGIN,SHARED_SECRET,false, sd);agent.init(init);注:許可サーバ、認証サーバ、および会計サーバは単一のサーバ プロセスに統合されます。したがって、authorizationPort、authenticationPortおよびaccountingPortはすべて同じ値に設定できます。Single Sign-Onv4.x webagent.conf ファイルは、SM API によってサポートされなくなりました。
- 接続パラメータは、エージェント設定ファイルに格納されます。
- 新しい接続を作成します。エージェント オブジェクトを作成した後に、これらの方法のいずれかを使用して新しい接続を作成します。
- 作成したばかりのエージェント オブジェクトを新しい SmApiConnection オブジェクトのコンストラクタに渡します。たとえば以下のようにします。SmApiConnection myConnection = new SmApiConnection(agent);SmApiConnection myConnection=new SmApiConnection(false,false);myConnection.setAgentApiConnection(agent);
- setAgentApiConnection() を呼び出し、作成したばかりのエージェント オブジェクトを渡します。たとえば以下のようにします。
このように接続を確立する場合、Java エージェント API ハンドルはユーザ定義のハンドルです。setAgentApiConnection() を呼び出し、接続がない場合、Null を渡すことで自動的にスタティックな接続を確立できます。
セッションの取得
ポリシー サーバへの接続を取得した後、ユーザまたは管理者のセッションを取得します。
注:
ポリシー管理 API を使用するには、CA Single Sign-on
管理者として接続する必要があります。セッション オブジェクトを取得した後、SmPolicyApiImpl クラスまたは SmDmsApiImpl クラスに対するコンストラクタを通してポリシー管理 API または DMS API に渡します。
状況 | 以下を実行 | 結果 |
ユーザの認証からの既存のセッションがある。 | — | 認証ユーザに対するセッション指定を渡します。 |
既存のセッションがありません。 | CA Single Sign-on 管理者として接続する必要があります。 | メソッド SmApiSession.login() を使用します。 |
既存のセッションがありません。 | 管理者ではないユーザとして接続します。 | ユーザのためのセッション指定を取得するために Java エージェント API を使用します。 |
認証されたユーザ用のセッション指定を取得済みの場合、そのセッション指定を使用できます。新しいセッション指定を取得する必要はありません。
既存のセッションを使用するには、SmApiSession オブジェクトを作成し、そのオブジェクトとセッション指定を関連付けます。
CA Single Sign-on
管理者としてログインします。CA Single Sign-on
管理者を認証するには、ユーティリティ パッケージの SmApiSession クラスの login() メソッドを使用します。このメソッドは、管理者を認証するために管理者のログイン認証情報(ユーザ名とパスワード)を使用します。この login() メソッドを呼び出すと、セッション指定が取得され、SmApiResult オブジェクトが返されます。login() メソッドの構文を以下に示します。
result=mySession.login (username,password,IPaddress,challengeReason);
challengeReason パラメータに対する値を以下のように提供します。
- 管理者の初期ログインで、challengeReason を 0(理由なし)に設定します。
- 初期ログインが失敗する場合は、次回の login() 呼び出しで challengeReason を使用して前回の認証試行の結果を指定します。challengeReason に割り当てる理由値を取得するには、SmApiResult オブジェクトの getReason() を呼び出します。
ユーザに対する新しいセッション指定を取得するには、Java エージェント API を使用してセッション指定を取得します。次に、SmApiSession オブジェクトを作成し、そのオブジェクトとセッション指定を関連付けます。
エージェント ディスカバリ
Single Sign-On
管理者は、エージェント ディスカバリを使用して、数年にわたって展開されているエージェントを含め、さまざまなタイプのエージェントのインスタンスを追跡できます。エージェント インスタンスは、任意のタイプのエージェント(たとえば Web エージェント、カスタム エージェント、ERP エージェント)が可能です。エージェント ディスカバリの認識範囲に含めるためには、エージェントがアクティブで、ポリシー サーバと通信中であることが必要です。5.x 以降のエージェントのみ追跡できます。r12.5 以前に作成されたエージェントの場合、エージェントの識別に IP アドレスとトラステッド ホストの組み合わせが使用されます。同じエージェントでも、この組み合わせが変わると、1 つエージェントに対して複数のエントリが生じることになります。
各 r12.5 エージェント インスタンスは固有の GUID により識別されます。GUID は設定ファイルに保存されています。複数のエージェント インスタンスで 1 つの設定ファイルを共有することはできません。設定ファイルの場所に加えて、AgentInstanceDef.java は、エージェント インスタンスの以下の属性を指定するパラメータを定義します。
- エージェント製品タイプ
- エージェント製品バージョン
- エージェント製品サブタイプ
- エージェント設定オブジェクト名
- ホスト設定オブジェクト名
エージェント ディスカバリの有効化
カスタム エージェントをエージェント ディスカバリの範囲内にしたい場合、以下のプロセスに従います。
- AgentInstanceDef.java クラスをインスタンス化します。
- getAgentIdFile メソッドを呼び出します。このメソッドが有効な設定パスを返す場合、エージェント インスタンスはエージェント ディスカバリ プロセスですでに処理されています。
- getAgentIdFile が設定ファイルを返さない場合、setAgentIdFile メソッドを呼び出し、設定ファイルの場所を提供します。
- (オプション)追加のメソッドを呼び出してエージェント インスタンスに対する属性情報を設定または取得します。
- オブジェクトの名前を渡して AgentAPI.setAgentInstanceInfo メソッドを呼び出します。
エージェント インスタンスは、エージェント インスタンスのアクティブ状態が継続していることをポリシー サーバに伝えるハートビート メッセージをポリシー サーバに定期的に送信します。
API 要求の作成および結果の処理
セッションを確立した後、クライアント アプリケーション内でメソッドを呼び出すことができます。
結果
はポリシー サーバから Java API 要求へのレスポンスです。結果は SmApiResult オブジェクトで返されます。例外
は予期しないクライアント側エラーからスローされます。例外には、原因および重大度などの追加情報を持つ結果が含まれます。API 要求の結果を保存する結果オブジェクトを作成するには、ユーティリティ パッケージの SmApiResult クラスのコンストラクタを使用します。たとえば、以下のようにします。SmApiResult result = new SmApiResult();
結果オブジェクト上でメソッド isSuccess() を呼び出すことで要求が成功したかどうかを確認できます。メソッドは、要求が成功した場合は true、失敗した場合は false を返します。
equals() メソッドを呼び出すことで、現在の結果オブジェクトと特定の結果オブジェクトを比較することができます。
equals() メソッドを使用して、現在の結果オブジェクトを、異なる種類の結果を表す SmApiResult 定数と比較できます。たとえば、以下のコードでは、一意の定数 SERVER_INVALID_PASSWORD によって表される結果は現在の結果オブジェクトと比較されます。
InetAddress address = InetAddress.getLocalHost();SmApiResult result = apiSession.login(usr,pwd,address,0);boolean resultStatus =result.equals(SmApiResult.SERVER_INVALID_PASSWORD);