Win32 API 日本語リファレンス
ホームSecurity.Authorization › IAzClientContext

IAzClientContext

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IIDeff1f00b-488a-466d-afd9-a401c5f9eef5継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

特定のクライアントを表す状態を保持します。

メソッド 13

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT AccessCheck(LPWSTR bstrObjectName, VARIANT varScopeNames, VARIANT varOperations, VARIANT varParameterNames, VARIANT varParameterValues, VARIANT varInterfaceNames, VARIANT varInterfaceFlags, VARIANT varInterfaces, VARIANT* pvarResults)

現在のクライアントコンテキストが、指定された操作の実行を許可されているかどうかを判定します。

bstrObjectNameLPWSTRinアクセス対象のオブジェクトの名前。この文字列は監査で使用されます。
varScopeNamesVARIANTinSAFEARRAY または JScript の Array オブジェクトを格納するバリアント。配列の各要素は、bstrObjectName パラメーターで指定したオブジェクトが一致するスコープの名前を含む VT_BSTR を保持します。配列に格納できる要素は 1 つだけです。既定のアプリケーションレベルのスコープを使用するには、配列の最初のエントリに空文字列 ("") または VT_EMPTY を設定するか、このパラメーターに VT_EMPTY を渡します。
varOperationsVARIANTinクライアントコンテキストによるアクセスを確認する対象の操作。SAFEARRAY または JScript の Array オブジェクトを格納するバリアントです。配列の各要素は、IAzApplication ポリシー内の IAzOperation オブジェクトの OperationID プロパティを表す VT_I2 または VT_I4 を保持します。
varParameterNamesVARIANTinAzBizRuleContext::GetParameter メソッドを通じてビジネスルール (BizRule) から利用できるパラメーターの名前。SAFEARRAY または JScript の Array オブジェクトを格納するバリアントです。配列の各要素は、パラメーター名を含む VT_BSTR を保持します。この配列は呼び出し元がアルファベット順に並べ替えておく必要があります。並べ替え順序は、大文字と小文字を区別する VarCmp による定義に従います。varParameterValues 配列の順序は、この配列の順序と一致している必要があります。既定値は VT_NULL です。
varParameterValuesVARIANTinAzBizRuleContext::GetParameter メソッドを通じてビジネスルール (BizRule) から利用できるパラメーターの値。SAFEARRAY または JScript の Array オブジェクトを格納するバリアントです。配列の各要素は、varParameterNames 配列の要素に対応する値を保持します。既定値は VT_NULL です。配列の各エントリには、VT_UNKNOWNVT_DISPATCH を除く任意の型を格納できます。
varInterfaceNamesVARIANTinBizRule スクリプト内で varInterfaces 配列内のインターフェイスを参照する際に使用される名前。SAFEARRAY または JScript の Array オブジェクトを格納するバリアントです。配列の各要素は、インターフェイス名を含む文字列バリアントを保持します。このメソッドは、配列の各エントリに対して IActiveScript::AddNamedItem メソッドを呼び出します。既定値は VT_NULL です。
varInterfaceFlagsVARIANTinIActiveScript::AddNamedItem の呼び出しに渡されるフラグ。SAFEARRAY または JScript の Array オブジェクトを格納するバリアントです。配列の各要素は VT_I4 を保持します。SCRIPTITEM_ISVISIBLE フラグは暗黙的に指定され、SCRIPTITEM_ISPERSISTENT フラグは無視されます。配列の各エントリは、varInterfaceNames 配列の対応する要素と一致している必要があります。既定値は VT_NULL です。
varInterfacesVARIANTinBizRule スクリプトから利用できるようにする IDispatch インターフェイス。SAFEARRAY または JScript の Array オブジェクトを格納するバリアントです。配列の各要素は IDispatch インターフェイスを保持します。配列の各エントリは、varInterfaceNames 配列の対応する要素と一致している必要があります。既定値は VT_NULL です。
pvarResultsVARIANT*out

