ITSGPolicyEngine
COM公式ドキュメント
接続とリソースを承認するメソッドを公開します。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定した接続がリモートデスクトップ ゲートウェイ (RD Gateway) への接続を承認されているかどうかを判定します。
| mainSessionId | GUID | in | RD Gateway によって接続要求に割り当てられる一意の識別子です。 |
| username | LPWSTR | in | ユーザー名です。 |
| authType | AAAuthSchemes | in | RD Gateway への接続に使用する認証の種類を指定する AAAuthSchemes 列挙型の値です。 |
| clientMachineIP | LPWSTR | in | ユーザーのコンピューターの IP アドレスです。 |
| clientMachineName | LPWSTR | in | ユーザーのコンピューターの名前です。 |
| sohData | BYTE* | in | ユーザーのコンピューターから提供される正常性ステートメント (SoH) を格納する BYTE へのポインターです。承認プラグインが正常性ステートメントを必要としない場合、このパラメーターは NULL です。詳細については、IsQuarantineEnabled メソッドを参照してください。 |
| numSOHBytes | DWORD | in | sohData パラメーターが参照するバイト数です。 |
| cookieData | BYTE* | in | ユーザーから提供される Cookie を格納する BYTE へのポインターです。authType パラメーターが AA_AUTH_COOKIE に設定されていない場合、このパラメーターは NULL です。 |
| numCookieBytes | DWORD | in | cookieData パラメーターが参照するバイト数です。 |
| userToken | HANDLE_PTR | in | ユーザーのユーザー トークンを指定する HANDLE へのポインターです。ユーザーが Windows を実行していない場合、このパラメーターは NULL です。 |
| pSink | ITSGAuthorizeConnectionSink* | in | 承認の結果を RD Gateway に通知するために承認プラグインが使用する必要がある ITSGAuthorizeConnectionSink インターフェイスへのポインターです。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
このメソッドが S_OK を返した場合、RD Gateway は承認プラグインが ITSGAuthorizeConnectionSink インターフェイスのメソッドを呼び出すのを待機します。それ以外の値が返された場合、RD Gateway は承認要求を直ちに拒否します。
承認に 1 秒を超える時間がかかる場合は、承認を実行するために別のスレッドを開始することをお勧めします。
AuthorizeConnection メソッドを使用するサンプルについては、Remote Desktop Gateway Pluggable Authentication and Authorization サンプルを参照してください。
指定した接続がどのリソースへの接続を承認されているかを判定します。
| mainSessionId | GUID | in | RD Gateway によって接続要求に割り当てられる一意の識別子です。 |
| subSessionId | INT | in | RD Gateway によってサブセッションに割り当てられる一意の識別子です。サブセッションとは、別のセッションから起動されるセッションです。 |
| username | LPWSTR | in | ユーザー名です。 |
| resourceNames | LPWSTR* | in | 承認するリソースの一覧です。 |
| numResources | DWORD | in | resourceNames パラメーターが参照するリソースの数です。 |
| alternateResourceNames | LPWSTR* | in | 代替リソース名の一覧を格納する BSTR へのポインターです。このパラメーターは、RD 接続ブローカーが使用されている場合にのみ有効です。 |
| numAlternateResourceName | DWORD | in | alternateResourceNames パラメーターが参照する代替リソース名の数です。 |
| portNumber | DWORD | in | ユーザーが指定したポート番号です。 |
| operation | LPWSTR | in | ユーザーがリソースに対して試みている操作です。このパラメーターは常に "RDP" に設定されます。 |
| cookie | BYTE* | in | ユーザーから提供される Cookie を格納する BYTE へのポインターです。ユーザーが Cookie を使用して認証しなかった場合、このパラメーターは NULL です。 |
| numBytesInCookie | DWORD | in | cookie パラメーターが参照するバイト数です。 |
| pSink | ITSGAuthorizeResourceSink* | in | 承認の結果を RD Gateway に通知するために承認プラグインが使用する必要がある ITSGAuthorizeResourceSink インターフェイスへのポインターです。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
このメソッドが S_OK を返した場合、RD Gateway は承認プラグインが ITSGAuthorizeResourceSink インターフェイスのメソッドを呼び出すのを待機します。それ以外の値が返された場合、RD Gateway は承認要求を直ちに拒否します。
承認に 1 秒を超える時間がかかる場合は、承認を実行するために別のスレッドを開始することをお勧めします。
AuthorizeResource メソッドを使用するサンプルについては、Remote Desktop Gateway Pluggable Authentication and Authorization サンプルを参照してください。
このメソッドは予約されています。
戻り値
常に S_OK を返します。
承認プラグインがユーザーのコンピューターからの正常性ステートメント (SoH) を必要とするかどうかを示します。
| quarantineEnabled | BOOL* | out | 承認プラグインがユーザーのコンピューターからの正常性ステートメントを必要とするかどうかを示します。RD Gateway を使用してユーザーのコンピューターに SoH を要求する場合は TRUE、それ以外の場合は FALSE です。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。エラー コードが返された場合、RD Gateway は SoH が必要ないものと見なします。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITSGPolicyEngine "{8BC24F08-6223-42F4-A5B4-8E37CD135BBD}" #usecom global ITSGPolicyEngine IID_ITSGPolicyEngine "{}" #comfunc global ITSGPolicyEngine_AuthorizeConnection 3 int,wstr,int,wstr,wstr,var,int,var,int,sptr,sptr #comfunc global ITSGPolicyEngine_AuthorizeResource 4 int,int,wstr,var,int,var,int,int,wstr,var,int,sptr #comfunc global ITSGPolicyEngine_Refresh 5 #comfunc global ITSGPolicyEngine_IsQuarantineEnabled 6 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ITSGPolicyEngine "{8BC24F08-6223-42F4-A5B4-8E37CD135BBD}" #usecom global ITSGPolicyEngine IID_ITSGPolicyEngine "{}" #comfunc global ITSGPolicyEngine_AuthorizeConnection 3 int,wstr,int,wstr,wstr,sptr,int,sptr,int,sptr,sptr #comfunc global ITSGPolicyEngine_AuthorizeResource 4 int,int,wstr,sptr,int,sptr,int,int,wstr,sptr,int,sptr #comfunc global ITSGPolicyEngine_Refresh 5 #comfunc global ITSGPolicyEngine_IsQuarantineEnabled 6 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。