ISSONotification.InitializeAdapter メソッド
ENTSSO システムに対してパスワード同期アダプターを初期化します。
構文
HRESULT InitializeAdapter(
BSTR strAdapterName,
ULONG lFlags,
ULONGLONG* hNotifyEvent,
GUID* guidTrackingId);
パラメーター
bstrAdapterName
[in] アダプターの一意の名前。
ulFlags
[入力] SSO_NOTIFICATION_FLAG 値のビットごとの組み合わせ。
phNotifyEvent
[out] このメソッドが完了すると、PS ヘルパーで作成されたイベント ハンドルが格納されます。 MIDL は HANDLE データ型をサポートしていないので、HANDLE への戻り値をキャストする必要があります。 アダプターがイベント ハンドルを必要としない場合は、このパラメーターに NULL が返されます。
pguidTrackingId
[out] このメソッドが完了すると、ENTSSO で生成された追跡 ID が格納されます。 追跡 ID は監査目的で使用されます。 アダプターが追跡 ID を必要としない場合は、このパラメーターに NULL が返されます。
戻り値
このメソッドは、正しく終了したかどうかを示す HRESULT を返します。 詳細については、「エラー値」のセクションを参照してください。
エラー値
このメソッドは、次の表のいずれかの値を含む HRESULT を返します。
値 | 説明 |
---|---|
S_OK | 初期化が成功しました。 |
S_FALSE | 初期化に成功しましたが、再接続でした。 詳細については、「解説」を参照してください。 |
E_ACCESSDENIED | アクセスが拒否されました。 |
ENTSSO_E_NO_SERVER | ENTSSO サーバーに接続できませんでした。 ENTSSO サービスが実行中であることを確認してください。 |
注釈
InitializeAdapter を呼び出す前に、関連するアダプター名を ENTSSO に入力しておく必要があります。
InitializeAdapter は、InitializeAdapter を呼び出す前に他の ISSONotification メソッドを呼び出すことができないため、アダプターが呼び出す最初のメソッドである必要があります。 ShutdownAdapter を呼び出すまで、InitializeAdapter を再度呼び出さないでください。 ただし、アダプターをシャットダウンすると、いつでも InitializeAdapter を呼び出して再接続できます。
InitializeAdapter は 、PS ヘルパーとアダプター間の通信を開始します。 アダプターが InitializeAdapter を呼び出すと、PS ヘルパーは、暗号化された LRPC 経由で Enterprise Single Sign-On (ENTSSO) サービスを呼び出します。 ENTSSO サービスはアダプター名を使用して、現在のアダプター用に定義されたアクセス アカウントに基づき、アクセスを許可または拒否します。
InitializeAdapter を呼び出す前に、ENTSSO サービスを開始しておく必要があります。 アダプター プロセスが、サービスを開始するのに十分な特権で実行されていないことがあるため、PS ヘルパーで自動的に ENTSSO を開始することはできません。 このため、アダプターで、アダプターと ENTSSO の間のすべての通信を開始する必要があります。
PS ヘルパーは最初に ENTSSO サービスを使用して接続を確立し、次に名前付きのイベントを作成します。 その後、PS ヘルパーは名前付きのイベントを ENTSSO サービスに渡します。 ENTSSO は、通知がアダプターに到着すると、PS ヘルパーに対してイベント シグナルを使用します。 ENTSSO はイベントをアダプターに返してアダプターがイベントを待機できるようにするか、イベントを無視して PS ヘルパーが待機できるようにします。 こうすると、アダプターのスレッド モデルのアダプターの柔軟性が高まります。 イベントは、ENTSSO が ShutdownAdapter の呼び出しによって開始された処理を完了するまでアダプターに対して有効です。
ENTSSO サービスは、ENTSSO が実行中であれば、PS ヘルパーからの最初のリモート プロシージャ コール (RPC) を受け付けます。 その後、ENTSSO によるアクセス確認が行われます。 ENTSSO がデータベースにアクセスしてアダプター構成情報を取得できない場合、E_ACCESSDENIED イベントが返されます。 ENTSSO にアダプター構成情報があるのに、現在データベースに通知できない場合、ENTSSO は引き続きパスワード変更通知を受け付けて通知をローカルにバッファーし、ローカル一時ファイルで通知を暗号化します。
InitializeAdapter は、アダプターが削除または無効になっている場合もE_ACCESSDENIEDを返します。
すべてのエラーの詳細情報は、Windows イベント ログで確認できます。
アダプターには、ENTSSO と通信する際に使用する名前が指定されていることを前提とします。
InitializeAdapter はシングル スレッドです。 InitializeAdapter を呼び出す他のすべてのスレッドは、InitializeAdapter が完了するまでブロックされます。 また、 ShutdownAdapter メソッドと同期されます。
ShutdownAdapter を発行する前に、アダプター プロセスが終了する可能性があります。 この場合、ENTSSO が対応する ShutdownAdapter を受信する前に ENTSSO が別の InitializeAdapter を受信した場合、ENTSSO は 2 番目の ShutdownAdapter 呼び出しを再接続として扱います。 この場合、ENTSSO は既存のイベントをクリーンアップして無効化し、新しいハンドルを作成します。 ENTSSO は、シャットダウン通知を使用して、古いイベント ハンドルの保留中の ReceiveNotifications も完了します。
再接続の場合は、 InitializeAdapter から新しい追跡 ID が返されます。 InitializeAdapter から返される追跡 ID はセッション ID と見なすことができるため、ENTSSO は新しい追跡 ID を返します。 さらに、ENTSSO は保留中の (ただし未確認の) 通知をアダプターに再発行します。
要件
プラットフォーム:Windows Server 2022、Windows Server 2019、Windows Server 2016、Windows 11、Windows 10
参照
ISSONotification インターフェイス (COM)
ISSONotification メンバー
Enterprise Single Sign-On によるプログラミング