C 用のイベント API

イベント API を使用すると、カスタム イベント ハンドラを作成できます。イベント API を使用して、stmndr は外部のソース、プロバイダ、またはアプリケーションを使用してイベントをログ記録できます。その後、これらの他のソース、プロバイダ、またはアプリケーションを通してログ記録された情報にアクセスできます。stmndr アクティビティの管理者にアラートするためのアプリケーションを構築できます。たとえば、監査サーバが開始するか、誰かが新規ポリシーを作成したときにイベント ハンドラは管理者に電子メールを送信できます。
sm1252sp1jjp
イベント API を使用すると、カスタム イベント ハンドラを作成できます。イベント API を使用して、
CA Single Sign-on
は外部のソース、プロバイダ、またはアプリケーションを使用してイベントをログ記録できます。その後、これらの他のソース、プロバイダ、またはアプリケーションを通してログ記録された情報にアクセスできます。
CA Single Sign-on
アクティビティの管理者にアラートするためのアプリケーションを構築できます。たとえば、監査サーバが開始するか、誰かが新規ポリシーを作成したときにイベント ハンドラは管理者に電子メールを送信できます。
イベント API には、ポリシー サーバへのローカル アクセス タイプがあります。
2
イベント API セットアップ
各 イベント ハンドラは、イベント API プロバイダ インターフェースをサポートする共有ライブラリのインスタンスです。カスタム イベント ハンドラをサポートするには、共有ライブラリを構築する必要があります。
以下のいずれかの場所に共有ライブラリをインストールします。
  • UNIX プラットフォームでは、
    CA Single Sign-on
    lib ディレクトリ
  • Windows プラットフォームでは、
    CA Single Sign-on
    bin ディレクトリ
共有ライブラリは以下のエントリ ポイントをエクスポートする必要があります。
  • SmEventInit()
  • SmEventRecord()
  • SmEventRelease()
