IAzApplication::InitializeClientContextFromStringSid メソッド (azroles.h)

InitializeClientContextFromStringSid メソッドは、指定されたセキュリティ識別子 (SID) からテキスト形式で IAzClientContext オブジェクト ポインターを取得します。

メモ 可能であれば、 InitializeClientContextFromStringSid の代わりに InitializeClientContextFromToken 関数を呼び出します。 詳細については、「解説」を参照してください。

 

構文

HRESULT InitializeClientContextFromStringSid(
  [in]           BSTR             SidString,
  [in]           LONG             lOptions,
  [in, optional] VARIANT          varReserved,
  [out]          IAzClientContext **ppClientContext
);

パラメーター

[in] SidString

セキュリティ プリンシパルの SID のテキスト形式を含む文字列。 これは、 ConvertStringSidToSid 関数によって変換できる有効な文字列 SID である必要があります。

[in] lOptions

コンテキスト作成のオプション。

AZ_CLIENT_CONTEXT_SKIP_GROUP指定した場合、 SidString パラメーターで指定された SID は、必ずしも有効なユーザー アカウントであるとは限りません。 SID は、検証なしでコンテキストを作成するために使用されます。 作成されたコンテキストは SID から作成されたとしてフラグが設定され、SID 文字列はクライアント名フィールドに格納され、ドメイン名フィールドは空になります。 トークン グループは、クライアント コンテキストの作成では使用されません。 ライトウェイト ディレクトリ アクセス プロトコル (LDAP) クエリ グループは、AZ_CLIENT_CONTEXT_SKIP_GROUPが指定されている場合はサポートされません。 アカウントは Active Directory で検証されないため、クライアント コンテキストのユーザー情報プロパティ ( UserSamCompat など) は無効になり、アクセスされるとERROR_INVALID_HANDLE返されます。 IAzClientContextRoleForAccessCheck プロパティと AccessCheck メソッドは、引き続きアクセス チェックのロールを指定するために使用できます。 IAzClientContextGetRoles メソッドは、特定のスコープ内でコンテキストに割り当てられたロールを列挙するために引き続き使用できます。

AZ_CLIENT_CONTEXT_SKIP_GROUPが指定されていない場合、SID は有効なユーザー アカウントを表す必要があります。

[in, optional] varReserved

将来利用するために予約されています。 このパラメーターには、次のいずれかの値を指定できます。

  • varReserved.vt == VT_ERROR と varReserved.scode == DISP_E_PARAMNOTFOUND
  • varReserved.vt == VT_EMPTY
  • varReserved.vt == VT_NULL
  • varReserved.vt == VT_I4 および varReserved.lVal == 0
  • varReserved.vt == VT_I2 および varReserved.iVal == 0

[out] ppClientContext

返された IAzClientContext オブジェクトへのポインターへのポインター。

戻り値

関数が成功した場合、関数はS_OKを返します。

関数が失敗した場合は、エラーを示す HRESULT 値を返します。 一般的なエラー コードの一覧については、「 共通 HRESULT 値」を参照してください。

解説

可能であれば、 InitializeClientContextFromStringSid の代わりに InitializeClientContextFromToken 関数を呼び出します。 InitializeClientContextFromStringSid は、クライアントが実際にログオンしていたログオン トークンで使用可能な情報を取得しようとします。 実際のログオン トークンは、ログオンの種類やログオンプロパティなどの詳細情報を提供し、ログオンに使用される認証パッケージの動作を反映します。 InitializeClientContextFromToken によって作成されたクライアント コンテキストはログオン トークンを使用し、結果のクライアント コンテキストは InitializeClientContextFromStringSid によって作成されたクライアント コンテキストよりも完全で正確です。

大事な アプリケーションでは、呼び出し元のコンテキストにこの関数を使用するアクセス許可があると想定しないでください。 AuthzInitializeContextFromSid 関数は、呼び出しで指定された SID の tokenGroupsGlobalAndUniversal 属性を読み取って、現在のユーザーのグループ メンバーシップを決定します。 ユーザーのオブジェクトが Active Directory にある場合、呼び出し元のコンテキストには、ユーザー オブジェクトの tokenGroupsGlobalAndUniversal 属性への読み取りアクセス権が必要です。 tokenGroupsGlobalAndUniversal 属性への読み取りアクセスは 、Windows 2000 互換アクセス 前グループに付与されますが、既定のセットアップの選択は Windows 2000および Windows Server 2003 と互換性があるため、新しいドメインには空の Pre-Windows 2000 互換アクセス グループが既定で含まれています。 したがって、アプリケーションは tokenGroupsGlobalAndUniversal 属性にアクセスできない可能性があります。この場合、 AuthzInitializeContextFromSid 関数は ACCESS_DENIED で失敗します。 この関数を使用するアプリケーションでは、このエラーを正しく処理し、サポート ドキュメントを提供する必要があります。 ユーザーのグループ情報に対してクエリを実行するアクセス許可をアカウントに付与することを簡単にするには、Windows 認証アクセス グループにグループ情報を検索する機能を必要とするアカウントを追加します。
 
この関数を呼び出すアプリケーションでは、完全修飾ドメイン名または ユーザー プリンシパル名 (UPN) を使用する必要があります。 それ以外の場合、NetBIOS ドメイン名が使用され、2 つのドメインに直接の信頼関係がない場合、このメソッドはフォレスト間で失敗する可能性があります。

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー azroles.h
Library Azroles.lib
[DLL] Azroles.dll
再頒布可能パッケージ Windows XP の Windows Server 2003 管理ツール パック

関連項目

匿名アクセスの許可

IAzApplication