C 用のトンネル サービス API

トンネル サービス API は、エージェントとトンネル サービスをサポートする共有ライブラリ間のデータの安全な転送を提供します。
sm1252sp1jjp
トンネル サービス API は、エージェントとトンネル サービスをサポートする共有ライブラリ間のデータの安全な転送を提供します。
エージェントがトンネル要求をポリシー サーバに送信する場合、要求には次のものが含まれます。
  • サービス ライブラリの名前
  • サービス ライブラリで呼び出される関数
  • 関数に渡されるデータ
ポリシー サーバは適切なサービスを初期化し、要求された関数を呼び出し、データを関数へ渡します。サービスがそのタスクを実行すると、ポリシー サーバはエージェントに結果を返します。以下の図は、トンネル サービス プロセスを示しています。
Graphic showing how the API is used in the tunnel service process
トンネル サービス API には、ポリシー サーバへのローカル アクセス タイプがあります。
カスタム トンネル サービスの開発
トンネル サービスはそれぞれ、トンネル サービス API をサポートする共有ライブラリのインスタンスです。トンネル サービスをサポートするには、新しい共有ライブラリを構築する必要があります。
以下のいずれかの場所に共有ライブラリをインストールします。
  • UNIX プラットフォームでは、
    CA Single Sign-on
    lib ディレクトリ
  • Windows プラットフォームでは、
    CA Single Sign-on
    bin ディレクトリ
ファイルを含める
トンネル サービスを開発するには、SmApi.h ヘッダ ファイルを含めます。
#include "SmApi.h"
トンネル サービス API
共有ライブラリは、外部的に表示できるエントリ ポイントとして以下の関数を提供する必要があります。
関数
説明
SmQueryVersion()
カスタム ライブラリが準拠しているトンネル サービス API のバージョンを要求します。
SmTunnelInit()
トンネル サービスを初期化します。
SmTunnelRelease()
トンネル サービスを解放します。
ユーザ定義関数
トンネル エージェントが要求している関数を呼び出します。
共有ライブラリ内のエントリ ポイントはそれぞれ指定された構文に従って定義される必要があります。
注:
Microsoft Visual Studio を使用している場合は、関数アドレスをモジュール定義ファイル(.DEF ファイル)にエクスポートします。関数アドレスをエクスポートするには、.DEF ファイルを作成し、.DEF ファイルのエクスポート セクションに、先の表に記載されたすべてのトンネル サービス関数をリストアップします。.DEF ファイルを作成したら、Microsoft Visual Studio プロジェクトにそれを追加します。
SmQueryVersion()
CA Single Sign-on
は、カスタム ライブラリが準拠しているトンネル サービス API のバージョンを要求するときにこの関数を呼び出します。
構文
int SM_EXTERN SmQueryVersion (
   const Sm_Api_Context_t* lpApiContext
);
パラメータ
I/O
説明
lpApiContext
I
API コンテキスト構造へのポインタ。
戻り値
トンネル サービス API のバージョン番号を返します。現在サポートされるバージョンは Sm_Api_Version_V4 と Sm_Api_Version_V4_1 です。バージョン定数は SmApi.h で定義されています。
SmTunnelInit()
CA Single Sign-on
は、トンネル サービスが自身の初期化手順を実行できるようにこの関数を呼び出します。このコールは、トンネル サービスが初めてロードされるときに 1 回行われます。情報は次に使用するためキャッシュされます。
構文
int SM_EXTERN SmTunnelInit (
   void**                     ppServiceHandle,
   const Sm_Api_Context_t*    lpApiContext,
   const int                  nBytesStatusBuf,
   char*                      lpszStatusBuf
);
パラメータ
I/O
説明
ppServiceHandle
I
トンネル サービス ライブラリによって使用される内部ポインタ。
lpApiContext
I
API コンテキスト構造へのポインタ。
nBytesStatusBuf
O
出力ステータス バッファの最大サイズ。
lpszStatusBuf
O
出力バッファは、トンネル サービスからステータス メッセージを受信します。
戻り値
成功の場合は 0、失敗の場合は -1 を返します。
SmTunnelRelease()
トンネル サービスは自身のランダウン手順を実行できます。この呼び出しは、
CA Single Sign-on
がシャットダウンしているときに 1 回実行されます。
構文
void SM_EXTERN SmTunnelRelease (
   void*                     pServiceHandle,
   const Sm_Api_Context_t*   lpApiContext
);
パラメータ
I/O
説明
pServiceHandle
I
トンネル サービス ライブラリによって使用される内部ポインタ。
lpApiContext
I
API コンテキスト構造へのポインタ。
ユーザ定義関数
トンネル エージェントは、この関数をリクエストします。
構文
int SM_EXTERN <func-spec> (
   void*                             pServiceHandle,
   const Sm_Api_Context_t*           lpApiContext,
   const Sm_Api_RequestContext_t*    lpReqContext,
   const Sm_Api_TunnelContext_t*     lpTunnelContext,
   const int                         nBytesInBuf,
   void*                             lpInBuf,
   const int                         nBytesOutBuf,
   void*                             lpOutBuf,
   const int                         nBytesStatusBuf,
   char*                             lpszStatusBuf
);
パラメータ
I/O
説明
pServiceHandle
I
トンネル サービス ライブラリによって使用される内部ポインタ。
lpApiContext
I
API コンテキスト構造へのポインタ。
lpReqContext
I
API 要求構造へのポインタ。
lpTunnelContext
I
API トンネル コンテキストへのポインタ。
nBytesInBuf
I
入力バッファ内のバイト数。
lpInBuf
I
リモート エージェントから送信される情報が含まれる入力バッファ。
nBytesOutBuf
O
出力結果バッファの最大サイズ。
lpOutBuf
O
結果を受信する出力バッファ。
nBytesStatusBuf
O
ステータス バッファの最大サイズ。
lpszStatusBuf
O
ステータスを受信するステータス バッファ。