アクセスチェックの結果を格納する SAFEARRAY を返すために使用される VARIANT へのポインター。SAFEARRAY の各要素は VT_I4 型の VARIANT です。配列の各エントリは、varOperations 配列の対応する要素に対応します。クライアントコンテキストにその操作へのアクセスが許可されている場合、pvarResults 配列の対応する要素に NO_ERROR が返されます。それ以外の値は、その操作へのアクセスが許可されていないことを示します。失敗を示す代表的な値は ERROR_ACCESS_DENIED です。

JScript では、返された SAFEARRAY を JScript の Array オブジェクトに変換する必要があります。

戻り値

メソッドが成功した場合、NO_ERROR を返します。

メソッドが失敗した場合は、アクセスチェックの結果ではなく、メソッドの状態を示す HRESULT 値を返します。想定される値には次の表の値が含まれますが、これらに限定されません。一般的なエラーコードの一覧については、「Common HRESULT Values」を参照してください。

戻り値/値 説明
ERROR_FILE_CORRUPT
このエラーコードは、Active Directory の承認ストアが使用され、かつスコープの管理が委任されている場合に返されることがあります。委任されたスコープ内のタスク定義およびロール定義は BizRule を持つことができません。委任されたスコープ内のタスク定義またはロール定義に BizRule が含まれている場合 (ストアが破損していると発生し得ます)、AccessCheck メソッドは失敗します。
OLESCRIPT_E_SYNTAX
アクセスの評価に使用された BizRule に構文エラーが含まれています。

解説(Remarks)

クライアントコンテキストに RoleForAccessCheck プロパティが定義されている場合、AccessCheck メソッドはそのロールに対してのみ実行されます。

このメソッドが呼び出されると、アプリケーショングループのメンバーシップがクライアントコンテキストに追加されるため、同じクライアントコンテキストに対する以降のアクセスチェックで再計算する必要がなくなります。

このメソッドは BizRule から呼び出すことはできません。

vtbl 8 HRESULT GetBusinessRuleString(LPWSTR* pbstrBusinessRuleString)

ビジネスルール (BizRule) に対するアプリケーション固有の文字列を返します。

pbstrBusinessRuleStringLPWSTR*outBizRule に関する情報を含む文字列。文字列の形式と内容はアプリケーションによって定義されます。

戻り値

戻り値は HRESULT です。S_OK は成功を示します。それ以外の値は操作が失敗したことを示します。

vtbl 9 HRESULT get_UserDn(LPWSTR* pbstrProp)

現在のクライアントの名前を識別名 (DN) 形式で取得します。

pbstrPropLPWSTR*outクライアントの識別名(DN)を格納したBSTRを受け取るポインタである。

解説(Remarks)

DN 形式のクライアント名は、クライアントトークンを偽装 (impersonate) し、NameFormat パラメーターに NameFullyQualifiedDN を指定して GetUserNameEx 関数を呼び出すことで取得されます。

DN 形式のクライアント名の例は "CN=Ben Smith, OU=Software, OU=Example, O=FourthCoffee, C=US" です。

vtbl 10 HRESULT get_UserSamCompat(LPWSTR* pbstrProp)

現在のクライアントの名前を Windows セキュリティアカウントマネージャー (SAM) 互換形式で取得します。

pbstrPropLPWSTR*outクライアントのSAM互換アカウント名を格納したBSTRを受け取るポインタである。

解説(Remarks)

SAM 互換形式のクライアント名は、クライアントトークンを偽装 (impersonate) し、NameFormat パラメーターに NameSamCompatible を指定して GetUserNameEx 関数を呼び出すことで取得されます。

SAM 互換形式のクライアント名の例は "ExampleDomain\UserName" です。

vtbl 11 HRESULT get_UserDisplay(LPWSTR* pbstrProp)

現在のクライアントの名前をユーザー表示名形式で取得します。

pbstrPropLPWSTR*outクライアントの表示名を格納したBSTRを受け取るポインタである。

