AuthzInitializeContextFromSid 関数 (authz.h)

AuthzInitializeContextFromSid 関数は、ユーザー セキュリティ識別子 (SID) からユーザー モードのクライアント コンテキストを作成します。 ドメイン SID は、Active Directory からトークン グループ属性を取得します。

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

 

構文

AUTHZAPI BOOL AuthzInitializeContextFromSid(
  [in]           DWORD                         Flags,
  [in]           PSID                          UserSid,
  [in, optional] AUTHZ_RESOURCE_MANAGER_HANDLE hAuthzResourceManager,
  [in]           PLARGE_INTEGER                pExpirationTime,
  [in]           LUID                          Identifier,
  [in, optional] PVOID                         DynamicGroupArgs,
  [out]          PAUTHZ_CLIENT_CONTEXT_HANDLE  phAuthzClientContext
);

パラメーター

[in] Flags

次のフラグが定義されています。

Windows 8 および Windows Server 2012 以降では、リモート コンテキスト ハンドルでこの関数を呼び出すとき、上位 16 ビットはゼロである必要があります。

意味
0 (0x0)
既定値です。

AuthzInitializeContextFromSid は、 S4U ログオンを実行して、ユーザーのトークン グループ情報の取得を試みます。

ユーザーのドメインまたは呼び出し元のコンピューターで S4U ログオンがサポートされていない場合、 AuthzInitializeContextFromSid はユーザーのアカウント オブジェクトに対してグループ情報を照会します。 アカウントに直接クエリを実行すると、ログオン特性を表す一部のグループ (ネットワーク、対話型、匿名、ネットワーク サービス、ローカル サービスなど) は省略されます。 アプリケーションは、 AuthzComputeGroupsCallback 関数を実装するか、 AuthzAddSidsToContext 関数を呼び出すことによって、このようなグループ SID を明示的に追加できます。

AUTHZ_SKIP_TOKEN_GROUPS
2 (0x2)
AuthzInitializeContextFromSid によって、すべてのグループ評価がスキップされます。 このフラグを使用すると、返されるコンテキストには UserSid パラメーターで指定された SID のみが含まれます。 指定した SID には、任意またはアプリケーション固有の SID を指定できます。 このコンテキストに他の SID を追加するには、 AuthzComputeGroupsCallback 関数を実装するか、 AuthzAddSidsToContext 関数を呼び出します。
AUTHZ_REQUIRE_S4U_LOGON
4 (0x4)
Windows Services For User がトークン グループ情報を取得できない場合、 AuthzInitializeContextFromSid が失敗します。

Windows XP: このフラグはサポートされていません。

AUTHZ_COMPUTE_PRIVILEGES
8 (0x8)
AuthzInitializeContextFromSid に新しいコンテキストの特権を取得させます。 この関数が S4U ログオンを実行すると、トークンから特権が取得されます。 それ以外の場合、関数はコンテキスト内のすべての SID から特権を取得します。

[in] UserSid

クライアント コンテキストが作成されるユーザーの SID。 AUTHZ_SKIP_TOKEN_GROUPS フラグを使用しない限り、有効なユーザーまたはコンピューター アカウントである必要があります。

[in, optional] hAuthzResourceManager

このクライアント コンテキストを作成するリソース マネージャーへのハンドル。 このハンドルは、クライアント コンテキスト構造に格納されます。

Windows 8およびWindows Server 2012以降、リソース マネージャーはローカルまたはリモートにすることができ、AuthzInitializeRemoteResourceManager 関数を呼び出すことによって取得されます。

[in] pExpirationTime

トークンの有効期限の日付と時刻。 値が渡されない場合、トークンの有効期限は切れません。 有効期限は現在適用されていません。

[in] Identifier

リソース マネージャーの特定の識別子。 このパラメーターは現在使用されていません。

[in, optional] DynamicGroupArgs

動的グループを計算するコールバック関数に渡されるパラメーターへのポインター。 動的パラメーターがコールバック関数に渡されない場合、このパラメーターは NULL にすることができます。

Windows 8 および Windows Server 2012 以降では、リソース マネージャーがリモートの場合、このパラメーターは NULL である必要があります。 それ以外の場合は、ERROR_NOT_SUPPORTEDが設定されます。

[out] phAuthzClientContext

AuthzInitializeContextFromSid 関数が作成するクライアント コンテキストへのハンドルへのポインター。 ハンドルの使用が完了したら、 AuthzFreeContext 関数を呼び出して解放します。

戻り値

関数が成功した場合、関数は 0 以外の値を返します。

関数が失敗すると、0 が返されます。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

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

この関数は、有効なユーザー SID のみを解決します。

Windows XP: この関数は、有効なユーザー SID とグループ SID のグループ メンバーシップを解決します (AUTHZ_SKIP_TOKEN_GROUPS フラグを使用しない場合)。 グループ SID のメンバーシップの解決のサポートは、以降のバージョンで変更または使用できない場合があります。

この関数は 、AuthzComputeGroupsCallback コールバック関数を呼び出して、新しく作成されたコンテキストに SID を追加します。

大事な アプリケーションでは、呼び出し元のコンテキストにこの関数を使用するアクセス許可があると想定しないでください。 AuthzInitializeContextFromSid 関数は、呼び出しで指定された SID の tokenGroupsGlobalAndUniversal 属性を読み取り、現在のユーザーのグループ メンバーシップを決定します。 ユーザーのオブジェクトが Active Directory にある場合、呼び出し元のコンテキストには、ユーザー オブジェクトの tokenGroupsGlobalAndUniversal 属性への読み取りアクセス権が必要です。 新しいドメインが作成されると、既定のアクセス互換性の選択は Windows 2000 および Windows Server 2003 オペレーティング システムと互換性のあるアクセス許可です。 このオプションを設定すると、 Windows 2000 以前の互換性のあるアクセス グループには、 認証済みユーザー の組み込みセキュリティ識別子のみが含まれます。 そのため、アプリケーションは tokenGroupsGlobalAndUniversal 属性にアクセスできない場合があります。この場合、 AuthzInitializeContextFromSid 関数は ACCESS_DENIED で失敗します。 この関数を使用するアプリケーションでは、このエラーを正しく処理し、サポート ドキュメントを提供する必要があります。 ユーザーのグループ情報に対してクエリを実行するアクセス許可をアカウントに付与することを簡略化するには、Windows 承認アクセス グループにグループ情報を検索する機能を必要とするアカウントを追加します。
 

要件

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

こちらもご覧ください

匿名アクセスの許可

AuthzFreeContext

基本的なAccess Control関数