Win32 API 日本語リファレンス
ホームSystem.RemoteDesktop › ITSGPolicyEngine

ITSGPolicyEngine

COM
IID8bc24f08-6223-42f4-a5b4-8e37cd135bbd継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

接続とリソースを承認するメソッドを公開します。

メソッド 4

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT AuthorizeConnection(GUID mainSessionId, LPWSTR username, AAAuthSchemes authType, LPWSTR clientMachineIP, LPWSTR clientMachineName, BYTE* sohData, DWORD numSOHBytes, BYTE* cookieData, DWORD numCookieBytes, HANDLE_PTR userToken, ITSGAuthorizeConnectionSink* pSink)

指定した接続がリモートデスクトップ ゲートウェイ (RD Gateway) への接続を承認されているかどうかを判定します。

mainSessionIdGUIDinRD Gateway によって接続要求に割り当てられる一意の識別子です。
usernameLPWSTRinユーザー名です。
authTypeAAAuthSchemesinRD Gateway への接続に使用する認証の種類を指定する AAAuthSchemes 列挙型の値です。
clientMachineIPLPWSTRinユーザーのコンピューターの IP アドレスです。
clientMachineNameLPWSTRinユーザーのコンピューターの名前です。
sohDataBYTE*inユーザーのコンピューターから提供される正常性ステートメント (SoH) を格納する BYTE へのポインターです。承認プラグインが正常性ステートメントを必要としない場合、このパラメーターは NULL です。詳細については、IsQuarantineEnabled メソッドを参照してください。
numSOHBytesDWORDinsohData パラメーターが参照するバイト数です。
cookieDataBYTE*inユーザーから提供される Cookie を格納する BYTE へのポインターです。authType パラメーターが AA_AUTH_COOKIE に設定されていない場合、このパラメーターは NULL です。
numCookieBytesDWORDincookieData パラメーターが参照するバイト数です。
userTokenHANDLE_PTRinユーザーのユーザー トークンを指定する HANDLE へのポインターです。ユーザーが Windows を実行していない場合、このパラメーターは NULL です。
pSinkITSGAuthorizeConnectionSink*in承認の結果を RD Gateway に通知するために承認プラグインが使用する必要がある ITSGAuthorizeConnectionSink インターフェイスへのポインターです。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。

解説(Remarks)

このメソッドが S_OK を返した場合、RD Gateway は承認プラグインが ITSGAuthorizeConnectionSink インターフェイスのメソッドを呼び出すのを待機します。それ以外の値が返された場合、RD Gateway は承認要求を直ちに拒否します。

承認に 1 秒を超える時間がかかる場合は、承認を実行するために別のスレッドを開始することをお勧めします。

AuthorizeConnection メソッドを使用するサンプルについては、Remote Desktop Gateway Pluggable Authentication and Authorization サンプルを参照してください。

vtbl 4 HRESULT AuthorizeResource(GUID mainSessionId, INT subSessionId, LPWSTR username, LPWSTR* resourceNames, DWORD numResources, LPWSTR* alternateResourceNames, DWORD numAlternateResourceName, DWORD portNumber, LPWSTR operation, BYTE* cookie, DWORD numBytesInCookie, ITSGAuthorizeResourceSink* pSink)

指定した接続がどのリソースへの接続を承認されているかを判定します。

mainSessionIdGUIDinRD Gateway によって接続要求に割り当てられる一意の識別子です。
subSessionIdINTinRD Gateway によってサブセッションに割り当てられる一意の識別子です。サブセッションとは、別のセッションから起動されるセッションです。
usernameLPWSTRinユーザー名です。
resourceNamesLPWSTR*in承認するリソースの一覧です。
numResourcesDWORDinresourceNames パラメーターが参照するリソースの数です。
alternateResourceNamesLPWSTR*in代替リソース名の一覧を格納する BSTR へのポインターです。このパラメーターは、RD 接続ブローカーが使用されている場合にのみ有効です。
numAlternateResourceNameDWORDinalternateResourceNames パラメーターが参照する代替リソース名の数です。
portNumberDWORDinユーザーが指定したポート番号です。
operationLPWSTRinユーザーがリソースに対して試みている操作です。このパラメーターは常に "RDP" に設定されます。
cookieBYTE*inユーザーから提供される Cookie を格納する BYTE へのポインターです。ユーザーが Cookie を使用して認証しなかった場合、このパラメーターは NULL です。
numBytesInCookieDWORDincookie パラメーターが参照するバイト数です。
pSinkITSGAuthorizeResourceSink*in承認の結果を RD Gateway に通知するために承認プラグインが使用する必要がある ITSGAuthorizeResourceSink インターフェイスへのポインターです。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。

解説(Remarks)

このメソッドが S_OK を返した場合、RD Gateway は承認プラグインが ITSGAuthorizeResourceSink インターフェイスのメソッドを呼び出すのを待機します。それ以外の値が返された場合、RD Gateway は承認要求を直ちに拒否します。

承認に 1 秒を超える時間がかかる場合は、承認を実行するために別のスレッドを開始することをお勧めします。

AuthorizeResource メソッドを使用するサンプルについては、Remote Desktop Gateway Pluggable Authentication and Authorization サンプルを参照してください。

vtbl 5 HRESULT Refresh()

このメソッドは予約されています。

戻り値

常に S_OK を返します。

vtbl 6 HRESULT IsQuarantineEnabled(BOOL* quarantineEnabled)

承認プラグインがユーザーのコンピューターからの正常性ステートメント (SoH) を必要とするかどうかを示します。

quarantineEnabledBOOL*out承認プラグインがユーザーのコンピューターからの正常性ステートメントを必要とするかどうかを示します。RD Gateway を使用してユーザーのコンピューターに SoH を要求する場合は TRUE、それ以外の場合は FALSE です。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。エラー コードが返された場合、RD Gateway は SoH が必要ないものと見なします。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 指定が可能。