解説(Remarks)

ユーザー表示名形式のクライアント名は、クライアントトークンを偽装 (impersonate) し、NameDisplay パラメーターに NameCanonical を指定して GetUserNameEx 関数を呼び出すことで取得されます。

ユーザー表示名形式のクライアント名の例は "Ben Smith" です。

vtbl 12 HRESULT get_UserGuid(LPWSTR* pbstrProp)

現在のクライアントの名前を GUID 形式で取得します。

pbstrPropLPWSTR*outクライアントのGUIDを格納したBSTRを受け取るポインタである。

解説(Remarks)

GUID 形式のクライアント名は、クライアントトークンを偽装 (impersonate) し、NameFormat パラメーターに NameUniqueId を指定して GetUserNameEx 関数を呼び出すことで取得されます。

GUID 形式のクライアント名の例は "{4fa050f0-f561-11cf-bdd9-00aa003a77b6}Ben Smith" です。

vtbl 13 HRESULT get_UserCanonical(LPWSTR* pbstrProp)

現在のクライアントの名前を正規 (canonical) 形式で取得します。

pbstrPropLPWSTR*outクライアントの正規名(canonical name)を格納したBSTRを受け取るポインタである。

解説(Remarks)

正規形式のクライアント名は、クライアントトークンを偽装 (impersonate) し、NameFormat パラメーターに NameCanonical を指定して GetUserNameEx 関数を呼び出すことで取得されます。

正規形式のクライアント名の例は "example.fourthcoffee.com/software/Ben Smith" です。

vtbl 14 HRESULT get_UserUpn(LPWSTR* pbstrProp)

現在のクライアントの名前をユーザープリンシパル名 (UPN) 形式で取得します。

pbstrPropLPWSTR*outクライアントのユーザープリンシパル名(UPN)を格納したBSTRを受け取るポインタである。

解説(Remarks)

UPN 形式のクライアント名は、クライアントトークンを偽装 (impersonate) し、NameFormat パラメーターに NameUserPrincipal を指定して GetUserNameEx 関数を呼び出すことで取得されます。

UPN 形式のクライアント名の例は "someone@example.com" です。

vtbl 15 HRESULT get_UserDnsSamCompat(LPWSTR* pbstrProp)

現在のクライアントの名前を、Windows セキュリティアカウントマネージャー (SAM) 互換の DNS 形式で取得します。

pbstrPropLPWSTR*outクライアントのDNS形式のSAM互換アカウント名を格納したBSTRを受け取るポインタである。

解説(Remarks)

SAM 互換 DNS 形式のクライアント名は、クライアントトークンを偽装 (impersonate) し、NameFormat パラメーターに NameDnsDomain を指定して GetUserNameEx 関数を呼び出すことで取得されます。

SAM 互換 DNS 形式のクライアント名の例は "example.fourthcoffee.com\Username" です。

vtbl 16 HRESULT GetProperty(INT lPropId, VARIANT varReserved, VARIANT* pvarProp)

指定したプロパティ ID を持つ IAzClientContext オブジェクトのプロパティを返します。

lPropIdINTin

返す IAzClientContext オブジェクトのプロパティのプロパティ ID。指定できる値を次の表に示します。

意味
AZ_PROP_CHILD_CREATE
現在のユーザーが子オブジェクトを作成する権限を持っているかどうかを判定します。このオブジェクトは子オブジェクトを持つことができないため、この値は常に FALSE になります。
AZ_PROP_CLIENT_CONTEXT_ROLE_FOR_ACCESS_CHECK
RoleForAccessCheck プロパティ経由でもアクセスできます。
AZ_PROP_CLIENT_CONTEXT_USER_CANONICAL
UserCanonical プロパティ経由でもアクセスできます。
AZ_PROP_CLIENT_CONTEXT_USER_DISPLAY
UserDisplay プロパティ経由でもアクセスできます。
AZ_PROP_CLIENT_CONTEXT_USER_DN
UserDn プロパティ経由でもアクセスできます。
AZ_PROP_CLIENT_CONTEXT_USER_DNS_SAM_COMPAT
UserDnsSamCompat プロパティ経由でもアクセスできます。
AZ_PROP_CLIENT_CONTEXT_USER_GUID
UserGuid プロパティ経由でもアクセスできます。
AZ_PROP_CLIENT_CONTEXT_USER_SAM_COMPAT
UserSamCompat プロパティ経由でもアクセスできます。
AZ_PROP_CLIENT_CONTEXT_USER_UPN
UserUpn プロパティ経由でもアクセスできます。
varReservedVARIANTin将来の使用のために予約されています。
pvarPropVARIANT*out返される IAzClientContext オブジェクトのプロパティへのポインター。