イベント ハンドラを構築するには、SmEventApi.h ヘッダ ファイルを含めます。
#include "SmEventApi.h"
イベント プロバイダ構造
以下の表は、イベント プロバイダ API 関数と共に使用される構造定義のリストを示しています。
構造
説明
アクセス イベントに関する情報が含まれます。
Entitlement Management Services(EMS)イベントに関する情報が含まれます。EMS イベントは、ディレクトリ オブジェクト上で実行されたアクションから生成されます。
オブジェクト イベントに関する情報が含まれます。
システム イベントに関する情報が含まれます。
SmLog_Access_t
アクセス イベントに関する情報が含まれます。
構文
typedef struct SmLog_Access_s
{
   long nVersion;
   long nCurrentTime;
   Sm_Api_Reason_t nReason;
   char* szAgentName;
   char* szSessionId;
   char* szClientIp;
   char* szUserName;
   char* szDomainOid;
   char* szRealmName;
   char* szRealmOid;
   char* szAuthDirName;
   char* szAuthDirServer;
   char* szAuthDirNamespace;
   char* szServer;
   char* szResource;
   char* szAction;
   char* szTransactionId;
   char* szStatusMsg;
   char* szDomainName;
   char* szImpersonatorName;
   char* szImpersonatorDirName;
} SmLog_Access_t;
フィールド
説明
nVersion
ポリシー サーバのバージョン番号。
nCurrentTime
イベントが発生したポリシー サーバ時間(GMT)。
nReason
理由識別子が含まれます。
szAgentName
エージェントの名前です。
szSessionId
セッション ID を追跡します。
szClientIp
クライアントの IP アドレス。
szUserName
ユーザまたは管理者の完全な識別名。
szDomainOid
ドメイン オブジェクトのオブジェクト識別子。
szRealmName
リソースが保護されているレルムの名前。
szRealmOid
レルム オブジェクトに対するオブジェクト識別子。
szAuthDirName
ディレクトリの名前。
szAuthDirServer
ユーザ コンテキストが確立された
CA Single Sign-on
ユーザ ディレクトリのディレクトリ サーバ。
szAuthDirNamespace
LDAP、WinNT または ODBC などのディレクトリ ネームスペース。
szServer
リソースを保持するサーバの名前。
szResource
リソースの名前。
szAction
リソース上で実行されるアクションのタイプ。Web リソースにアクセスする場合の典型的なアクションは GET です。
szTransactionId
エージェントとポリシー サーバ間のトランザクションの識別子。エージェントはこの ID を設定し、ポリシー サーバがそれをログ記録します。
エージェントがポリシー サーバに対して要求を発行する場合、ID を要求と関連付けます。エージェントは、このような要求を多く発行する可能性があるためポリシー サーバからの情報を元の要求と一致するために ID を使用します。
szStatusMsg
ステータス メッセージ。
szImpersonatorName
インパーソネータの名前を指定します。
進行中のインパーソネートされたセッションがない場合、NULL に設定されます。
szDomainName
ドメインの名前を指定します。
szImpersonator
DirName
インパーソネータを認証するのに使用されるユーザ ディレクトリの名前を指定します。
進行中のインパーソネートされたセッションがない場合、NULL に設定されます。
SmLog_EMS_t
Entitlement Management Services(EMS)イベントに関する情報が含まれます。EMS イベントは、ディレクトリ オブジェクト上で実行されたアクションから生成されます。
構文
typedef struct SmLog_EMS_s
{
   long nVersion;
   long nCurrentTime;
   char* szUserName;
   char* szSessionId;
   char* szDirName;
   char* szObjName;
   char* szObjPath;
   char* szObjClass;
   char* szOrgName:
   char* szRoleName;
   int   szFieldDesc;
   char* szStatusMsg;
} SmLog_EMS_t;
フィールド
説明
nVersion
ポリシー サーバのバージョン番号。
nCurrentTime
イベントが発生したポリシー サーバ時間(GMT)。
szUserName
ユーザが管理者の場合、EMS イベントを開始した管理者の ID。イベントがエンドユーザ イベントの場合、ユーザ名は Registration です。
szSessionID
EMS サービス セッション ID。
szDirName
EMS のイベントによって影響を受ける
CA Single Sign-on
ディレクトリの名前。
szObjName
このイベントによってターゲットにされるオブジェクトの名前。
szObjPath
オブジェクトの完全な識別名。
szObjClass
オブジェクトのクラス名。
szOrgName
オブジェクトの組織の名前。
szRoleName
オブジェクトが関連付けられるロールの名前(ロールが含まれるイベントに対してのみ)。
szFieldDesc
イベントの説明。
szStatusMsg
ステータス メッセージ。
SmLog_Obj_t
オブジェクト イベントに関する情報が含まれます。
構文
typedef struct SmLog_Obj_s
{
   long nVersion;
   long nCurrentTime;
   char* szUserName;
   char* szSessionId;
   char* szDomainOid;
   char* szObjName;
   char* szObjOid;
   char* szFieldDesc;
   char* szStatusMsg;
} SmLog_Obj_t;
フィールド
説明
nVersion
ポリシー サーバのバージョン番号。
nCurrentTime
イベントが発生したポリシー サーバ時間(GMT)。
szUserName
イベントをトリガしたユーザの名前。
szSessionId
セッション ID を追跡します。
szDomainOid
ドメイン オブジェクトに対するオブジェクト識別子。
szObjName
オブジェクトの名前。
szObjOid
オブジェクトのオブジェクト識別子。
szFieldDesc
ユーザ DN。
szStatusMsg
ステータス メッセージ。
SmLog_System_t
システム イベントに関する情報が含まれます。
構文
typedef struct SmLog_System_s
{
   long nVersion;
   long nCurrentTime;
   char* szName;
   char* szIpAddress;
   int   nIpPort;
   char* szMsg;
} SmLog_System_t;
フィールド
説明
nVersion
ポリシー サーバのバージョン番号。
nCurrentTime
イベントが発生した時間。
szName
クライアント、データベースまたはディレクトリの名前。
szIpAddress
クライアントの IP アドレス。
nIpPort
クライアントが通信するポート番号。
szMsg
イベントに対する文字列メッセージを受信するバッファ。
イベント関数宣言
以下の表は、イベント API で使用される関数のリストを示しています。共有ライブラリはこれらのエントリ ポイントをエクスポートする必要があります。
関数定義
説明
SmEventInit()
イベント ハンドラが自身の初期化手順を実行できるように、ポリシー サーバによって呼び出されます。
SmEventRecord()
イベントが示される場合にポリシー サーバによって呼び出されます。
SmEventRelease()
イベント ハンドラが自身のランダウン手順を実行できるように、ポリシー サーバによって呼び出されます。
SmEventInit()
この関数は、イベント プロバイダが自身の初期化手順を実行するように、ポリシー サーバによって呼び出されます。この呼び出しは、プロバイダが最初にロードされるときに一度実行されます。
構文
int SM_EXTERN SmEventInit();
戻り値
成功する場合は 1、失敗した場合は 0 を返します。
SmEventRecord()
この関数は、イベントが示される場合にポリシー サーバによって呼び出されます。
構文
void SM_EXTERN SmEventRecord (
   const int   nCategoryType,
   const int   nCategory,
   const int   nEventId,
   void*       pData
);
パラメータ
I/O
説明
nCategoryType
I
ログ記録されているイベントのタイプ。以下のいずれかの有効な値です。
SmLog_Access
SmLog_EMS
SmLog_Obj
SmLog_System
nCategory
I
イベント カテゴリ。このパラメータ表の後に有効なイベント カテゴリのリストが示されます。
nEventID
I
イベント。
pData
I
プロパティ インスタンスへのポインタ。構造は以下のいずれかです。
nCategory
パラメータに対する有効な値は以下のとおりです。
SmLogAccessCat_Admin
SmLogAccessCat_Affiliate
SmLogAccessCat_Auth
SmLogAccessCat_Az
SmLogEmsCat_DirectoryAdmin
SmLogEmsCat_DirectorySession
SmLogEmsCat_DirectoryUser
SmLogEmsCat_EventPostprocess
SmLogEmsCat_EventPreprocess
SmLogObjCat_ActiveExpr
SmLogObjCat_Admin
SmLogObjCat_Agent
SmLogObjCat_AgentGroup
SmLogObjCat_AgentKey
SmLogObjCat_Auth
SmLogObjCat_AuthAzMap
SmLogObjCat_CertMap
SmLogObjCat_Domain
SmLogObjCat_KeyManagement
SmLogObjCat_ManagementCommand
SmLogObjCat_ODBCQuery
SmLogObjCat_PasswordPolicy
SmLogObjCat_Policy
SmLogObjCat_PolicyLink
SmLogObjCat_Property
SmLogObjCat_PropertyCollection
SmLogObjCat_PropertySection
SmLogObjCat_Realm
SmLogObjCat_Response
SmLogObjCat_ResponseAttr
SmLogObjCat_ResponseGroup
SmLogObjCat_Root
SmLogObjCat_RootConfig
SmLogObjCat_Rule
SmLogObjCat_RuleGroup
SmLogObjCat_Scheme
SmLogObjCat_SelfReg
SmLogObjCat_TaggedString
SmLogObjCat_UserDirectory
SmLogObjCat_UserPolicy
SmLogObjCat_Variable
SmLogObjCat_VariableType
SmLogObjCat_Vendor
SmLogObjCat_VendorAttr
SmLogSystemCat_Acct
SmLogSystemCat_Admin
SmLogSystemCat_Auth
SmLogSystemCat_Az
SmLogSystemCat_Combined
SmLogSystemCat_System
SmEventRelease()
この関数は、イベント ハンドラが自身のランダウン手順を実行するように、ポリシー サーバによって呼び出されます。この呼び出しは、
CA Single Sign-on
がシャットダウンするときに 1 回実行されます。
構文
void SM_EXTERN SmEventRelease();
イベント ログ
Single Sign-On
は、明確に定義されたデータを含む以下のタイプのイベントをログ記録します。
  • アクセス イベント(構造 SmLog_Access_t に関連する)。
  • EMS イベント(構造 SmLog_EMS_t に関連する)。
  • オブジェクト イベント(構造 SmLog_Obj_t に関連する)。
  • システム イベント(構造 SmLog_Obj_t に関連する)。