戻り値

戻り値は HRESULT です。S_OK は成功を示します。それ以外の値は操作が失敗したことを示します。

vtbl 17 HRESULT GetRoles(LPWSTR bstrScopeName, VARIANT* pvarRoleNames)

クライアントコンテキストのロールを返します。

bstrScopeNameLPWSTRinpvarRoleNames パラメーターで返されるロールが適用される IAzScope オブジェクトの名前。このプロパティが NULL の場合はアプリケーションスコープのロールが返されます。それ以外の場合は、アプリケーションスコープのロールではなく、指定したスコープのロールが返されます。
pvarRoleNamesVARIANT*outSAFEARRAY を返すために使用される VARIANT へのポインター。SAFEARRAY の各要素は BSTR 型の VARIANT であり、bstrScopeName パラメーターで指定したスコープにおいてクライアントが所属するロールの名前を含みます。

戻り値

戻り値は HRESULT です。S_OK は成功を示します。それ以外の値は操作が失敗したことを示します。

解説(Remarks)

JScript では、返された SAFEARRAY を JScript の Array オブジェクトに変換する必要があります。

vtbl 18 HRESULT get_RoleForAccessCheck(LPWSTR* pbstrProp)

アクセスチェックの実行に使用するロールを設定または取得します。(Get)

pbstrPropLPWSTR*outアクセスチェックに使用するロール名を格納したBSTRを受け取るポインタである。

解説(Remarks)

このプロパティが設定されている場合、アクセスチェックではこのプロパティで指定されたロールのみが使用されます。設定されていない場合は、コンテキストに含まれるすべてのロールが使用されます。

vtbl 19 HRESULT put_RoleForAccessCheck(LPWSTR bstrProp)

アクセスチェックの実行に使用するロールを設定または取得します。(Put)

bstrPropLPWSTRinアクセスチェックに使用するロール名をBSTRで指定する。

解説(Remarks)

このプロパティが設定されている場合、アクセスチェックではこのプロパティで指定されたロールのみが使用されます。設定されていない場合は、コンテキストに含まれるすべてのロールが使用されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IAzClientContext "{EFF1F00B-488A-466D-AFD9-A401C5F9EEF5}"
#usecom global IAzClientContext IID_IAzClientContext "{}"
#comfunc global IAzClientContext_AccessCheck             7 wstr,int,int,int,int,int,int,int,var
#comfunc global IAzClientContext_GetBusinessRuleString   8 var
#comfunc global IAzClientContext_get_UserDn              9 var
#comfunc global IAzClientContext_get_UserSamCompat       10 var
#comfunc global IAzClientContext_get_UserDisplay         11 var
#comfunc global IAzClientContext_get_UserGuid            12 var
#comfunc global IAzClientContext_get_UserCanonical       13 var
#comfunc global IAzClientContext_get_UserUpn             14 var
#comfunc global IAzClientContext_get_UserDnsSamCompat    15 var
#comfunc global IAzClientContext_GetProperty             16 int,int,var
#comfunc global IAzClientContext_GetRoles                17 wstr,var
#comfunc global IAzClientContext_get_RoleForAccessCheck  18 var
#comfunc global IAzClientContext_put_RoleForAccessCheck  19 wstr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。